安信可ESP32 LVGL_V8 最快移植攻略
安信可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 (GPSPI) 模式
SPI2 既可以配置成主机模式,又可以配置成从机模式。主机模式支持双线全双工和单线、双线、四线或 八线半双工通信;从机模式支持双线全双工和单线、双线或四线半双工通信。通用 SPI 的主机时钟频率可 配置;数据传输长度以字节为单位;时钟极性 (CPOL) 和相位 (CPHA) 可配置;可连接 DMA 通道。
SPI3 通用 SPI (GPSPI) 模式
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 最快移植攻略相关推荐
- 乐鑫Esp32学习之旅 23 安信可 esp32-a1s 音频开发板移植最新 esp-adf 音频框架,小试牛刀如何实现在线文字转语音播放。
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...
- 【微信小程序控制硬件16 】 安信可 ESP32-S 开发板实现移植腾讯物联开发平台蓝牙 llsync 协议,实现一键蓝牙快速配网+远程控制。(附带源码)
文章目录 一.前言 二.源码目录说明 三.编译指导 四.常见问题 五.开源微信物联网控制一览表 另外,不要把我的博客作为学习标准,我的只是笔记,难有疏忽之处,如果有,请指出来,也欢迎留言哈! 微信物联 ...
- NJUPT 《信安数基》第 11 章解题攻略
NJUPT <信安数基>多项式环和有限域解题攻略 注:本文章适合学习信息安全数学基础的同学们考前突击,不适用于数学系专业的同学.里面有些内容可能对于数学系来说是不严谨的,但对于信息安全专业 ...
- Python:更改默认启动的python程序及其对应的安装包路径(更改pip的默认安装包的路径)图文教程之详细攻略
Python:更改默认启动的python程序及其对应的安装包路径(更改pip的默认安装包的路径)图文教程之详细攻略 目录 更改默认启动的python程序及其对应的安装包路径 1.先找到默认安装包路径
- 【安信可ESP32语音开发板专题①】ESP32-A1S音频开发板之离线语音识别控制LED灯
---------- 本博客学习由 安信可开源团队 潜心编写,做ESP32-A1S离线语音初步入门技术交流分享.如有不完善之处,请留言,本团队及时更改. 文章目录 一.前言 二.离线语音框架 2.1 ...
- esp32录音功能开发_【安信可ESP32语音开发板专题①】ESP32-A1S音频开发板之离线语音识别控制LED灯...
本博客学习由 一.前言 离线语音,顾名思义:在不连网络的状态下,产品能识别语音指令并执行相应的控制输出. 安信可基于乐鑫ESP32芯片开发的ESP32-A1S开发板智能语音助手,可支持唤醒词引擎(Wa ...
- 【安信可ESP32语音开发板专题②】ESP32-Audio-Kit 开发板适配百度dueros例程实现在线语音功能,与开发板对话聊天。
文章目录 前言 一.准备工作 1.硬件准备 2.软件准备 二.验证ESP-ADF是否正常 1. 代码简单修改 2.播放MP3测试 三.dueros 例程适配 1.替换连接文件 2.内存卡准备 3. 代 ...
- TI Davinci DM6441嵌入式Linux移植攻略——UBL移植篇
目录(?)[+] 一DM6441的Boot过程简介 二DM6441的UBL移植 CCS文件夹 Common文件夹 GNU文件夹 移植DDR2 移植Nand Flash 其它 声明:本文参考网友zjb_ ...
- 【工程师有空了】安信可ESP32之TOUCH触摸传感器的花式应用--一个IO识别多个触摸按键
文章目录 前言 一.TOUCHU 触摸传感器工作原理及硬件设计 1.触摸传感器的原理 2.多个触摸按键的识别方案 3.硬件连接 二.程序设计 1.传感器IO选择 2.驱动库的使用 3. 关于按键枚举 ...
最新文章
- 翻译连载 | 第 9 章:递归(下)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...
- 你的数据也可以-两篇NAR的数据库
- Mybatis Plus——以XML方式使用 Wrapper 自定义SQL时IDEA错误[**expected, got ‘${‘]解决方案
- Ant在Java项目中的使用(一眼就看会)
- caffe源码阅读(1)_整体框架和简介(摘录)
- 论文征集 | 2019 Joint International Semantic Technology Conference
- c#ovalshape_How to: Draw Shapes with the OvalShape and RectangleShape Controls (Visual Studio)
- Android 系统(135)---Android anr 分析步骤总结
- ​四周第一次课(4月11日)lvm讲解
- 061 实例15-霍兰德人格分析雷达图
- 面试题java的权限_Java shiro面试题
- 2sum,3sum,4sum问题总结
- 叠积木(加权并查集)
- 高速PCB多层板叠层设计原则
- 热电偶的工作原理及结构 1
- UVA815 洪水! Flooded!
- CISP与CISSP证书的区别,那个能适合现在的市场环境
- Mosquitto 安装指南
- 个人住房抵押贷款流程让你的贷款更轻松
- LATTICE FPGA MICO32 uCOS开发流程
热门文章
- new mysqli($servername, $username, $password); 机动车信息查询系统
- 带你的团队玩“杀人游戏”
- 解读|爱奇艺互动剧创作技术实操攻略
- 八戒资本:XRP的下跌,今日已遇支撑,西方节假日迎来买入量。
- OpenCV—python 手写数字字体识别(使用HOG特征)
- 火影忍者手游决斗场服务器响应超时,火影忍者手游决斗场排行榜系统联系
- BBOS实现程序内购(in-app purchase)
- MacOS 卡在Finished,saving caches
- Nginx-部署2个vue项目(多个项目)-二级域名设置代理
- linux 操作系统下c语言编程入门