[linux]全志H3 nanopi 点亮ST7789VW IPS屏
入门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屏相关推荐
- linux st7735源码,[linux]全志H3 nanopi 点亮ST7789VW IPS屏
NanoPi-NEO-Air 入门 记录一下第一次尝试用linux点亮spi屏幕的过程,一共尝试了0.96 ST7735S(80160) \1.8 st7735R(128160) \1.14 st77 ...
- 香橙派全志H3烧入U-boot和Linux内核以及配置
全志H3烧入U-boot和Linux内核以及配置 1.U-boot的烧入和U-boot环境配置 1.1U-boot烧入和启动测试 2.编译完的内核处理和烧入 2.1处理内核 2.2烧入内核 U-boo ...
- 全志H3 linux系统recovery制作过程
本文介绍全志H3 recovery制作过程,代码基于friendly arm的Nano pi M1开发代码. 一,编译打包 运行配置脚本: . ./buildroot/script/mksetup.s ...
- 全志h3linux移植教程,全志H3启动分析,移植主线UBOOT
全志H3启动分析,移植主线UBOOT 参考资源 启动流程 因为使用的是外扩SD卡,因此主要参考了这部分内容:Bootable SD card SD卡Layout如下: start sector siz ...
- 全志H3编译Linux-4.14 BSP
学习笔记-全志H3编译Linux-4.14 BSP 1 安装交叉编译器 访问此处下载地址的toolchain目录,下载交叉编译器arm-cortexa9-linux-gnueabihf-4.9.3.t ...
- 全志H3停产,A40I/T3更胜一筹--CoM-X40I核心模块来了
全志H3是全志科技旗下的完整4K智能电视机顶盒解决方案,基于四核Cortex-A7CPU架构,支持H.265/HEVC4K@30fps视频硬解,采用ARMMali系列的图形处理架构,工作频率超过6 ...
- 正点原子Linux开发板 spi内核驱动 0.96寸ips屏教程
正点原子Linux开发板 spi内核驱动 0.96寸ips屏教程 首先选择模块 设备树配置 spi驱动程序(用的spi_driver) app 最近做下底层SPI驱动来驱动IPS屏,本来想实现这种效果 ...
- 香蕉派 android开发板,香蕉派 Banana Pi BPI-M2+四核开源开发板 全志H3芯片方案
香蕉派 Banana Pi BPI-M2+四核开源开发板 全志H3芯片方案,也可以支持Allwinner H2+ ,H3,H5芯片. Banana Pi BPI-M2+ Banana PI BPI-M ...
- 香蕉派 Banana PI BPI-M2+ ,全志 H3 四核开源硬件开发板
Banana PI BPI-M2+ 是一款四核高性能单板计算机,采用全志H8处理器. Banana PI BPI-M2+ 兼容性强大,可以跑android系统,Debian linux,Ubuntu ...
最新文章
- 大型数据库设计原则与技巧
- 自定义控件的子控件支持设计模式
- TMS320 C6000系列 DSP之 CCS5.5 仿真调试
- docker ip地址_理解 Docker 网络(番外) -- 《Docker 源码分析》勘误
- 数据结构+算法面试100题~~~摘自CSDN,作者July
- 聊聊统一身份认证服务
- REVERSE-PRACTICE-CthulhuOJ
- android p正式版,国内首家!一加正式推送Android P正式版
- 在ubuntu系统下cocos2dx移植到android平台
- UWB定位系统在工厂中的重要作用
- 5款创业在线学习的工具
- 《战狼Ⅱ》豆瓣十二万影评浅析
- JAVA解析Excel工具EasyExcel(alibaba)
- java 常用四舍五入保留小数点后两位方法
- cf 1677 B. Tokitsukaze and Meeting
- LT8618SX 是龙迅的低功耗版本 HDMI 发射器,其基于 ClearEdgeTM 技术
- 数学基础知识:数据统计
- android友盟埋点,友盟数据埋点前,你要知道这些
- 婚姻出现危机最终做出妥协的多是女人
- 关键字排名工具|如何看关键字在搜索引擎的排名
热门文章
- Improved Techniques for Grid Mapping With Rao-Blackwellized Particle Filters全文翻译Gmapping
- 《探错笔记》之Linux的FTP服务
- 微普公司JAVA课程体系图
- 【Android Studio】初级控件之动态设置
- 大专计算机专业怎么写,大专计算机专业的自我鉴定怎么写,〔急〕给个范文
- android minikin的功能,Android procmem 分析进程内存
- telnet 测试 ip 和端口号能否连通
- 利用session完成用户登录
- 电力网络计算机监控系统,电力高清网络视频监控系统解决方案
- 晶振在汽车系统中的重要作用