主要参考资料:
B站【乐鑫全球开发者大会】DevCon23 #17 |HMI 智能屏解决方案
目录
1. 简介
MCU常用的驱动接口在下面,大致可以划分为串口屏和并口屏。
串口屏相较于并行屏优势是占用IO少,相应地数据传输带宽也低。
SPI有标准SPI和QSPI之分,具体可以看链接: https://blog.youkuaiyun.com/wangguchao/article/details/105593303
2. 硬件层
对于 SPI/I80接口,命令和颜色数据使用同一个接口。
可以看到屏幕有40线
3. 软件层
为了便于封装接口,习惯上会将屏幕代码分为三个层级:SDK层、驱动层和APP层。
3.1 SDK层component模块
在SDK层中封装了对 IO配置 和 总线配置的接口。已经作为components在ESP-IDF中
3.2 确认驱动兼容性
3.3 配置端口层(I80屏幕和触摸)
下面的代码是lv_port的一个示例,可以看到对 LCD的初始化、显示的初始化 和 输入设备的初始化。
esp_err_t lv_port_init(void)
{
/* Initialize LVGL library */
lv_init();
/* Register display for LVGL */
ESP_ERROR_CHECK(bsp_lcd_init());
lv_port_disp_init();
/* Register input device for LVGL*/
ESP_ERROR_CHECK(indev_init_default());
lv_port_indev_init();
/* Initialize LVGL's tick source */
lv_port_tick_init