第4章:触摸屏驱动与校准
好,到了这一步,你的平板系统已经能点亮屏幕了。但光能看不行,得能摸。触摸屏驱动与校准,说白了就是让系统听懂你的手指在说什么。
我刚开始做这个项目时,以为接上触摸屏就能用。结果呢?点上去完全没反应。后来才发现,驱动没装对,校准也没做。嗯,这节课我们就来搞定它。
4.1 触摸屏的硬件连接
先说说硬件。市面上常见的触摸屏接口就那么几种:I2C、SPI、USB。我用的最多的是I2C接口的电容触摸屏,比如FT5x06系列。
连接时要注意几点:
- 电源:触摸屏一般需要3.3V供电,别接5V,会烧
- I2C地址:每个触摸芯片都有默认地址,比如FT5x06是0x38
- 中断引脚:触摸屏会通过中断通知CPU有触摸事件
我在项目中遇到过一个问题:触摸屏偶尔没反应。查了半天,发现是中断引脚没接上拉电阻。加上4.7kΩ上拉后,问题就解决了。你想想看,这种小细节最容易坑人。
4.2 安装触摸屏驱动
驱动这块,我推荐用evdev。它是Linux内核的标准输入子系统,支持绝大多数触摸屏。
具体步骤:
- 确认内核支持evdev:
CONFIG_INPUT_EVDEV=y - 加载触摸屏驱动模块:比如
modprobe ft5x06_ts - 检查设备节点:
ls /dev/input/,应该能看到event0或event1
如果你用的是fbtft(帧缓冲驱动),也可以。但说实话,evdev更通用,兼容性更好。我个人习惯用evdev,省心。
驱动加载示例:
# 加载触摸屏驱动
sudo modprobe ft5x06_ts
# 查看设备节点
ls /dev/input/
# 输出示例:event0 event1 mice mouse0
# 测试触摸事件
sudo evtest /dev/input/event0
运行evtest后,用手指触摸屏幕,终端会输出事件信息。如果没反应,说明驱动没加载成功。
4.3 触摸校准
驱动装好了,但触摸不准怎么办?比如你点左上角,光标却跑到中间去了。这就是校准问题。
校准的原理很简单:把触摸屏的物理坐标映射到屏幕的逻辑坐标。说白了,就是算一个转换矩阵。
我常用的校准工具是tslib。它提供了一套完整的校准流程。
安装tslib:
sudo apt-get install tslib libts-bin
校准步骤:
- 运行
ts_calibrate,屏幕上会出现5个校准点 - 依次点击每个点,系统会记录坐标
- 校准完成后,生成校准文件
/etc/pointercal
我曾经遇到过一个问题:校准后触摸还是不准。后来发现,是屏幕分辨率设置错了。触摸屏的坐标范围是0-4095,而屏幕分辨率是1024x600。如果映射关系不对,怎么校准都没用。
注意:校准文件/etc/pointercal是二进制文件,不要手动编辑。如果校准失败,删除它重新校准即可。
4.4 验证触控精准度
校准完成后,怎么知道准不准?我一般用ts_test来测试。
# 运行触摸测试
ts_test
这个工具会显示一个十字光标,你手指点到哪里,光标就跟到哪里。如果偏差在1-2像素以内,就算合格了。
如果发现某个区域不准,比如屏幕边缘有偏移,可以重新校准一次。我建议校准两次,取平均值,效果更好。
4.5 常见问题与避坑指南
做触摸屏驱动,有几个坑我踩过,分享给你:
- 触摸没反应:先检查硬件连接,再检查驱动是否加载。我曾经因为I2C地址写错,折腾了一下午。
- 触摸漂移:通常是电源干扰。触摸屏的电源要单独滤波,别和电机共用电源。
- 多点触摸失效:有些驱动默认只支持单点触摸。需要在内核配置中开启
CONFIG_TOUCHSCREEN_MULTITOUCH。
嗯,这里要注意:触摸屏的驱动和校准,看似简单,但细节很多。我建议你每做完一步,都验证一下。别等到最后才发现问题,那时候排查起来就麻烦了。
4.6 总结
这一章我们做了三件事:连接触摸屏、安装驱动、进行校准。说白了,就是让系统听懂你的手指。
我个人觉得,触摸屏驱动是平板系统里最需要耐心的部分。硬件连接、驱动加载、校准参数,任何一个环节出问题,触摸就不准。但只要你按步骤来,一步步验证,一定能搞定。
下一章,我们会把触摸和显示结合起来,做一个简单的交互界面。到时候,你就能用手指在屏幕上画画了。