入门linux之全志H3 nanopi 点亮ST7789VW IPS屏

  • NanoPi-NEO-Air 入门
    • Nnaopi的IO
    • 设备树(sun8i-h3-nanopi-neo-air.dts)中禁用其他SPI节点和使能ST7789VW节点:
    • 修改初始化函数
    • 使用1.14(135*240)ips屏幕的注意修改函数set_addr_win
    • 把驱动编译进内核
    • 编译内核 设备树 下载重启看效果
    • 实际效果
    • 播放视频
    • 运行QT

NanoPi-NEO-Air 入门

记录一下第一次尝试用linux点亮spi屏幕的过程,一共尝试了0.96 ST7735S(80160) \1.8 st7735R(128160) \1.14 st7789v(135240) \1.3 st7789vw (240240)这几个屏幕,有个奇怪的现象就是必须要接SPI0的CS引脚到显示屏上才能正常显示。

Nnaopi的IO

设备树(sun8i-h3-nanopi-neo-air.dts)中禁用其他SPI节点和使能ST7789VW节点:

在最后加上以下代码,st7735r和st7735s也调试过可用,7735超过48M显示的颜色就不正常了,7789vw可以96M正常显示,原始的IO口是
DC PA1 RESET PG11 BL PA0
我改成了
DC PA1 RESET PA2 BL PA0
同时禁用hdmi,防止开机从hdmi显示

&spi0{spidev0:spi@0{status="disable";};st7789vw: st7789vw@0{compatible = "sitronix,st7789vw";reg = <0>;status = "okay";spi-max-frequency = <96000000>;buswidth = <8>;   rotate = <0>;fps = <60>;rgb;dc-gpios = <&pio 0 1 GPIO_ACTIVE_HIGH>;  /* PA1 */reset-gpios = <&pio 0 2 GPIO_ACTIVE_HIGH>; /* PA2*/led-gpios = <&pio 0 0 GPIO_ACTIVE_LOW>;  /* PA0 */debug = <0x00>;};// st7735r: st7735r@0{//  compatible = "sitronix,st7735r";//   reg = <0>;//     status = "okay";//   spi-max-frequency = <36000000>;//    spi-cpol;//     spi-cpha;//     rotate = <90>;//     fps = <60>;//    buswidth = <8>;//    dc-gpios = <&pio 0 1 GPIO_ACTIVE_HIGH>;  /* PA1 *///     reset-gpios = <&pio 0 2 GPIO_ACTIVE_HIGH>; /* PA2*///    led-gpios = <&pio 0 0 GPIO_ACTIVE_LOW>;  /* PA0 *///     debug = <0x0>;//     };// st7735s: st7735s@0{//         compatible = "sitronix,st7735s";//       reg = <0>;//         status = "okay";//       spi-max-frequency = <36000000>;//        spi-cpol;//         spi-cpha;//         rotate = <0>;//      fps = <60>;//        buswidth = <8>;//        dc-gpios = <&pio 0 1 GPIO_ACTIVE_HIGH>;  /* PA1 *///         reset-gpios = <&pio 0 2 GPIO_ACTIVE_HIGH>; /* PA2 *///       led-gpios = <&pio 0 0 GPIO_ACTIVE_LOW>;  /* PA0 *///         debug = <0x0>;//         };
};&hdmi {status = "disable";
};

修改初始化函数

原始的初始化没有复位显示屏,在初始化中添加

par->fbtftops.reset(par);
write_reg(par, PVGAMCTRL, 0xD0, 0x04, 0x0D, 0x11, 0x13, 0x2B, 0x3F, 0x54, 0x4C, 0x18, 0x0D, 0x0B, 0x1F, 0x23);
write_reg(par, NVGAMCTRL, 0xD0, 0x04, 0x0C, 0x11, 0x13, 0x2C, 0x3F, 0x44, 0x51, 0x2F, 0x1F, 0x1F, 0x20, 0x23);

static int init_display(struct fbtft_par *par)
{par->fbtftops.reset(par);// /* turn off sleep mode */write_reg(par, MIPI_DCS_EXIT_SLEEP_MODE);mdelay(120);write_reg(par, MIPI_DCS_SET_ADDRESS_MODE, 0x0);write_reg(par, MIPI_DCS_SET_PIXEL_FORMAT, MIPI_DCS_PIXEL_FMT_16BIT);write_reg(par, PORCTRL, 0x0C, 0x0C, 0x00, 0x33, 0x33);write_reg(par, GCTRL, 0x35);write_reg(par, VCOMS, 0x19);write_reg(par, LCMCTRL, 0x2C);write_reg(par, VDVVRHEN, 0x01);write_reg(par, VRHS, 0x12);write_reg(par, VDVS, 0x20);write_reg(par, FRCTRL2, 0x0F);write_reg(par, PWCTRL1, 0xA4, 0xA1);write_reg(par, PVGAMCTRL, 0xD0, 0x04, 0x0D, 0x11, 0x13, 0x2B, 0x3F, 0x54, 0x4C, 0x18, 0x0D, 0x0B, 0x1F, 0x23);write_reg(par, NVGAMCTRL, 0xD0, 0x04, 0x0C, 0x11, 0x13, 0x2C, 0x3F, 0x44, 0x51, 0x2F, 0x1F, 0x1F, 0x20, 0x23);write_reg(par, MIPI_DCS_ENTER_INVERT_MODE);write_reg(par, MIPI_DCS_SET_DISPLAY_ON);mdelay(120);return 0;}

使用1.14(135*240)ips屏幕的注意修改函数set_addr_win

原始的函数没有纠正偏移量,增加以下代码(只有135*240的需要增加,其他的屏不需要):

switch(par->info->var.rotate){case   0: xs+=53;xe+=53;ys+=40;ye+=40;break;case  90: xs+=40;xe+=40;ys+=53;ye+=53;break;case 180: xs+=53;xe+=53;ys+=40;ye+=40;break;case 270: xs+=40;xe+=40;ys+=53;ye+=53;break;default :break;}

把驱动编译进内核

最原始的内核没有ST7789VW,只有ST7789V,所以把st7789v.c复制粘贴改名为st7789vw.c,相应驱动做一下修改,并且修改fbtft目录下的Kconfig和Makefile,这里我增加了ST7789VW和ST7735S的驱动

config FB_TFT_ST7789VWtristate "FB driver for the ST7789VW LCD Controller"depends on FB_TFThelpThis enables generic framebuffer support for the Sitronix ST7789VWdisplay controller. The controller is intended for small colordisplays with a resolution of up to 240x240 pixels.Say Y if you have such a display that utilizes this controller.

Makefile:

Kconfig:

再到menuconfig使能此驱动,

make menuconfig ARCH=arm CROSS_COMPILE=arm-linux- -j80

Device Drivers  --->  [*] Staging drivers  --->  <*>   Support for small TFT LCD display modules  ---><*>   FB driver for the ST7789VW LCD Controller

编译内核 设备树 下载重启看效果

make zImage dtbs ARCH=arm CROSS_COMPILE=arm-linux- -j80
网络更新内核
scp arch/arm/boot/zImage root@192.168.137.83:/boot
网络更新设备树
scp arch/arm/boot/dts/sun8i-h3-nanopi-neo-air.dtb root@192.168.137.83:/boot

实际效果

1.3寸 240*240 IPS效果:

播放视频

mplayer badapple_320_240_15fps.avi -vo fbdev

运行QT

apt-get update && apt-get install git
git clone https://github.com/friendlyarm/matrix.git
cd matrix/demo/nanopi-status
./build.sh
./run.sh /dev/fb_st7789vw

[linux]全志H3 nanopi 点亮ST7789VW IPS屏相关推荐

  1. linux st7735源码,[linux]全志H3 nanopi 点亮ST7789VW IPS屏

    NanoPi-NEO-Air 入门 记录一下第一次尝试用linux点亮spi屏幕的过程,一共尝试了0.96 ST7735S(80160) \1.8 st7735R(128160) \1.14 st77 ...

  2. 香橙派全志H3烧入U-boot和Linux内核以及配置

    全志H3烧入U-boot和Linux内核以及配置 1.U-boot的烧入和U-boot环境配置 1.1U-boot烧入和启动测试 2.编译完的内核处理和烧入 2.1处理内核 2.2烧入内核 U-boo ...

  3. 全志H3 linux系统recovery制作过程

    本文介绍全志H3 recovery制作过程,代码基于friendly arm的Nano pi M1开发代码. 一,编译打包 运行配置脚本: . ./buildroot/script/mksetup.s ...

  4. 全志h3linux移植教程,全志H3启动分析,移植主线UBOOT

    全志H3启动分析,移植主线UBOOT 参考资源 启动流程 因为使用的是外扩SD卡,因此主要参考了这部分内容:Bootable SD card SD卡Layout如下: start sector siz ...

  5. 全志H3编译Linux-4.14 BSP

    学习笔记-全志H3编译Linux-4.14 BSP 1 安装交叉编译器 访问此处下载地址的toolchain目录,下载交叉编译器arm-cortexa9-linux-gnueabihf-4.9.3.t ...

  6. 全志H3停产,A40I/T3更胜一筹--CoM-X40I核心模块来了

      全志H3是全志科技旗下的完整4K智能电视机顶盒解决方案,基于四核Cortex-A7CPU架构,支持H.265/HEVC4K@30fps视频硬解,采用ARMMali系列的图形处理架构,工作频率超过6 ...

  7. 正点原子Linux开发板 spi内核驱动 0.96寸ips屏教程

    正点原子Linux开发板 spi内核驱动 0.96寸ips屏教程 首先选择模块 设备树配置 spi驱动程序(用的spi_driver) app 最近做下底层SPI驱动来驱动IPS屏,本来想实现这种效果 ...

  8. 香蕉派 android开发板,香蕉派 Banana Pi BPI-M2+四核开源开发板 全志H3芯片方案

    香蕉派 Banana Pi BPI-M2+四核开源开发板 全志H3芯片方案,也可以支持Allwinner H2+ ,H3,H5芯片. Banana Pi BPI-M2+ Banana PI BPI-M ...

  9. 香蕉派 Banana PI BPI-M2+ ,全志 H3 四核开源硬件开发板

    Banana PI BPI-M2+ 是一款四核高性能单板计算机,采用全志H8处理器. Banana PI BPI-M2+ 兼容性强大,可以跑android系统,Debian linux,Ubuntu ...

最新文章

  1. 大型数据库设计原则与技巧
  2. 自定义控件的子控件支持设计模式
  3. TMS320 C6000系列 DSP之 CCS5.5 仿真调试
  4. docker ip地址_理解 Docker 网络(番外) -- 《Docker 源码分析》勘误
  5. 数据结构+算法面试100题~~~摘自CSDN,作者July
  6. 聊聊统一身份认证服务
  7. REVERSE-PRACTICE-CthulhuOJ
  8. android p正式版,国内首家!一加正式推送Android P正式版
  9. 在ubuntu系统下cocos2dx移植到android平台
  10. UWB定位系统在工厂中的重要作用
  11. 5款创业在线学习的工具
  12. 《战狼Ⅱ》豆瓣十二万影评浅析
  13. JAVA解析Excel工具EasyExcel(alibaba)
  14. java 常用四舍五入保留小数点后两位方法
  15. cf 1677 B. Tokitsukaze and Meeting
  16. LT8618SX 是龙迅的低功耗版本 HDMI 发射器,其基于 ClearEdgeTM 技术
  17. 数学基础知识:数据统计
  18. android友盟埋点,友盟数据埋点前,你要知道这些
  19. 婚姻出现危机最终做出妥协的多是女人
  20. 关键字排名工具|如何看关键字在搜索引擎的排名

热门文章

  1. Improved Techniques for Grid Mapping With Rao-Blackwellized Particle Filters全文翻译Gmapping
  2. 《探错笔记》之Linux的FTP服务
  3. 微普公司JAVA课程体系图
  4. 【Android Studio】初级控件之动态设置
  5. 大专计算机专业怎么写,大专计算机专业的自我鉴定怎么写,〔急〕给个范文
  6. android minikin的功能,Android procmem 分析进程内存
  7. telnet 测试 ip 和端口号能否连通
  8. 利用session完成用户登录
  9. 电力网络计算机监控系统,电力高清网络视频监控系统解决方案
  10. 晶振在汽车系统中的重要作用