安信可ESP32 LVGL_V8 最快移植攻略

文章目录:

  • 安信可ESP32 LVGL_V8 最快移植攻略
    • 软件环境
    • 硬件环境
    • ESP-S3-12K开发板介绍
        • 开发板的参数
        • ESP32S3的SPI
      • LVGL_V8移植指北

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

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

本文来自于安信可科技开发者据说这是zzy的分享~

软件环境

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

硬件环境

  • 安信可 ESP-S3-12K开发板
    -已上架淘宝,→戳这里购买←

  • 1.3TFT,插接版 ST7789

ESP-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 aremuxed to GPIO on reset already, but some default to otherfunctions and need to be switched to GPIO. Consult theTechnical Reference for a list of pads and their defaultfunctions.)*/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);}
}

再次编译,下载后就可以看到效果:

感谢本文作者据说这是zzy的分享~
阅读原文:https://blog.csdn.net/qq_20540901/article/details/123608655?spm=1001.2014.3001.5501

安信可ESP32 LVGL_V8 最快移植攻略相关推荐

  1. 乐鑫Esp32学习之旅 23 安信可 esp32-a1s 音频开发板移植最新 esp-adf 音频框架,小试牛刀如何实现在线文字转语音播放。

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...

  2. 【微信小程序控制硬件16 】 安信可 ESP32-S 开发板实现移植腾讯物联开发平台蓝牙 llsync 协议,实现一键蓝牙快速配网+远程控制。(附带源码)

    文章目录 一.前言 二.源码目录说明 三.编译指导 四.常见问题 五.开源微信物联网控制一览表 另外,不要把我的博客作为学习标准,我的只是笔记,难有疏忽之处,如果有,请指出来,也欢迎留言哈! 微信物联 ...

  3. NJUPT 《信安数基》第 11 章解题攻略

    NJUPT <信安数基>多项式环和有限域解题攻略 注:本文章适合学习信息安全数学基础的同学们考前突击,不适用于数学系专业的同学.里面有些内容可能对于数学系来说是不严谨的,但对于信息安全专业 ...

  4. Python:更改默认启动的python程序及其对应的安装包路径(更改pip的默认安装包的路径)图文教程之详细攻略

    Python:更改默认启动的python程序及其对应的安装包路径(更改pip的默认安装包的路径)图文教程之详细攻略 目录 更改默认启动的python程序及其对应的安装包路径 1.先找到默认安装包路径

  5. 【安信可ESP32语音开发板专题①】ESP32-A1S音频开发板之离线语音识别控制LED灯

    ---------- 本博客学习由 安信可开源团队 潜心编写,做ESP32-A1S离线语音初步入门技术交流分享.如有不完善之处,请留言,本团队及时更改. 文章目录 一.前言 二.离线语音框架 2.1 ...

  6. esp32录音功能开发_【安信可ESP32语音开发板专题①】ESP32-A1S音频开发板之离线语音识别控制LED灯...

    本博客学习由 一.前言 离线语音,顾名思义:在不连网络的状态下,产品能识别语音指令并执行相应的控制输出. 安信可基于乐鑫ESP32芯片开发的ESP32-A1S开发板智能语音助手,可支持唤醒词引擎(Wa ...

  7. 【安信可ESP32语音开发板专题②】ESP32-Audio-Kit 开发板适配百度dueros例程实现在线语音功能,与开发板对话聊天。

    文章目录 前言 一.准备工作 1.硬件准备 2.软件准备 二.验证ESP-ADF是否正常 1. 代码简单修改 2.播放MP3测试 三.dueros 例程适配 1.替换连接文件 2.内存卡准备 3. 代 ...

  8. TI Davinci DM6441嵌入式Linux移植攻略——UBL移植篇

    目录(?)[+] 一DM6441的Boot过程简介 二DM6441的UBL移植 CCS文件夹 Common文件夹 GNU文件夹 移植DDR2 移植Nand Flash 其它 声明:本文参考网友zjb_ ...

  9. 【工程师有空了】安信可ESP32之TOUCH触摸传感器的花式应用--一个IO识别多个触摸按键

    文章目录 前言 一.TOUCHU 触摸传感器工作原理及硬件设计 1.触摸传感器的原理 2.多个触摸按键的识别方案 3.硬件连接 二.程序设计 1.传感器IO选择 2.驱动库的使用 3. 关于按键枚举 ...

最新文章

  1. 翻译连载 | 第 9 章:递归(下)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...
  2. 你的数据也可以-两篇NAR的数据库
  3. Mybatis Plus——以XML方式使用 Wrapper 自定义SQL时IDEA错误[**expected, got ‘${‘]解决方案
  4. Ant在Java项目中的使用(一眼就看会)
  5. caffe源码阅读(1)_整体框架和简介(摘录)
  6. 论文征集 | 2019 Joint International Semantic Technology Conference
  7. c#ovalshape_How to: Draw Shapes with the OvalShape and RectangleShape Controls (Visual Studio)
  8. Android 系统(135)---Android anr 分析步骤总结
  9. ​四周第一次课(4月11日)lvm讲解
  10. 061 实例15-霍兰德人格分析雷达图
  11. 面试题java的权限_Java shiro面试题
  12. 2sum,3sum,4sum问题总结
  13. 叠积木(加权并查集)
  14. 高速PCB多层板叠层设计原则
  15. 热电偶的工作原理及结构 1
  16. UVA815 洪水! Flooded!
  17. CISP与CISSP证书的区别,那个能适合现在的市场环境
  18. Mosquitto 安装指南
  19. 个人住房抵押贷款流程让你的贷款更轻松
  20. LATTICE FPGA MICO32 uCOS开发流程

热门文章

  1. new mysqli($servername, $username, $password); 机动车信息查询系统
  2. 带你的团队玩“杀人游戏”
  3. 解读|爱奇艺互动剧创作技术实操攻略
  4. 八戒资本:XRP的下跌,今日已遇支撑,西方节假日迎来买入量。
  5. OpenCV—python 手写数字字体识别(使用HOG特征)
  6. 火影忍者手游决斗场服务器响应超时,火影忍者手游决斗场排行榜系统联系
  7. BBOS实现程序内购(in-app purchase)
  8. MacOS 卡在Finished,saving caches
  9. Nginx-部署2个vue项目(多个项目)-二级域名设置代理
  10. linux 操作系统下c语言编程入门