IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> ESP32 LVGL_V8 最快移植攻略 -> 正文阅读

[嵌入式]ESP32 LVGL_V8 最快移植攻略

ESP32 LVGL_V8 最快移植攻略

系列文章地址:ESP32 LVGLV7最快移植攻略

此篇为发稿前最新的移植,如需要Lvgl V7 可参考上文。



软件环境

  • VSCODE-ESP32-IDF4.4 插件版 支持ESP32-S3
  • LVGL project for ESP32 master分支
  • LVGL V8master分支

硬件环境

  • 安信可 ESP32-S3-12k开发板
  • 1.3TFT,插接版 ST7789

ESP32-S3-12k开发板介绍

ESP-S3-12K-Kit 开发板是安信可针对 ESP-S3-12K 模组而设计的一款核心开发板, 该开发板延续了 NodeMCU 开发板的经典设计,引出全部 I/O 至两侧的排针,开发者可 以根据自己的需求连接外设。使用面包板进行开发和调试时,两侧的 2.54mm 间距排针 可以使操作更加简单方便。

开发板的参数

请添加图片描述

可以看到安信可ESP32-S3-12k开发板不仅板载了8M Byte的SPI Flash更搭配了8M Byte的Psram

ESP32S3的SPI

ESP32-S3 共有四个 SPI(SPI0,SPI1,SPI2 和 SPI3)。SPI0 和 SPI1 可以配置成 SPI 存储器模式,SPI2 和 SPI3 可以配置成通用 SPI 模式。

SPI 存储器 (SPI Memory) 模式 SPI

存储器模式(SPI0 和 SPI1)用于连接 SPI 接口的外部存储器。SPI 存储器模式下数据传输长度以字节 为单位,最高支持八线 SDR/DDR(单数据采样沿/双数据采样沿)读写操作。时钟频率可配置,最高支持 OPI 120 MHz SDR/DDR 模式。

SPI2 通用 SPI (GP-SPI) 模式

SPI2 既可以配置成主机模式,又可以配置成从机模式。主机模式支持双线全双工和单线、双线、四线或 八线半双工通信;从机模式支持双线全双工和单线、双线或四线半双工通信。通用 SPI 的主机时钟频率可 配置;数据传输长度以字节为单位;时钟极性 (CPOL) 和相位 (CPHA) 可配置;可连接 DMA 通道。

SPI3 通用 SPI (GP-SPI) 模式

SPI3 既可以配置成主机模式,又可以配置成从机模式,具有双线全双工和单线、双线或四线半双工通信 功能,仅支持 SDR 读写操作。通用 SPI 的主机时钟频率可配置;数据传输长度以字节为单位;时钟极性 (CPOL) 和相位 (CPHA) 可配置;可连接 DMA 通道。

通常情况下,ESP32-S3 和 flash 芯片的数据端口连接关系是:

请添加图片描述

在安信可的模块中使用的是四线SPI,具体占用的引脚是:

请添加图片描述

对应的是GPIO是:
请添加图片描述

使用的时候需要注意,不能使用这几个引脚。当然能开发板上并没有引出这几个引脚,在一定程度上也做到了规避。

LVGL_V8移植指北

首先是源代码的下载:

你可以通过下载我移植好的代码直接使用或者从github上下载最新的代码(当然截至文章发布我的也是最新的代码)。

直接使用我的代码:

gitee代码地址.

git的方式下载代码:

首先下载最新的LVGL V8,直接下载master分支即可:

git clone git@github.com:lvgl/lvgl.git

再下载最新的适用于ESP32的驱动:

git clone git@github.com:lvgl/lvgl_esp32_drivers.git

下载完成后可以看到文件夹下两个项目:

请添加图片描述

然后我们再来新建一个ESP32项目,这里为了简单,就新建一个blink项目:

请添加图片描述

选择blink项目,在合适的位置创建项目:

请添加图片描述

找到你创建的项目:

请添加图片描述

在项目目录下创建一个components文件夹:

请添加图片描述

将刚刚下载的代码放入项目文件夹:

请添加图片描述

再使用VSCODE打开项目文件夹:

你可以看到项目文件夹位置多出来的lvgl和驱动:

请添加图片描述

接下来我们来修改代码和配置项目:

首先是修改芯片型号:

点击下图位置

请添加图片描述

选择ESP32-S3:

请添加图片描述

再打开配置项目:

找到LVGL配置项目,如果你的配置项目没有LVGL请重新打开VSCode项目:

打开以后可以看见四个关键配置项目:

请添加图片描述

再点击对应驱动的配置项:

我这里使用的是ST7789V,所以我这里下边出现的是对应驱动的配置项目:

请添加图片描述

打开以后需要配置的脚如下:

请添加图片描述

注意这些是默认的脚,我们需要进行一些修改来适配S3:

请添加图片描述

因为ST7735S、ST7789在接收16位颜色值时是高位在前的16位短整型。而ESP32因为是小端模式,DMA在发送16位数据时,会先发低8位字节再发送高8位字节,这就造成了数据不一至!所以需要勾选一下,勾选后,就是调换了一下。如果你勾选了此选项造成颜色不对你可以不勾选。
请添加图片描述

如果你看到的不是白底黑字,而是颜色反过来的,你可以勾选这个选项来矫正颜色。

请添加图片描述

修改完成后配置项目基本就完成了。

接下来修改代码:

首先就是在 lvgl_helpers.h 的下面添加几个宏定义:
请添加图片描述

#define LV_HOR_RES_MAX 240
#define LV_VER_RES_MAX 240
#define SPI_HOST_MAX 3

再来修改一下lvgl_helpers.c的这个位置的代码:
请添加图片描述

将源代码修改成esp_err_t ret = spi_bus_initialize(host, &buscfg, (spi_dma_chan_t)SPI_DMA_CH_AUTO);

可以在这里先编一下,看一下会不会报错,如果没有报错就开始写lvgl的代码。

当然初始化LVGL的代码我已经写好了,就在项目里面,你可以直接Download下来使用:

下载后找到这两个文件放在main目录下:

他的路径就在:./main/…

请添加图片描述

单单添加文件并不能让他们参加编译我们还需要手动添加一下:

打开main目录下的CMAKELists,添加如下内容:

请添加图片描述

回到main.c:

添加头文件支持:

请添加图片描述

修改app_main函数,为其添加lvgl初始化线程:

void app_main(void)
{
    /* Configure the IOMUX register for pad BLINK_GPIO (some pads are
       muxed to GPIO on reset already, but some default to other
       functions and need to be switched to GPIO. Consult the
       Technical Reference for a list of pads and their default
       functions.)
    */
    xTaskCreatePinnedToCore(guiTask, "gui", 4096*2, NULL, 1, NULL, 1);
    gpio_reset_pin(BLINK_GPIO);
    /* Set the GPIO as a push/pull output */
    gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT);
    while(1) {
        /* Blink off (output low) */
        printf("Turning off the LED\n");
        gpio_set_level(BLINK_GPIO, 0);
        vTaskDelay(1000 / portTICK_PERIOD_MS);
        /* Blink on (output high) */
        printf("Turning on the LED\n");
        gpio_set_level(BLINK_GPIO, 1);
        vTaskDelay(1000 / portTICK_PERIOD_MS);
    }
}

再次编译,下载后就可以看到效果:请添加图片描述

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-03-21 21:07:25  更:2022-03-21 21:09:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:26:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码