获取esp32的 lvgl工程:https://docs.lvgl.io/latest/en/html/get-started/espressif.html
或:https://github.com/lvgl/lv_port_esp32(我是在这里下载的)
lv_port_esp32下载下来后,会发现里面的components里面的内容是空的
分别将在jgit里面的lv_demos下的内容复制进入lv_example钟,lvgl的内容复制到lvgl文件下,lvgl_esp32_drivers复制到lvgl_esp32_drivers。
这样,lvgl的工程就创建好了,接着就是在esp-idf下编译。
1.修改变量,在命令行输入sudo vim /etc/profile,修改成如下
2.切到esp32-lvgl目录下,make menuconfig配置成自己要用的触摸和现实屏。
3.make,出现如下界面编译成功。
编译成功之后,替换驱动
根据自己的现实屏选择驱动芯片,我这边是st7789s,首先在命令行输入make menuconfig
1.
2.我的屏幕大小是240*240,其他默认
3.
4.
5.
6.(重)
以上,配置完成,修改程序。
工程是直接编译\esp32\lv_port_esp32-master\lv_port_esp32-master\main目录下的mian,例子打开lv_demo_widgets();可直接修改F:\esp32\lv_port_esp32-master\lv_port_esp32-master\components\lv_examples\lv_ex_conf.h下的
由于在配置中配置了st7789s,所以程序回直接调用st7789驱动程序,打开st7789,根据芯片的实际驱动程序进行修改。
1.替换驱动
将这些驱动换成自己的
替换刷图程序
其中offsetx1、offsetx2、offsety1、offsety2分别是x、y的起始坐标终止坐标一般是刷一块。
Write(offsetx1,offsetx2,offsety1,offsety2);//这个是要将x、y要写的区域传给屏幕
st7789_send_data((void*)color_map, size *2);//color_map需要写入屏幕的数据,size *2一次写入的个数。
修改之后,下载发现显示不对,采集波形
数了下clk,发现高电平只有7个,而我的芯片是要在高电平的时候读取数据的,再采集了一个波形后发现(修改了发送数据后采集,图片忘保存了),目前是低电平读取。所以判断是极性问题,修改spi的极性。
打开\esp32\lv_port_esp32-master\lv_port_esp32-master\components\lvgl_esp32_drivers\lvgl_tft\Disp_spi.c
根据实际修改SPI_TFT_SPI_MODE
结束!