[STM32U5]

【NUCLEO-U5A5ZJ-Q测评】6.XPT2046电阻触摸驱动

[复制链接]
738|5
手机看帖
扫描二维码
随时随地手机跟帖
Tristan_C|  楼主 | 2023-11-29 23:18 | 显示全部楼层 |阅读模式
本帖最后由 Tristan_C 于 2023-11-29 23:20 编辑

#申请原创#
XPT2046电阻触摸驱动
前面调试好了ILI液晶的驱动这回来尝试一下触摸芯片的。XPT2046 是一款 4 线制电阻式触摸屏控制器,内含 12 位分辨率 125KHz 转换速率逐步逼近型 A/D 转换器。XPT2046 支持从 1.5V 到 5.25V 的低电压 I/O 接口。XPT2046 能通过执行两次 A/D 转换查出被按的屏幕位置, 除此之外,还可以测量加在触摸屏上的压力。内部自带 2.5V 参考电压,可以作为辅助输入、温度测量和电池监测之用,电池监测的电压范围可以从 0V 到 6V。XPT2046 片内集成有一个温度传感器。 在 2.7V 的典型工作状态下,关闭参考电压,功耗可小于 0.75mW。XPT2046 采用微小的封装形式:TSSOP-16,QFN-16 和 VFBGA-48。工作温度范围为-40℃~+85℃。与 ADS7846、TSC2046、AK4182A 完全兼容,其典型应用电路如下
6cd5b9b26d9040eea9c2d4fc4030415d
引脚定义为:
836ff37c4ec93fedda935b4fa923915e
可见我们需要一路SPI以及一路中断来驱动它,在选择上,就用开发板上的SPI_B,其实也就是SI3.
0caf157ea7884e6290fffb1b0d832bb6
打开之前的ILI9341工程的cubemx工程,增加该SPI配置
7f38f220d979abea4c0199335b2b0ca5
80c9c096f6d44f3444f2ed1bdd5e8dcd
0eea72f8d25d61f0502dce0ce2a15f15
并注意时钟的选择
857ad1f1f96f6822f46e02e0f4e0e3e3
这里要注意一下systick的中断与外部中断之间优先级的配置,以避免后面有延时的地方。
2782bbdd3ba173ff4213245b8c5adce0
如下为触摸按下检测的中断引脚
87ec876dcbd0737dd0df3387686710cd
生成工程,并在工程中添加XPT2046的驱动代码文件
0b5eb5b7a4b1ba0262762a348c3cf9d1
中断处理函数如下,主要是置位标志位,即触摸按下标志,即可进行触摸坐标计算或者校准动作了。
1ec1792083483786f733aacee4dd8dd9
在主函数中,进行初始化,并进行校准(因为没做校准值存储,所以每次上电都做了一次校准了),并在主循环中,检测按下之后在屏幕的左上角显示按下的坐标位置。
d00451e3ef92e070605249d7d7f8321b
编译下载运行
b0d933dd41476acf0c316ee4c0da3fbd
因为条线比较多,需要一只手把住液晶板子,所以没法拍视频,只能拍些照片展示一下了
如下为校准过程
482b54d4fbedd0691bd1ddeaed38d2af
b02747440d618d71e69af59152a6ad74
4b3729927ba247862160e6ceafee4796
d975eedfe7ddd6433504eb58ab2eebed
校准成功
5e4b1d5f4121bf4becc47b84b41f8b54
之后就可以把按下的坐标显示在左上角了。
307204eebbe339552cfb083802ee50cf
3e23bac79b071d4ad7f4e15876a05cef
3875fba7a0f4c3dcb7d03c1e48e29a2d

参考附件代码

stm32_ili9341_xpt2046.rar

8.01 MB

stm32_ili9341_xpt2046

使用特权

评论回复
jf101| | 2023-11-30 09:28 | 显示全部楼层
一般屏幕上都有相关的触摸IC,确实很方便开发

使用特权

评论回复
Tristan_C|  楼主 | 2023-11-30 10:20 | 显示全部楼层
jf101 发表于 2023-11-30 09:28
一般屏幕上都有相关的触摸IC,确实很方便开发

献丑了,因为第一次调试触摸这部分,感觉校准效果做得不是很好,代码写得也不够好,见笑了

使用特权

评论回复
yangjiaxu| | 2023-11-30 11:42 | 显示全部楼层
XPT2046电阻触摸是不是就用的I2C啊?这个好像还比较简单,但就是个电阻屏比较难弄

使用特权

评论回复
Tristan_C|  楼主 | 2023-11-30 12:24 | 显示全部楼层
yangjiaxu 发表于 2023-11-30 11:42
XPT2046电阻触摸是不是就用的I2C啊?这个好像还比较简单,但就是个电阻屏比较难弄 ...

很多用IO模拟的SPI,一些时序上可能更灵活点,我用了硬件的。这个屏比较老了,确实没有现在那些新方案的屏丝滑,电阻式还得做些校准才好用

使用特权

评论回复
Undshing| | 2023-11-30 16:30 | 显示全部楼层
硬件实现不应该速度更快嘛

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

113

帖子

0

粉丝