杰理707 LVGL双屏异触DemoV1.0技术文档
📎 原始文档:https://www.kdocs.cn/l/cv5n4aOXSLlu 杰理707 LVGL双屏异触DemoV1.0技术文档
杰理707 LVGL双屏异触Demo V1.0技术文档
Demo下载:杰理707 LVGL双屏异触Demo V1.0
第一章 Demo内容与移植步骤
1.1 Demo内容
.c文件:
新增:ui_double_eye.c
以及images文件夹下四个文件夹内的图片资源(已转为C数组格式)
改动:main.c ui.c ft3x68.c(触摸驱动) board_ac707n_demo.c lcd_drive.c
.h文件:
改动:ui.h lv_conf.h board_ac707n_demo_cfg.h sdk_config.h

1.2 移植步骤
第一步:修改sdk_config.h
修改两屏幕iic引脚,使用软件iic。
修改LCD引脚配置。
第二步:修改board_ac707n_demo_cfg.h
添加双屏Demo使能宏。
修改tp驱动以及屏驱配置,若使用的触摸以及屏幕的驱动不一致,需要自行移植适配。
此处搜索相关的宏即可找到对应的触摸和屏幕驱动并进行修改移植。

关闭自动熄屏。
第三步:修改board_ac707n_demo.c
修改软件iic配置。
第四步:修改lcd_drive.c
添加屏幕的spi引脚强驱,增加引脚驱动强度。
第五步:修改lv_conf.h
关闭镜像、fps以及cpu使用率显示。
第六步:修改触摸驱动,本demo使用的是ft3x68.c,考虑到使用的触摸驱动可能不一致,因此此处主要以触摸驱动的流程逻辑展开叙述。
上层调用fts_ts_init();创建触摸任务。
两个屏幕使用两个触摸的te中断引脚,利用中断判断当前触摸的是哪个屏幕。

使用软件iic。
第七步:加入ui_double_eye.c
将ui_double_eye.c添加到该目录下:
第八步:添加图片资源
包括左右眼,两种样式,共四个文件夹。
第九步:修改main.c



第十步:修改ui.c
添加全局指针。
第十一步:修改ui.h
添加全局指针。

第二章 双屏异触技术原理
2.1 Demo描述
本双屏Demo基于707n_LVGL SDK开发,支持双屏双眼动画播放并实时切换眼睛样式(眼睛样式数量上限取决于资源空间大小),支持双屏异触。
2.2 硬件架构
双屏采用两块sh8601进行开发。分辨率为466*466,两个LCD共用QSPI时钟数据线,CS脚分离,两CS引脚是控制双屏显示的核心,本Demo不考虑TE的帧同步,两屏背光引脚连接IOVDD即可。
在硬件接线上,由于共用时钟以及数据线,需增强对应的时钟以及数据IO口的输出强度,并确保两个屏幕与主控之间的连接足够稳定,能够尽可能减少硬件线路的损耗及干扰,否则很容易会出现信号质量下降导致的花屏、画面撕裂等情况,以及两个屏幕都无需接TE引脚,如果两个屏幕共用TE脚会因为两个TE信号影响屏幕的数据时序从而导致显示不正常。
屏1 与屏2分离的引脚字体已加粗。
屏1 lcd接线:LCD_BAT-PAVDD,LCD_3V3-IOVDD,BL_PWM-IOVDD,LCD_RST-PC3,LCD_CS-PA7,LCD_CLK-PA12,SpiD0-PA8,SpiD1-PA9,SpiD2-PA10,SpiD3-PA11。
屏1触摸接线:TPVDD-PC1,TP_RST-PA2,TP_INT-PB7,TP_SCL-PA6,TP_SDA-PA5。
屏2 lcd接线:LCD_BAT-PAVDD,LCD_3V3-IOVDD,BL_PWM-IOVDD,LCD_RST-PC3,LCD_CS-PA13,LCD_CLK-PA12,SpiD0-PA8,SpiD1-PA9,SpiD2-PA10,SpiD3-PA11。
屏2触摸接线:TPVDD-PC1,TP_RST-PA2,TP_INT-PB8,TP_SCL-PB2,TP_SDA-PB1。
2.3 软件架构
2.3.1 异触逻辑流程
使用软件iic。
fts_ts_init();创建触摸任务。
初始化两个屏幕使用的两个触摸中断,核心是利用中断判断当前触摸的是哪个屏幕。并使用一个全局flag记录。
此处为触摸驱动层流程的核心。
应用层绑定并轮询触摸数据获取传递函数。
应用层触摸流程核心。
2.3.2 双屏切屏、推屏逻辑流程
主要实现原理是依赖于3个信号量,信号量A在gpu任务渲染完一帧后发送,信号量B等待到信号量A到达后进行切屏以及推屏完成这一帧的显示,两个屏的切屏推屏流程走完后会发送信号量C,信号量B和信号量C通过任务组合控制实现对推屏次数的控制从而实现对帧率的控制。
下图为初始化双屏ui。
创建两核心任务。

屏幕cs片选线控制函数。
第三章 Demo使用指南
3.1 添加动画组
3.1.1 将需要添加的图片进行C数组格式转换
可参考使用网址:点击打开图片格式转换网址
3.1.2 参考Demo中已配置好的.c格式的图片资源文件去配置新增的图片
需要修改的地方:
第一步:将转换的得到的.c文件放入Demo的images路径下
第二步:修改资源配置:
第三步:修改ui_double_eye.c中的图片资源数组
此处4个数组包含左右眼、两种样式共4组图片。数组中每一个元素都是一张/一帧图片,按新增的图片资源.c文件末尾的结构体名称修改即可。
第四章 注意事项
4.1 资源空间
707相较于701内存空间较少,Demo的两个样式的眼睛图片资源均已经过裁剪才可放入,如要新增动画则需要先删除一部分Demo中原有的眼睛图片资源。本Demo的图片资源尺寸为240*240,若需要增大图片尺寸需注意内存空间是否充足。
4.2 推屏切屏时cs片选线的注意事项
需要先取消另外一个屏幕的片选并等待cs线稳定。
若在上电后的短时间内出现左右屏的图片帧有某一帧推反了,如:右屏的图片推到了左屏上,可尝试稍微增加udelay的时间确保cs片选线稳定(与硬件线路的损耗以及干扰有关),或尝试对cs线进行强驱处理。注意,在本Demo的硬件环境下经验证cs片选线的强驱在选择PORT_DRIVE_STRENGT_2p4mA以上的最大驱动电流后会黑屏。


其他
V1.0版本Demo 效果展示
点击按钮即可在两种眼睛样式之间切换。
