1. 项目背景与核心挑战
ST7123是Sitronix推出的一款TDDI(Touch and Display Driver Integration)芯片,在智能家居控制面板、工业HMI等嵌入式场景中应用广泛。最近在Tina Linux平台上移植这款芯片的触摸功能时,遇到了几个典型问题:I2C通信不稳定、中断响应延迟、坐标上报抖动。这个记录主要分享从零开始移植ST7123驱动的完整过程,包括硬件接口调试、内核驱动适配、以及最终的性能优化方案。
2. 硬件环境准备
2.1 最小系统搭建
ST7123典型应用电路需要以下关键配置:
- 供电:VDDIO(1.8V/3.3V)、VDD(2.8V)
- 接口:I2C(400kHz标准模式)
- 中断:GPIO下降沿触发
- 复位:低电平有效(至少10μs脉冲)
实际调试中发现,电源稳定性直接影响触摸报点准确率。建议在VDD引脚并联10μF+0.1μF电容组合,实测可降低30%的坐标抖动。
2.2 硬件连接检查清单
| 检查项 | 工具/方法 | 合格标准 |
|---|---|---|
| I2C上拉电阻 | 万用表测量SCL/SDA对地电压 | 3.3V系统约1.6-1.8V |
| 中断信号完整性 | 示波器单次触发模式 | 下降沿时间<100ns |
| 电源纹波 | 示波器AC耦合+20MHz带宽限制 | Vpp<50mV |
经验:先用逻辑分析仪抓取I2C初始通信序列,确认设备地址(ST7123默认为0x55)能否正确应答。
3. 内核驱动移植
3.1 设备树配置关键点
c复制&i2c2 {
st7123: touch@55 {
compatible = "sitronix,st7123";
reg = <0x55>;
interrupt-parent = <&pio>;
interrupts = <6 11
