18、TSP报点率优化:报点率概念、提高报点率的方法、帧同步
各位同学,今天我们来聊聊触摸屏里一个非常核心的性能指标——报点率。
说实话,我刚开始做驱动那会儿,对报点率这个概念理解得比较浅。总觉得“能报点就行呗”。直到有一次,我在一个游戏手机上做调试,用户反馈“滑动时感觉有延迟,跟不上手指”。我查了半天,最后发现就是报点率没达标。嗯,从那以后,我再也不敢小看这个参数了。
一、什么是报点率?
报点率,英文叫 Report Rate,单位是 Hz。它指的是触摸屏每秒向主机(AP)上报触摸点数据的次数。
举个例子:
- 报点率 120Hz:每秒上报 120 次,约 8.3ms 一次
- 报点率 240Hz:每秒上报 240 次,约 4.1ms 一次
- 报点率 360Hz:每秒上报 360 次,约 2.7ms 一次
说白了,报点率越高,手指移动时上报的位置就越密集,滑动轨迹就越平滑。你想想看,如果报点率只有 60Hz,手指快速划过屏幕,中间可能就丢了十几个点,画出来的线就会“断断续续”。
核心公式:
报点间隔 (ms) = 1000 / 报点率 (Hz)
例如:120Hz → 8.3ms,240Hz → 4.1ms
我在项目中遇到过,有些厂商的触控 IC 默认配置只有 60Hz。用户一玩游戏就抱怨“不跟手”。其实不是硬件不行,是驱动里没把报点率调上去。
二、提高报点率的方法
提高报点率,不是简单地在驱动里改个数字就行的。它涉及硬件、固件、驱动三层配合。我给大家梳理一下常见的优化手段。
2.1 硬件层面:缩短扫描周期
触摸屏的报点,本质上是 IC 不断扫描电容矩阵、计算坐标的过程。扫描周期越短,报点率就越高。
- 减少扫描行数:比如原来扫 20 行,现在只扫 15 行。但会降低精度,需要权衡。
- 提高 ADC 采样率:IC 内部的模数转换器跑得更快,扫描时间就缩短了。
- 使用差分扫描:只扫描变化区域,不扫描静止区域。这个在低功耗场景很常见。
我记得有一次,某款 IC 的扫描周期是 12ms,算下来报点率只有 83Hz。后来我们和 IC 原厂沟通,把扫描模式从“全屏扫描”改成“局部扫描”,周期降到了 6ms,报点率直接翻倍到 166Hz。
2.2 固件层面:优化数据处理流程
IC 扫描完原始数据后,还要做滤波、去抖、坐标计算。这些处理步骤如果太慢,也会拖累报点率。
- 简化滤波算法:比如用一阶低通滤波代替高阶滤波,减少计算量。
- 减少去抖次数:去抖是为了防误触,但去抖次数太多会引入延迟。我建议在游戏模式下关闭去抖。
- 使用查表法:坐标计算中的三角函数、开方运算,提前算好存成表格,运行时直接查表。
避坑指南:
我曾经在某个项目里,为了追求高报点率,把固件里的滤波全关了。结果报点率是上去了,但噪声也上去了,手指静止时坐标乱跳。后来我加了一个“动态滤波”策略:快速滑动时用轻滤波,静止时用重滤波。效果很好。
2.3 驱动层面:减少中断与传输开销
IC 算好坐标后,通过 I2C 或 SPI 总线传给 AP。这个传输过程如果太慢,也会成为瓶颈。
- 使用 DMA 传输:代替 CPU 轮询,减少 CPU 占用。
- 批量上报:一次中断上报多个点,而不是报一个点就中断一次。
- 提高 I2C/SPI 时钟频率:比如从 400kHz 提到 1MHz,传输时间直接减半。
嗯,这里要注意:提高总线频率可能会引入信号完整性问题。我建议在量产前做一下眼图测试,确保波形没问题。
三、帧同步
帧同步,英文叫 Frame Sync。这个概念很多初学者容易忽略,但它对报点率的实际体验影响非常大。
3.1 为什么要做帧同步?
你想想看,手机屏幕的刷新率是 60Hz、90Hz 或 120Hz。触摸屏的报点率也是 120Hz、240Hz。如果两者不同步,会出现什么情况?
举个例子:
- 屏幕在 16.6ms 时刷新一帧
- 触摸屏在 8.3ms 时上报一个点
- 这个点上报后,AP 可能等到下一个 VSync 信号才去读取
- 结果就是:触摸数据虽然采集到了,但显示出来晚了半个周期
说白了,就是“触摸延迟”变大了。用户感觉“我手指动了,但画面没跟上”。
3.2 帧同步的实现方式
帧同步的核心思路是:让触摸屏的上报时刻,对齐到屏幕的 VSync 信号上。
- 硬件同步:IC 直接接收 AP 的 VSync 信号,在 VSync 到来时触发扫描和上报。
- 软件同步:驱动里注册 VSync 回调,在回调中读取触摸数据。
- 半同步:IC 以固定频率扫描,但驱动在 VSync 中断中才去取数据。
我个人的习惯:
在游戏手机这类对延迟敏感的产品上,我倾向于用硬件同步。因为软件同步会有调度延迟,不够稳定。而在普通手机上,软件同步就够用了,成本更低。
3.3 帧同步的典型配置
| 场景 | 屏幕刷新率 | 报点率 | 同步方式 |
|---|---|---|---|
| 普通办公 | 60Hz | 120Hz | 软件同步 |
| 视频播放 | 90Hz | 180Hz | 软件同步 |
| 游戏模式 | 120Hz | 240Hz | 硬件同步 |
| 专业电竞 | 144Hz | 360Hz | 硬件同步 |
我曾经在调试一个 144Hz 屏幕时,发现报点率虽然到了 360Hz,但用户还是觉得“有点肉”。后来用示波器抓了 VSync 和触摸中断的时序,发现两者相位差很大。做了硬件同步后,延迟直接降了 3ms。用户反馈“终于跟手了”。
四、知识体系总览
下面这张图,我把报点率优化的核心逻辑画出来了。大家可以对照着理解。
重要提醒:
报点率不是越高越好。过高的报点率会带来功耗增加、CPU占用上升、发热等问题。我建议根据产品定位来定:
- 普通手机:120Hz 足够
- 游戏手机:240Hz 起步
- 专业电竞:360Hz 或更高
另外,帧同步一定要做。不做帧同步,再高的报点率也是白搭,用户感知到的延迟并不会降低。
好了,关于报点率优化,今天就聊到这里。核心就三件事:硬件扫得快、固件算得快、驱动传得快,最后用帧同步把节奏对齐。你想想看,是不是这个理?