TSC2117 SAR ADC驱动电阻触摸屏:原理、配置与工程实践
2026/7/24 8:54:41 网站建设 项目流程

1. 项目概述与核心价值

在嵌入式系统开发,尤其是人机交互界面设计中,电阻式触摸屏曾经是,并且在某些特定应用场景下,至今仍是一种可靠且成本效益高的选择。其核心挑战在于如何准确、快速地将触摸屏上模拟的电压变化,转换为微控制器能够理解的数字坐标。这背后离不开一个关键角色:模数转换器。而在众多ADC架构中,逐次逼近寄存器型因其在速度、精度和功耗上的良好平衡,成为了触摸屏控制器的主流选择。

德州仪器的TSC2117就是这样一颗经典的触摸屏控制器芯片,它内部集成了一个高度可配置的SAR ADC。这颗芯片的巧妙之处在于,它不仅仅是一个简单的ADC,更是一个为电阻式触摸屏量身定制的“信号调理与采集系统”。它内置了驱动开关矩阵,可以直接连接触摸屏的X+、X-、Y+、Y-四线,自动完成坐标测量所需的电压施加、切换和采样过程,极大地减轻了主控MCU的负担。同时,它还集成了多路复用器,可以复用这个高精度的ADC去测量电池电压、外部辅助电压甚至芯片温度,实现了一芯多能。

对于嵌入式工程师而言,理解并熟练配置TSC2117的SAR ADC,意味着能够构建一个响应灵敏、坐标精准、且具备系统监控能力的触摸交互模块。这不仅仅是调用一个API那么简单,而是涉及到对ADC时钟、采样时序、驱动配置、数据读取模式等底层硬件的深刻理解。本文将深入拆解TSC2117 SAR ADC的工作原理、寄存器配置逻辑,并结合实际工程经验,分享从电路设计到软件驱动的完整实现要点与避坑指南。

2. TSC2117 SAR ADC 核心架构与工作原理

要驾驭TSC2117,首先得理解它的“心脏”——那个基于电容再分配架构的SAR ADC。这个设计决定了其性能边界和配置逻辑。

2.1 电容再分配型SAR ADC的工作机制

与传统的SAR ADC使用数模转换器进行逐次比较不同,电容再分配型SAR ADC利用了一个电容阵列和比较器来实现二进制搜索。你可以把它想象成一个非常精密的“天平”。

初始时,所有电容的上极板(连接比较器输入端)通过开关连接到输入信号进行采样,存储电荷。转换开始后,这些电容的下极板会根据控制逻辑,被切换到参考电压或地。通过一系列“试探”,改变电容阵列的电荷分布,使得比较器输入端的电压逼近地电位。最终,控制电容切换的数字码就是转换结果。

TSC2117的独特优势在于其差分输入和差分参考电压架构。触摸屏测量本质上是测量电阻分压,驱动开关的导通电阻会引入误差。TSC2117通过巧妙的开关配置,使未被选中的ADC输入通道能够为触摸屏提供电源和地,并利用差分测量技术,有效抵消了这些开关导通电阻带来的影响。这意味着,即使随着使用时间增长或温度变化导致开关电阻有微小变化,其对测量精度的影响也被极大地抑制了,这是实现稳定、可靠触摸体验的关键。

2.2 模拟输入通道与多路复用器

TSC2117的ADC前端是一个强大的多路复用器,这是其多功能性的基础。它支持多达7个模拟输入源:

  1. 触摸屏坐标:X+, X-, Y+, Y- 用于测量X、Y坐标,以及Z1、Z2用于测量触摸压力。
  2. 系统监控:VBAT(电池电压,内部带1/5分压器)、AUX1、AUX2(两个通用辅助电压输入)。
  3. 温度传感:TEMP1、TEMP2(用于差分温度测量)。

通过配置ADC控制寄存器,你可以命令ADC按顺序或单次测量这些通道。例如,在触摸屏应用中,通常会配置为连续扫描X和Y坐标;在系统监控模式下,则可以定期扫描VBAT和AUX通道。

注意:对于VBAT测量,需要特别注意其工作模式。在“电池电压测量模式”下,内部1/5分压器生效,ADC测量的是分压后的电压,软件需要乘以5才能得到真实电池电压。而在“辅助输入模式”下,芯片内部会在数字域进行补偿,试图直接输出真实电压,但在10位和12位模式下可能存在丢码,因此官方推荐对VBAT使用8位分辨率模式以获得最佳线性度。

2.3 数据格式、参考电压与分辨率

数据格式:TSC2117的输出数据是无符号二进制格式。对于N位分辨率,输出码值B对应的输入电压V_IN,在单端模式下计算公式为:V_IN = (B / 2^N) * VREF。在触摸屏的比率测量模式下,这个公式有变化,因为参考电压直接来自驱动电压,其结果与驱动电压绝对值无关,只与触摸点位置成比例,抗电源噪声能力更强。

电压参考:这是精度之源。TSC2117提供两种选择:

  • 内部参考:可编程为1.25V或2.5V。仅建议用于VBAT、温度、AUX输入的单端测量。对于触摸屏,使用内部参考无法实现比率测量,会引入误差。
  • 外部参考:可以接入最高至AVDD(模拟电源电压)的外部参考源。为了获得最优的触摸屏性能,必须使用外部参考电压,并采用比率转换模式。外部参考源需要足够稳定和低噪声,通常建议在VREF引脚附近添加一个RC滤波电路(例如,一个1μF的陶瓷电容并联一个0.1μF的电容到地)。

可变分辨率:ADC支持8、10、12位三种分辨率。这不是简单的“精度越高越好”的选择题。

  • 低分辨率(8位):转换速度最快,功耗最低。适用于对精度要求不高但需要快速响应的场景,如快速触摸检测、粗略电池电量检查。
  • 高分辨率(12位):转换速度最慢,功耗最高。适用于需要高精度坐标定位或精密电压测量的场景。
  • 选择策略:需要在速度、精度和功耗之间权衡。例如,在触摸屏持续跟踪时,可能采用10位分辨率平衡性能;在测量系统温度时,可能采用12位分辨率。通过配置寄存器可以动态切换。

3. 关键功能模块的配置与实战

理解了架构,我们进入实战环节。TSC2117的所有功能都通过一系列寄存器控制,这部分是驱动开发的核心。

3.1 转换时钟与转换时间计算

转换时钟是ADC的“心跳”,它直接决定了转换速度和可用的最高分辨率。TSC2117的时钟源有两种:

  1. 内部振荡器:典型频率8.2MHz。重要限制:当使用内部振荡器作为SAR ADC的转换时钟时,分辨率只能设置为8位。如果强行设置为10或12位,转换结果将不准确。
  2. 外部主时钟:通过MCLK引脚输入。这是实现高分辨率(10/12位)转换的必要条件。数据手册建议,10位分辨率需要约4MHz的转换时钟,12位分辨率则需要1MHz或2MHz的转换时钟。

时钟路径通过可编程分频器进行分频,相关配置寄存器如下:

  • 时钟源选择Page 3, Register 16, Bit 7Page 3, Register 17, Bit 7必须将这两个位设置为相同的值,以避免异步时钟域问题导致的不稳定。
  • 转换时钟分频Page 3, Register 2, Bits D4-D3。用于对选定的时钟源进行分频,得到最终的SAR转换时钟。

转换时间计算: 一次完整的转换不仅仅是ADC核心的逐次比较时间。对于触摸屏测量,它还包括几个关键阶段:

  1. 预充电时间:在触摸检测前,对可能存在的屏幕电容进行预充电,以确保检测电路能快速响应。由Page 3, Register 4, Bits D6-D4配置。
  2. 感应时间:用于确认触摸是否持续存在。由Page 3, Register 4, Bits D2-D0配置。
  3. 面板电压稳定时间:在驱动开关打开后,等待触摸屏上的电压稳定到最终值所需的时间。这对测量精度至关重要。由Page 3, Register 5, Bits D2-D0配置。
  4. 实际ADC转换时间:取决于分辨率(N)和转换时钟周期(t_CONV)。一个N位的转换大约需要N个转换时钟周期,加上一些固定的开销周期。

自控模式下的X-Y连续扫描为例,获取一对X/Y坐标的总时间(不包括SPI通信时间)可由手册中的公式估算。这个时间决定了触摸报点率。例如,如果你需要100Hz的报点率,那么一次X-Y转换的总时间必须小于10ms。你需要根据选择的时钟频率、分频系数、以及上述的延时配置,反向计算并验证是否满足系统实时性要求。

实操心得:在项目初期,不要盲目追求高分辨率。先用8位分辨率、内部振荡器快速搭建原型,验证触摸检测和基本通信功能。待系统稳定后,再引入外部时钟,逐步提高分辨率并优化时序参数(如面板稳定时间)。同时,务必用示波器观察PINTDAV中断引脚和SPI的时序,确保实际转换时间与计算值相符。

3.2 触摸检测与中断配置

TSC2117的触摸检测机制非常智能,可以极大减轻主机负担。GPIO1或GPIO2引脚可以被配置为PINTDAV信号,它有三种模式:

  1. 仅笔中断:当触摸屏被按下,该引脚拉低。主机收到中断后,再通过SPI命令启动坐标转换。
  2. 仅数据就绪:当ADC转换完成,数据就绪时,该引脚拉低。适用于主机轮询或DMA读取。
  3. 笔中断与数据就绪:上述两种情况的“或”操作。该引脚在触摸按下和每次数据就绪时都会拉低。

配置位于Page 3, Register 3, Bits D1-D0

触摸检测电路在芯片处于低功耗模式时仍在工作。此时,Y-驱动器连接到TSVSS(触摸屏地),X+通过一个50kΩ上拉电阻连接到AVDD。当屏幕被触摸,X+通过触摸屏面板被拉到接近地电位,从而触发中断。在测量周期内,X+会与这个中断电路断开,以防止上拉电阻的电流影响高精度的坐标测量。

3.3 工作模式详解:自控 vs. 主控

TSC2117的ADC可以工作在两种主控模式下,由Page 3, Register 3, Bit D7设置。

3.3.1 自控模式在此模式下,TSC2117完全自主管理触摸检测和坐标转换流程。

  1. 触摸屏被按下,触发PINTDAV中断。
  2. TSC2117自动启动内部时钟(如果之前处于休眠状态)。
  3. 按照预设的扫描模式(如连续X-Y扫描),依次开启Y驱动器、等待电压稳定、进行Y坐标转换并存储;然后开启X驱动器、重复过程转换X坐标。
  4. 如果触摸持续,则重复步骤3,直到触摸松开或ADC被强制关闭。

优点:极大减轻主机负担,主机只需在中断时读取数据寄存器即可。延迟稳定且可预测。缺点:流程固定,主机无法灵活干预单次测量过程。

3.3.2 主控模式在此模式下,主机处理器掌握控制权。

  1. 触摸屏被按下,触发PINTDAV中断(配置为笔中断模式)。
  2. 主机通过SPI写入ADC控制寄存器,发起一次特定的扫描命令(例如,单次X测量、连续X-Y扫描、Z测量等)。
  3. TSC2117执行该命令,完成后通过数据就绪中断(如果配置了)通知主机,或主机轮询状态寄存器。
  4. 主机读取数据。

优点:控制灵活,主机可以根据应用场景动态决定测量类型(例如,先测X,判断有效后再测Y和Z)。适合复杂的交互逻辑。缺点:主机需要处理更多事务,通信和响应延迟可能增加。

模式选择建议:对于简单的点触、滑动操作,自控模式是首选,简单可靠。对于需要区分单击、长按、或者需要根据初次触摸位置决定是否进行压力测量的高级应用,主控模式更合适。

3.4 缓冲区模式:提升系统效率的利器

这是TSC2117的一个高级功能,能显著降低对主机中断响应的实时性要求。其核心是一个深度为64的环形FIFO缓冲区。

工作原理

  1. 使能缓冲区模式后,ADC的转换结果不再直接放入X/Y等数据寄存器,而是自动按顺序写入环形FIFO。
  2. 用户可设置一个“触发水平”。例如,设置为8。
  3. 当FIFO中积累的数据量达到触发水平(例如,在X-Y连续扫描模式下,积累了4对坐标,共8个数据)时,TSC2117才产生一次数据就绪中断。
  4. 主机在中断服务程序中,可以一次性从FIFO中读取多个数据,然后批量处理。

优势

  • 降低中断频率:将多次转换合并为一次中断,减少了主机上下文切换的开销,特别适合操作系统环境或主频较低的MCU。
  • 防止数据丢失:在主机繁忙时,ADC可以持续转换并将数据存入FIFO,避免了因主机来不及响应而丢失触摸点的情况。
  • 支持单次和连续转换:在单次转换模式下,填满触发水平后停止,等待主机读取;在连续转换模式下,填满触发水平产生中断后,ADC继续转换,主机可以异步读取。

配置关键

  • 使能Page 3, Register 13, Bit D7
  • 触发水平:通过相关寄存器设置(具体寄存器地址需查手册)。
  • 数据读取:需要从特定的缓冲区数据寄存器(如Page 252, Register 1 & 2)读取。读取的数据字中不仅包含转换结果,还包含数据标识位(指示当前数据是X、Y、Z1还是Z2等)以及FIFO空/满状态标志。

避坑指南:使用缓冲区模式时,务必注意数据一致性。TSC2117提供了硬件机制(Page 3, Register 18, Bit D6)来防止在主机读取缓冲区的同时,ADC写入新数据造成冲突。在编写驱动时,应启用此功能,或在软件层面确保读/写指针操作的原子性。另外,要合理设置触发水平,太小则中断频繁,失去缓冲意义;太大则可能引入过高的触摸响应延迟。

4. 系统集成与软件驱动实现要点

将TSC2117集成到嵌入式系统中,硬件设计和软件驱动同样重要。

4.1 硬件设计注意事项

  1. 电源与去耦:为AVDD(模拟电源)和DVDD(数字电源)提供干净、稳定的电源。即使它们电压相同,也建议使用磁珠或0Ω电阻进行隔离,并在靠近芯片引脚处放置足够的去耦电容(例如,一个10μF的钽电容并联一个0.1μF的陶瓷电容)。
  2. 参考电压电路:如前所述,为获得最佳触摸性能,必须使用外部参考电压。建议使用一颗低噪声、高精度的LDO或基准电压芯片(如TI的REF系列)为VREF引脚供电,并配合RC滤波。
  3. 触摸屏接口:X+, X-, Y+, Y-引脚直接连接至四线电阻屏。注意走线尽可能短,并避免与数字高速信号线平行走线,以减少噪声耦合。
  4. 中断引脚上拉:将配置为PINTDAV的GPIO引脚(连接至主机MCU的中断输入)通过一个上拉电阻(如10kΩ)连接到高电平,以确保稳定的中断信号。

4.2 软件驱动层设计

一个健壮的驱动层应包含以下模块:

4.2.1 初始化序列

  1. 复位与通信验证:通过SPI读取芯片ID寄存器,确保通信链路正常。
  2. 基础配置
    • 设置ADC控制模式(自控/主控)。
    • 配置PINTDAV引脚功能(笔中断/数据就绪)。
    • 配置参考电压源(选择外部参考)。
    • 设置初始ADC分辨率、转换时钟分频。
    • 配置触摸检测相关延时(预充电、感应、电压稳定时间)。
  3. 使能功能:根据应用需求,使能或禁用缓冲区模式、温度自动测量等。

4.2.2 中断服务程序

  • 自控模式:中断触发后,直接读取X和Y数据寄存器(地址0x2A和0x2C),将原始数据转换为坐标。注意检查状态寄存器,确保数据有效。
  • 主控模式:中断触发后,启动相应的ADC转换命令,然后等待数据就绪中断或轮询状态位,再读取数据。
  • 缓冲区模式:中断触发后,连续从FIFO读取数据,直到读取的数据量达到预期或遇到空标志。每次读取的数据字需要根据ID位解析出对应的坐标类型。

4.2.3 数据读取与处理

  • SPI时序:TSC2117采用24时钟周期读取16位数据的协议。前7个时钟发送寄存器地址,第8个时钟为高表示读操作,后16个时钟读取数据。必须严格遵守此时序
  • 坐标校准:读取的原始ADC值需要经过校准才能转换为屏幕坐标。通常需要做两点校准:读取触摸屏左上角和右下角的ADC值,通过线性变换公式将后续的ADC值映射到像素坐标。公式为:Pixel_X = (ADC_X - X_Min) * Screen_Width / (X_Max - X_Min)同理计算Y坐标。X_Min/X_MaxY_Min/Y_Max需要在出厂或用户校准流程中获取并存储。

4.3 温度与辅助电压测量实践

温度测量: TSC2117提供两种模式。单次测量法精度约±3°C,差分测量法精度约±6°C但无需校准系数。对于电池充电等需要温度监控的应用,可以启用自动温度测量模式(Page 3, Register 19),设置阈值,当温度超限时产生中断。

辅助电压测量: AUX1、AUX2和VBAT(正常模式)的测量相对直接。注意VBAT在正常模式下推荐使用8位分辨率。计算公式为:V_IN = (ADC_Code / 2^N) * VREF。对于VBAT的电池测量模式,结果需要乘以5:V_BAT = (ADC_Code / 2^N) * VREF * 5

端口扫描模式:这是一个非常实用的功能。通过一次写操作(配置Page 3, Register 3, Bits D5-D2),可以让TSC2117自动按顺序测量所有使能的辅助输入(VBAT, AUX1, AUX2),并将结果更新到各自的结果寄存器。主机只需在完成后一次性读取,高效完成系统状态巡检。

5. 典型问题排查与性能优化

在实际项目中,你可能会遇到以下问题:

问题1:触摸坐标跳动或不准。

  • 排查
    1. 电源与参考噪声:用示波器检查AVDD和VREF引脚,看是否有明显的纹波或噪声。加强滤波。
    2. 面板稳定时间不足:增加Page 3, Register 5中的面板电压稳定时间设置。尤其是在使用高阻抗触摸屏或长走线时。
    3. 采样平均:启用ADC的采样平均功能(Page 3, Register 2, Bits D1-D0)。例如,设置4次或8次平均,可以显著平滑噪声,但会增加转换时间。
    4. 分辨率与时钟不匹配:确认在使用12位分辨率时,转换时钟是否设置为1MHz或2MHz(使用MCLK)。检查Page 3, Register 2Page 16/17的时钟配置。
    5. 软件滤波:在驱动层对连续读取的坐标进行软件滤波,如均值滤波、中值滤波或卡尔曼滤波。

问题2:触摸无反应或中断不触发。

  • 排查
    1. 硬件连接:检查触摸屏四线连接是否正确、可靠。测量X+引脚在无触摸时是否被上拉到AVDD(约50kΩ上拉)。
    2. 中断配置:确认GPIO引脚已正确配置为PINTDAV功能(Page 0, Register 51/52),并且模式选择正确(Page 3, Register 3, Bits D1-D0)。
    3. 触摸检测使能:检查Page 3, Register 4, Bit D7是否未意外禁用触摸检测。
    4. 电源模式:确保芯片未处于全局关断或ADC强制掉电模式。

问题3:SPI通信读取数据全为0或0xFF。

  • 排查
    1. 时序与相位:严格对照数据手册的SPI时序图,检查MCU的SPI时钟极性(CPOL)和相位(CPHA)设置。TSC2117通常需要在时钟上升沿采样数据。
    2. 片选信号:确保片选信号在24个时钟周期内保持有效,并在传输间隙拉高。
    3. 寄存器地址:读取X/Y坐标时,使用的地址是0x2A和0x2C(对应Page 3的特定寄存器)。地址错误是常见问题。

问题4:转换时间过长,导致触摸拖影。

  • 优化
    1. 降低分辨率:从12位降至10位或8位。
    2. 提高转换时钟:在满足分辨率要求的前提下,提高MCLK频率或减小分频系数。
    3. 优化延时参数:在保证测量稳定的前提下,尝试减小预充电时间(tPRE)、感应时间(tSNS)和面板稳定时间(tPVS)。需要通过实验找到最小值。
    4. 禁用平均:如果噪声允许,关闭采样平均。
    5. 使用缓冲区模式:虽然单次转换时间不变,但通过降低中断频率,整体上提升了系统处理效率,感觉更跟手。

性能优化表格总结:

优化目标可调整参数影响与权衡
提高精度提高分辨率(8->10->12位)增加转换时间与功耗
启用采样平均(2/4/8次)显著增加转换时间,有效抑制噪声
增加面板电压稳定时间(tPVS)增加转换时间,确保采样电压稳定
使用更低噪声的外部电压基准增加BOM成本和布局复杂度
提高速度降低分辨率牺牲精度
提高转换时钟频率可能受限于芯片最高时钟和分辨率要求
减少各项延时(tPRE,tSNS,tPVS)可能降低抗噪能力和测量稳定性
禁用采样平均降低噪声抑制能力
降低功耗降低分辨率牺牲精度
降低转换时钟频率增加转换时间
在不使用时关闭ADC或进入低功耗模式增加唤醒和初始化时间
降低CPU负载使用自控模式而非主控模式控制灵活性降低
启用缓冲区模式,并设置合理的触发水平引入固定的FIFO延迟,需要更多内存

最后,驱动调试离不开工具。除了逻辑分析仪抓取SPI时序外,最有效的方法是在关键节点(如PINTDAV中断引脚、X+驱动信号)使用示波器观察波形。通过观察中断触发到驱动切换、再到数据就绪的整个时间线,可以直观地验证配置是否正确,时间参数是否合理。将TSC2117的数据手册、你的配置计算值和示波器实测波形三者对照,是解决复杂问题的不二法门。这颗芯片功能丰富,初次接触会觉得寄存器繁多,但一旦理清其“自控/主控”、“触摸/辅助/温度”、“缓冲区”这几条主线,就能灵活地将其应用到各种嵌入式人机交互项目之中。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询