ESP32环境搭建和LGVL驱动
ESP-IDF 环境搭建
目前提供的是两个IDF环境,也都能实现编译,这次主要是想重新弄TLT液晶屏下的LVGL,所以从头再弄一次!期间也有挺多问题需要解决,不过Ubuntu环境做的次数相对多一些,所以弄起来顺手点,不过最后发现VSCODE环境更加无脑安装更加方便,就是编译的速度慢了好多,最终还是选择使用Ubuntu
Ubuntu环境搭建
这个参考 ESP32开发SDK-IDF环境搭建(Ubuntu) 即可
基本上能安装并运行demo
Windows 环境下通过 VSCODE 搭建
之前没有尝试过,这次感觉使用Ubuntu麻烦,就想着直接使用一个Windows环境看看,这样查代码什么的也方便!
使用SPI总线驱动LCD(st7789驱动)
参考文章 ESP32使用SPI总线驱动LCD
移植LVGL
手上的TFT液晶屏是 ST7789 的屏幕,但是默认demo是 ILI9341 这款,虽然跑的时钟 demo 没问题,但是使用 GUI-Guider 生成的UI导入后颜色不对,仔细看才发现使用颜色深度不同,demo驱动使用的8bit,而GUI-Guider只有16或者32,所以就不合适,最后找到了lvgl_esp32_drivers 组件并且修改后才能适配使用,很多地方报错,就拿文件中找不到 drive 目录下gpio.h报错问题来说,其实就是因为 ESP-IDF 从4升级到5后需要在cmake中声明才能使用,不能隐式使用,也算是一种改变,所以还是需要多看官方文档才行!迁移构建系统至 ESP-IDF v5.0
ESP32S3移植GUI-Guider下的LVGL(v8.3)
GUI-Guider安装网上很多,之前自己也记录过文章 LVGL模拟器NXP GUI Guider使用
一、新建工程
复制 ESP-IDF 下example/get-started/sample_project 示例作为基础工程模板,将其拷贝到work目录下并改名为lvgl_base
二、移植LVGL
- 引入LVGL库
1.1 创建组件文件夹
1 | mkdir components |
1.2. 引入LVGL相关库
1 | //这里引入的是release/v8.3版本的库,也可以选择其它版本 |
如果在引入库时报下面的问题,则只需要在工程中初始化git 仓库即可
1 | cd lvgl_base |
1.3. 查看工程结构
- 编译工程
2.1 配置LCD
1 | idf.py set-target esp32s3 |
1)设置控制器类型为ST7789
2)根据屏幕特性选择反色(一些屏幕不需要)
2)配置LCD引脚
3)配置背光引脚及电平
2.2 配置LVGL
1)根据屏幕特性选择交换颜色字节(一些屏幕不需要)
2)使能一些demo用到的字体
3)使能music demo
- 主函数代码
1 |
|
三、报错修改
1.error: ‘LV_HOR_RES_MAX’ undeclared
解决方式:在lvgl_helpers.h 中增加如下代码
1 |
|
2.E (384) spi: spi_bus_initialize(762): invalid dma channel, chip only support spi dma channel auto-alloc
解决方式:在lvgl_helpers.c 中增加如下代码
在这次实验中并没有报这个错误,所以不需要改 IDF-5.2
3. 找不到 driver 文件下的 gpio.h 和 ledc.h
解决办法:修改使用cmake文件,让组件能找到位置
根据 迁移构建系统至 ESP-IDF v5.0 说明迁移后需要在cmake明确指定组件依赖
idf_component_register 新增加 REQUIRES driver 即可
2_light_drivers esp-idf5.x报错 Failed to resolve component ‘esp_adc_cal‘
4. 报了 gpio等其他
本次就直接把错误的部分代码屏蔽掉即可
例如 st7789.c 文件中的 gpio_pad_select_gpio(ST7789_DC); 就报错了,直接屏蔽后使用也正常
总结
在驱动LCD屏幕方面,lvgl_esp32_drivers 库目前只支持了spi以及I2C的方式,对于8080接口是没有支持的,这时候可以使用esp-who 的screen 组件来实现驱屏。
相关链接(侵删)
欢迎到公众号来唠嗑: