ESP32C3 移植ST7735 LVGL

这篇具有很好参考价值的文章主要介绍了ESP32C3 移植ST7735 LVGL。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

关于lvgl
LVGL是一个C语言编写的免费的开源图形库,其提供了用于嵌入式GUI的各种元素。用户可以利用丰富的图形库资源,在消耗极低内存的情况下构建视觉效果丰富多彩的GUI 。只需 64kB 闪存和 8kB RAM 就足以满足简单的用户界面。LVGL 可以驱动单色OLED、TFT 显示器、监视器或任何其他显示器。c 代码使其可在任何平台上使用,例如 NXP LPC 或 iMX、STM32、PIC、Arduino、ESP32、Raspberry 等。LVGL 的源码托管在 GitHub 上,拥有 MIT许可。 真正的完全免费。

关于ESP32
ESP32 系列模组具备卓越的性能和丰富的外设,集Wi-Fi、传统蓝牙、低功耗蓝牙为一体,提供高度集成的解决方案,广泛适用于各类物联网应用。

正是因为esp32的豪华配置,可以配合其esp-idf框架在其平台上轻松运行lvgl,个人做了一个例程cpu占用只有10%左右。

关于移植
由于官方的例程现在还没有适配lvgl8,所以博主尝试了一下移植,但是不能运行,所以说还是先拿lvgl7用着。

获取lvgl官方的lvgl例程
下载地址:https://github.com/lvgl/lv_port_esp32

要注意的是,这个是一个项目,我们自己使用的时候可以直接从lvgl官方库克隆代码,同时克隆esp32下的驱动,不必用这个项目。

打开项目的components文件夹,我们发现相关的库已经导入好了。

ESP32C3 移植ST7735 LVGL


我们可以先从这个项目入手,先移植跑通后继续开发。

关于lvgl_esp32_drivers
这个是lvgl官方账号下的一个项目,主要用于在esp32下适配lvgl,包括屏幕,触摸等驱动

以下是支持的屏幕和触摸芯片:

屏幕
Display ControllerTypeInterfaceColor depth (LV_COLOR_DEPTH)Swap RGB565 color (LV_COLOR_16_SWAP)

ILI9341TFTSPI16: RGB565Yes

ILI9163CTFTSPI16: RGB565Yes

ILI9486TFTSPI16: RGB565Yes

ILI9488TFTSPI16: RGB565No

HX8357B/HX8357DTFTSPI16: RGB565Yes

ST7789TFTSPI16: RGB565Yes

ST7735STFTSPI16: RGB565Yes

FT81xTFTSingle, Dual, Quad SPI16: RGB565No

GC9A01TFTSPI16: RGB565Yes

RA8875TFTSPI16: RGB565Yes

SH1107MonochromeSPI1: 1byte per pixelNo

SSD1306MonochromeI2C1: 1byte per pixelNo

PCD8544MonochromeSPI1: 1byte per pixelNo

IL3820e-PaperSPI1: 1byte per pixelNo

UC8151D/ GoodDisplay GDEW0154M10 DESe-PaperSPI1: 1byte per pixelNo

FitiPower JD79653A/ GoodDisplay GDEW0154M09e-PaperSPI1: 1byte per pixelNo

Supported indev controllers
XPT2046

FT3236, FT6X36

FT6206 controllers should work as well (not tested)

STMPE610

FT81x (Single, Dual, and Quad SPI)

我购买的屏幕使用的是st7735s的芯片,测试可以完美驱动

配置项目
将项目克隆下来

git clone --recurse-submodules https://github.com/lvgl/lv_port_esp32.git

--recurse-submodules 同时克隆子模块


打开vscode按下ctrl+shift+p,按照图片添加vscode配置文件夹

ESP32C3 移植ST7735 LVGL


然后点击下方设置,进入配置,记得点击esp32c3那里切换下芯片,变成esp32:

修改项目配置
修改编译优化级别,缩小编译文件大小

ESP32C3 移植ST7735 LVGL


修改屏幕大小,开启交换RGB565颜色

ESP32C3 移植ST7735 LVGL横屏

 文章来源地址https://www.toymoban.com/news/detail-423917.html

ESP32C3 移植ST7735 LVGL
修改驱动

 

ESP32C3 移植ST7735 LVGL
降低spi频率,要不然画面会撕裂

 

ESP32C3 移植ST7735 LVGL
修改引脚为自己连接的IO口

 

ESP32C3 移植ST7735 LVGL
(可选)开启帧率显示

 

ESP32C3 移植ST7735 LVGL
修改完后点击上方保存。

 

修改驱动代码
需要调整一部分代码,不然有一部分会花屏。

原理:ST7735s是为128*160屏幕设计的,我们是128*128的屏幕,需要跳过一部分像素。

ESP32C3 移植ST7735 LVGL

 

 在components\lvgl_esp32_drivers\lvgl_spi_conf.h 修改

  1. 修改HSPI_HOST,在lvgl_spi_config.h大约67行上下:
#if defined (CONFIG_LV_TFT_DISPLAY_SPI_HSPI)
    #if CONFIG_IDF_TARGET_ESP32C3
        #define TFT_SPI_HOST SPI2_HOST
    #else
        #define TFT_SPI_HOST HSPI_HOST
    #endif
#elif defined (CONFIG_LV_TFT_DISPLAY_SPI_VSPI)
#define TFT_SPI_HOST VSPI_HOST
#elif defined (CONFIG_LV_TFT_DISPLAY_SPI_FSPI)
#define TFT_SPI_HOST FSPI_HOST
#endif

        2.在lvgl_helpers.c中207行左右

#if defined (CONFIG_IDF_TARGET_ESP32)
    assert((SPI_HOST <= host) && (VSPI_HOST >= host));
    const char *spi_names[] = {
        "SPI_HOST", "HSPI_HOST", "VSPI_HOST"
    };
#elif defined (CONFIG_IDF_TARGET_ESP32S2)
    assert((SPI_HOST <= host) && (HSPI_HOST >= host));
    const char *spi_names[] = {
        "SPI_HOST", "", ""
    };
#elif defined (CONFIG_IDF_TARGET_ESP32C3)
    // assert((SPI_HOST <= host) && (HSPI_HOST >= host));
    const char *spi_names[] = {
        "SPI2_HOST", "", ""
    };
#endif

 3.components\lvgl_esp32_drivers\lvgl_helpers.c  111行左右修改

//改为2 SPI_DMA_CH_AUTO
lvgl_spi_driver_init(TFT_SPI_HOST,
        DISP_SPI_MISO, DISP_SPI_MOSI, DISP_SPI_CLK,
        SPI_BUS_MAX_TRANSFER_SZ, SPI_DMA_CH_AUTO,
        DISP_SPI_IO2, DISP_SPI_IO3);

在 components\lvgl_esp32_drivers\lvgl_tft\st7735s.c 屏蔽 I2C 和AXP192 的相关代码


编译,上传项目测试
如果没有做自动下载电路,需要自己进入下载模式

如果没有问题应该是上图所示。

开启lvgl例程测试
需要改动一下,下载的这个程序如果是st7735只会显示hello world

ESP32C3 移植ST7735 LVGL
编译,重新烧写,如果正常就会自动运行lvgl的demo

 

 

到了这里,关于ESP32C3 移植ST7735 LVGL的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ESP32C3学习&开发之路——VScode开发环境搭建

    上次搭建好了ESP IDF离线版的开发环境,但是我不想每次开发的时候都要打开“PowerShell”终端,也不想要输入指令进行编译和下载的操作,所以再搭建在VScode的软件上开发ESP32系列WiFi模组的开发环境。 VScode全称Visual Studio Code,免费而强大,可在Windows、Linux和Mac OS上运行。所以

    2024年02月10日
    浏览(39)
  • ESP32C3 LuatOS TM1650①驱动测试

    合宙TM1650驱动资料 TM1650.lua源码 TM1650 ESP32C3 SCL GPIO5 SDA GPIO4

    2024年02月07日
    浏览(42)
  • ESP32C3 BLE5.0 吞吐速率的分析与测试

    前言: 本篇文章主要探讨下影响 BLE 传输速率的因素,分析和计算 BLE 1M PHY、BLE 2M PHY 的最大传输速率以及使用 ESP32-C3 验证两种 PHY 的传输速率 当前蓝牙核心规范的版本是v5.3, 从 BLE5.0 版本时, BLE已经可以支持多种物理层:LE 1M UNCODED PHY、LE 2M UNCODED PHY 以及 LE CODED PHY, 其中

    2024年02月12日
    浏览(81)
  • arduino Xiao ESP32C3 oled0.96 下雪花

    雪花下落的时候, 随机生成半径和位置 sandR和sandX,sandY 保存雪花下落位置的时候, 将其周边一圈设置为-1, 标记为有雪花 其他雪花下落的时候, 其他雪花的一圈如果遇到-1, 则停止下落, 并重复2

    2024年02月12日
    浏览(29)
  • Conmi的正确答案——使用eclipse进行ESP32C3的debug

    eclipse IDE 版本:2023-12 参考大神的教程:【图文】手把手教你使用 Eclipse IDE 开发 ESP32 (这里是为了我下次回来速通才写的部分) 相关软件参数: 汉化(安装完成会提示重启应用): Name: Chinese Location: https://mirrors.nju.edu.cn/eclipse/technology/babel/update-site/latest/ 乐鑫(选中两个

    2024年01月19日
    浏览(32)
  • 【Arduino环境下驱动合宙esp32c3单片机基本外设】

    本教程是参加FastBond2活动主题4 - 测量仪器中的【Arduino环境下驱动合宙esp32c3单片机基本外设】。 围绕FastBond2阶段1——基于ESP32C3开发的简易IO调试设备项目需求开发。 设计目标: 多种数字和模拟信号的输入输出:用户可以选择不同的输入输出模式,并通过设备的操作界面进行

    2024年02月04日
    浏览(38)
  • 新上架的简约版合宙ESP32C3使用arduino开发的教程

    经过两个月的缺货下架后,9块9包邮的合宙ESP32C3又重新上架了,真香。这一批都是没有带串口芯片的简约版(9块9要啥自行车)。在下架前,简约版要使用2.0.0版本的ESP32开发板库才能下载,而2.0.0版本有一些丢失arduino自带库的诡异BUG,所以一直没法用于下载。现在由于发布了2

    2024年02月05日
    浏览(63)
  • ESP32C3 LuatOS RC522①写入数据并读取M1卡

    LuatOS RC522官方示例  ESP32C3-CORE开发板    程序在数据块8中写入数据{0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}

    2024年02月10日
    浏览(34)
  • 物联网开发笔记(87)- 使用Micropython开发ESP32开发板之烧录合宙ESP32C3开发板

    一、目的         这一节我们学习如何使用我们的ESP32开发板来学习合宙ESP32C3开发板,该开发板有两种:一种是带串口通讯的,一种是通过使用USB通讯接口的。  二、环境         ESP32 + 合宙ESP32C3开发板 + USB转type-C线  + Win10 接线方法:         开发板通过USB线插到

    2024年02月14日
    浏览(26)
  • 【FastBond2阶段1——基于ESP32C3开发的简易IO调试设备】

    基于ESP32C3开发的简易IO调试设备 设计用户操作界面,该设备具备简单易用的操作界面,外加显示屏SSD1306和旋转编码器进行显示和控制,用户后期可进行二次开发WiFi或蓝牙连接电脑或手机监控。 多种数字和模拟信号的输入输出:用户可以选择不同的输入输出模式,并通过设备

    2024年02月06日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包