ESP32-idf学习(四)esp32C3驱动lcd

article/2025/6/16 6:31:40

一、前言

屏幕是人机交互的重要媒介,而且现在我们产品升级的趋势越来越高大尚,不少产品都会用lcd来做界面,而esp32c3在一些项目上是可以替代主mcu,所以驱动lcd也是必须学会的啦

我新买的这块st7789,突然发现是带触摸功能的,刚好现在学习esp82驱动屏幕的时候,把触摸的功能也试一下。

二、开发准备

1、硬件分析

①、屏幕接口

我是买的带转接板的,直接看转接板的引脚定义吧

我这款是电容屏

②、开发板接口

用到SPI和IIC

外挂的flash,有可能会用到,先贴出来:

③、接线汇总:

因为esp32除了特定引脚,其他都是可以随意配置的,大多我都按合宙给的图来

开发板--------------------------------------------屏幕转接板

GPIO2------------------------------------------SCK

GPIO3------------------------------------------SDI

GPIO19----------------------------------------SDO

GPIO6------------------------------------------LED

GPIO7------------------------------------------CS

GPIO12-----------------------------------------DC

GPIO10------------------------------------------RESET(引脚有点紧张,这里电容屏用的是iic返回信息,MISO可以不接,我用作复位脚了)

GPIO5---------------------------------------------T_CLK

GPIO4---------------------------------------------T_SDI

GPIO18-------------------------------------------T_CS

GPIO19-------------------------------------------T_IRQ

先这样试着吧

2、例程选择

其实因为这款芯片非常火,GitHub、立创上等等很多平台都有开源的驱动屏幕的项目,做得很牛逼,很多都是移植了lvgl的。我就先简单驱动一下,后边看是自己封装显示部分,还是移植u8g2或lvgl,这些都是看需求。

可以看到例程其实已经也比较完整的了,但我还是会修改的比较多

三、初步修改例程

1、宏定义

将例程原本的宏定义修改一下,然后加上IIC的

因为把原先宏定义的名称也改了,所以把报错的地方先改一下:

这里修改完,其实显示部分就没什么问题的了。这例程是自动识别ST7789V或者ILI9341的

我是2.4寸的屏幕 320*240

背光我们这里要改成1,上边截的表有说明

到这里烧录程序,已经可以显示了:

四、触摸部分及显示增加修改例程

1、宏定义

include也列在这吧

尺寸

spi和iic的一些地址

2、变量

跟之前的差不多,一些句柄

touch_event是我用来确保处理之后信号量再次通知,后边会有说到

3、新增加的函数

①、触摸芯片初始化

首先触摸芯片的初始化,跟其他iic没什么区别,就是通过下降沿触发的时候,去读取坐标:

②读取触摸的坐标函数:

③中断处理:

这里我做了确保是低电平和touch_event,其实还应该加一个消抖好点,例如在这里加一个静态变量cnt,cnt累加到一定次数再去xTaskNotifyFromISR

④、清屏和像素点位显示

然后因为例程没有给清屏和显示点像素的函数,自己做了:

⑤主任务

触摸的点位,我会显示白色,超时5s这个注释错了,尴尬,复制上一个工程的,截图的时候没看

我把原先例程显示的图片注释了,变成黑色背景,这样触摸显示点位清晰一点。

⑥原初始化微调

最最后,就是这个屏幕的方向,试了好几次,对比厂家给我的例程才发现写00就好:

五、烧录验证

这些白点就是我触摸的时候显示的。

这是打印出来的坐标信息,可以看到点一下还是会触发很多次,做下消抖或者10ms后再去读触摸芯片的数据会比较好

六、总结

总体来说,就是对着例程和厂家给的屏幕程序来,不会有什么问题。我调的时候有一个地方卡得比较久,就是做填充屏幕函数和点位像素函数的时候,总是会报spi_master: polling can't get buslock,这个应该是多个任务同时尝试访问同一SPI总线会报,但我一开始跑的时候,只执行一句,按理来说不会有多个任务去占用这个spi总线,这个应该是我知识面不足了,后来是看例程的lcd_get_id函数里,有加spi_device_acquire_bus(spi, portMAX_DELAY);spi_device_release_bus(spi);这个总线锁和释放,才解决的。


http://www.hkcw.cn/article/eNAwbVNbUU.shtml

相关文章

Remote Sensing投稿记录(投稿邮箱写错、申请大修延期...)风雨波折投稿路

历时近一个半月,我中啦! RS是中科院二区,2023-2024影响因子4.2,五年影响因子4.9。 投稿前特意查了下预警,发现近五年都不在预警名单中,甚至最新中科院SCI分区(2025年3月)在各小类上…

ZC-OFDM雷达通信一体化减小PAPR——部分传输序列法(PTS)

文章目录 前言一、PTS 技术1、简介2、原理 二、MATLAB 仿真1、核心代码2、仿真结果 三、资源自取 前言 在 OFDM 雷达通信一体化系统中,信号的传输由多个子载波协同完成,多个载波信号相互叠加形成最终的发射信号。此叠加过程可能导致信号峰值显著高于其均…

第6章 放大电路的反馈

本章基本要求 会判:判断电路中有无反馈及反馈的性质 会算:估算深度负反馈条件下的放大倍数 会引:根据需求引入合适的反馈 会判振消振:判断电路是否能稳定工作,会消除自激振荡。 6.1 反馈的概念及判断 一、反馈的…

知识管理五强对比:Baklib高效突围

Baklib核心技术优势 Baklib的底层技术架构以知识中台为核心,深度融合自然语言处理(NLP)与分布式存储技术,实现多源异构数据的统一纳管。其智能分类引擎通过语义理解自动关联碎片化文档,结合动态标签体系与多维度权限控…

电机驱动器辐射骚扰整改

定位低压DC部分的骚扰源(排除法): 为确定是电源哪部分出现问题,可以采取如下步骤进行验证: a.将12V转5V的芯片去掉,仅剩12V器件工作,然后测试; b.将5V转3.3V和隔离5V的芯片去掉&am…

CTFHub-RCE 命令注入-过滤空格

观察源代码 代码里面可以发现过滤了空格 判断是Windows还是Linux 源代码中有 ping -c 4 说明是Linux 查看有哪些文件 127.0.0.1|ls 打开flag文件 我们尝试将空格转义打开这个文件 利用 ${IFS} 127.0.0.1|cat${IFS}flag_195671031713417.php 可是发现 文本内容显示不出来&…

2022年 中国商务年鉴(excel电子表格版)

2022年 中国商务年鉴(excel电子表格版).ziphttps://download.csdn.net/download/2401_84585615/89772883 https://download.csdn.net/download/2401_84585615/89772883 《中国商务年鉴2022》是由商务部国际贸易经济合作研究院主办的年度统计资料&#xf…

家长速查!3岁男童误吞“水精灵”危及生命

给孩子挑选放心的玩具是不少家长群讨论的热点。“小玩具”关乎“大安全”,如何帮助孩子远离“毒”“危”玩具?怎样合理选购、安全使用,让玩具成为孩子的益友?“六一”国际儿童节前夕,记者就此进行了走访。“毒”“危”玩具有何隐患?“本月我们又接诊了一名3岁男童误吞‘水…

划龙舟有多拼 鼓点一响全员开挂 岭南文化盛宴

广东龙舟不仅是一种仪式,更是一种文化符号。每一声鼓点都充满了热血与奋进,每一次冲刺都体现了拼搏与荣光。“下水!起桨!”有着20多年“龙舟龄”的东莞万江街道龙舟划手黄柱良,为了近日在东江江面举行的龙舟趁景活动,和伙伴们准备了1个多星期。活动当天上午,黄柱良和其他…

大巴黎如何拿到2025年欧冠的 战术转型与团队足球

2025年6月1日凌晨,2024-2025赛季欧冠决赛在慕尼黑安联球场举行,巴黎圣日耳曼以5-0大胜国际米兰,队史首次夺得欧冠奖杯。这场胜利不仅终结了巴黎多年来的“欧冠魔咒”,也标志着球队在姆巴佩离队后的战术转型取得巨大成功。比赛期间,大巴黎主帅恩里克延续了本赛季后半段的43…

thinkpad T-440p 2025.05.31

thinkpad T-440p 2025.05.31 老了退休了,说起来真的可恶现在笔记本的设计师,只有固态硬盘了

堆与堆排序及 Top-K 问题解析:从原理到实践

一、堆的本质与核心特性 堆是一种基于完全二叉树的数据结构,其核心特性为父节点与子节点的数值关系,分为大堆和小堆两类: 大堆:每个父节点的值均大于或等于其子节点的值,堆顶元素为最大值。如: 小堆:每个…

【题解-洛谷】P8094 [USACO22JAN] Cow Frisbee S

题目:P8094 [USACO22JAN] Cow Frisbee S 题目描述 Farmer John 的 N ( N ≤ 3 10 5 ) N\ (N\le 3\times 10^5) N (N≤3105) 头奶牛的高度为 1 , 2 , … , N 1, 2, \ldots, N 1,2,…,N。一天,奶牛以某个顺序排成一行玩飞盘;令 h 1 … h …

如何利用差分隐私技术在医疗领域守护患者隐私

在数字化医疗快速发展的当下,医疗数据已然成为一座蕴藏无限价值的宝库。一份完整的电子病历,不仅记录着患者的疾病诊断、治疗记录,还可能包含基因数据、生活习惯等敏感信息;而基因检测报告中携带的遗传密码,更是与个人…

Kanass入门教程- 事项管理

kanass是一款国产开源免费、简洁易用的项目管理工具,包含项目管理、项目集管理、事项管理、版本管理、迭代管理、计划管理等相关模块。工具功能完善,用户界面友好,操作流畅。本文主要介绍事项管理使用指南。 1、添加事项 事项有多种类型 分…

主人回应狗王“长毛”爆火 小狗成网红引来百万关注

近日,河北承德一只下司犬“长毛”的视频在外网爆火。视频中,“长毛”凭借威严的姿态让闹事的狗狗臣服。因此小狗被外国网友取名“查理国王”“狗王”等称号,连小狗的肖像都被印在T恤上作为周边售卖。火爆全网的狗王“长毛”。网络截图网友们纷纷表达了自己的惊叹与崇拜:“阿…

描述性统计的可视化分析

初步研究数据的分布时,最直观的方法就是可视化分析了。 1. 直方图 直方图(histogram)出现得很早,而且应用广泛。 直方图是以一种图形方法来概括给定数值X的分布情况的图示。 如果X是离散的变量,比如股票类型&#xf…

梅花鹿横穿马路被车撞倒后跑进丛林 后视镜遭殃引发热议

5月31日清晨,大连市民在滨海路晨跑时目睹了一起意外。一只梅花鹿试图穿过马路时被一辆小车撞翻在地,但随后它站起身来,迅速跑进了路边的树林。这辆小车的左侧后视镜被撞断。网友拍摄的视频显示,这只梅花鹿从绿化带突然跑向机动车道,一辆白色汽车避让不及撞了上去。此事引起…

福建8岁男童失踪近一个月 搜寻仍在继续

8岁男童邹某樽在福建仙游县石谷解登山时与家人失联,至今已失踪近一个月。网友们纷纷呼唤他快回家过“六一”儿童节。5月4日,邹某樽随父母到石谷解登山,在下山过程中与父母失去联系。当天16时左右,孩子母亲报警后,仙游县立即启动应急响应机制,组织公安、森林消防、救援队、…

论文笔记: Urban Region Embedding via Multi-View Contrastive Prediction

AAAI 2024 1 INTRO 之前基于多视图的region embedding工作大多遵循相同的模式 单独的单视图表示多视图融合 但这种方法存在明显的局限性:忽略了不同视图之间的信息一致性 一个区域的多个视图所携带的信息是高度相关的,因此它们的表示应该是一致的如果能…