十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

集成电容触摸与LCD驱动的MCU选型及开发全攻略

集成电容触摸与LCD驱动的MCU选型及开发全攻略 做小家电、仪器仪表、智能家居面板这类项目最让人头疼的就是人机交互那套东西面板上要放几个触摸按键还要带一个LCD显示甚至还要管理蜂鸣器、背光灯、通信接口。以前的做法是“MCU 触摸芯片 LCD驱动芯片”一颗不够就上两颗三颗结果不仅是BOM成本上去了PCB布局、调试、可靠性全跟着遭罪。现在很多MCU已经集成了Capacitive Touch控制器和LCD Driver一颗芯片就能把触控和显示都管起来。这篇东西我就从实际项目应用的角度把这类MCU的选型、硬件设计、固件开发以及量产调试的完整经验梳理一遍。这类带电容触摸和LCD驱动的MCU本质上是把两个成熟外设搬进芯片内部一个是用电荷检测原理实现的电容触摸按键扫描模块另一个是直接驱动段码式LCD的偏压发生器和COM/SEG扫描逻辑。做这行的朋友都知道外置方案里触摸芯片和LCD驱动IC通常走的是I2C或者SPI总线MCU要不停去读数据、刷显示占CPU、占IO两个IC之间的干扰还经常要花时间去处理。集成到MCU内部之后触摸扫描和LCD刷新都由硬件外设自行完成软件上只需要读写对应的寄存器或者缓冲区CPU负担小很多。对做量产产品的开发团队来说这类芯片的吸引力主要在于“一个主控解决整个面板”省物料、省面积、省调试时间。适合用这类MCU的产品非常明确电饭煲、电磁炉、微波炉、洗衣机面板带段码LCD的温控器、血压计、血糖仪、饮水机、空气净化器以及部分需要背光显示和触摸按键互动的儿童玩具。那些需要大尺寸彩屏、复杂GUI的产品不属于这个范畴那是Cortex-A系列MPU配RGB/LVDS接口的事如果把带段码LCD驱动的MCU硬塞进去用反而是浪费。所以这篇文章面向的读者很清晰做段码LCD显示加电容触摸按键的中小产品想简化硬件方案、加快开发进度的嵌入式工程师和产品经理。1. 搞清楚这类芯片到底解决什么问题很多刚接触这类MCU的朋友第一反应是“集成度高了是不是成本也高了”。实际上恰恰相反把触摸和LCD驱动集成进MCU在绝大多数中低端面板应用里物料成本是下降的。下面拆开看看这个结论是怎么来的。1.1 一个控制面板项目的两种方案对比假设一个典型产品场景电热水壶控制面板需要3个触摸按键开关键、温度加减键、一个段码LCD显示设定温度、实际水温、工作状态图标、一个蜂鸣器、一个LED背光。传统的分离方案产品清单大概是这样主控MCU一颗选用带Flash的通用芯片价格可能在1.5到3元独立电容触摸芯片一颗比如常见的触摸感应IC价格1到2元还要加上触摸电极附近的匹配电阻电容LCD驱动芯片一颗如果是小尺寸段码屏用一颗通用LCD驱动IC大概0.8到1.5元再加上PCB面积、连接器、被动元件和加工费用。整体算下来一颗段码LCD触摸面板的BOM成本可能在5到8元而一颗集成方案MCU比如国产或台系主流的带触摸LCD驱动MCU价格在3到6元之间。更关键的是两颗芯片之间的接口信号不用再走外部走线了PCB面积能缩小20%到40%加工成本跟着下降。我见过不少项目从分离方案切换到集成方案之后单板成本直接砍掉30%这个数字一点都不夸张。更重要的其实是可靠性提升触摸芯片和主控之间I2C通信偶尔会因为干扰导致“按键没反应”这种问题在分离方案里非常容易出现而集成方案里不存在外部通信链路从根上就规避了这类故障。1.2 集成方案最大的优势不只是省钱省成本是直观的但真正让这类芯片成为方案首选的原因是电磁兼容性和开发效率。先看电磁兼容性。外置触摸芯片和MCU之间的I2C/SPI通信线路本质上就是一根天线高频开关信号会把噪声耦合到触摸电极和LCD走线上。做电磁兼容整改的时候经常要去调这串信号的走线长度、加磁珠、加滤波电容极其折磨人。集成方案中触摸模块的ADC采样和LCD驱动的高压扫描信号都在芯片内部完成走线最短寄生效应最小从物理结构上就避免了这类干扰源。开发效率上差距也很明显。分离方案里软件工程师要写两份驱动程序一份是触摸芯片的数据手册驱动一份是LCD驱动IC的初始化配置。不同厂商的触摸芯片寄存器定义差异巨大往往需要反复对照数据手册核对时序。而集成方案里厂商会提供对应的外设库或者图形化配置工具触摸通道的灵敏度校准、LCD的COM/SEG映射全部能用工具一键配置。项目从立项到出样可能能节省两到三周软件时间。1.3 这类MCU的边界在哪里并不是所有产品都适合用集成方案。要判断你的项目适不适合可以从这几个维度看触摸按键数量一般这类MCU的触摸通道数在4到24路之间。如果面板上需要超过20个独立触摸按键部分MCU的通道可能不够用或者需要牺牲部分普通IO口这时候可以考虑外置触摸芯片。LCD规格集成LCD驱动器支持的SEG数量和COM数量是有限的常见是4 COM × 40 SEG左右。如果要驱动带图标的复杂段码屏或者需要1/8占空比以上的多COM扫描就得选更大规格的MCU或者走向外挂LCD驱动IC的路线。系统复杂度如果产品里除了触摸和LCD还需要大量传感器接口、电机控制PWM、加密算法等就要评估MCU的主频和Flash是否够用。有些低端集成MCU主频只到8到16MHz跑复杂的UI状态机和算法会比较紧张。做技术选型最忌讳的是“看参数下单”看到触摸和LCD满足需求就直接选完全忽略Flash余量和计算能力。后面调试固件的时候才发现内存不够、CPU跑不动再换芯片就是灾难。我后面细讲选型。2. 选型阶段该盯住哪几个参数带触摸和LCD驱动的MCU从8位到32位都有硬件配置差距很大。选型时除了大家都知道的Flash、RAM、主频这些基础参数外有几个和触摸、LCD强相关的参数是必须仔细研究的。2.1 触摸通道数不是越多越好触摸通道数直接决定了能接多少个独立触摸按键。有经验的工程师会多做一步把通道数和IO引脚复用关系拉出来看。很多MCU的触摸通道不是独立引脚有些触摸引脚本身也复用为普通IO口、ADC输入口、PWM输出口。这个时候就要仔细检查触摸通道占用的引脚会不会影响外设分配。比如一个温控器项目需要3路触摸按键、1路NTC温度采样、1路PWM驱动加热器、1路驱动背光如果触摸通道恰好占用了PWM输出引脚那就很尴尬只能换芯片或者改设计。选触摸通道时还要留出至少20%的余量。原因有两个第一确权测试时可能需要增加按键第二有些触摸按键需要做成多路复用或者滑条形式一个滑条往往要占用3到5个通道。我见过一个方案在做“加减按键”时用滑条实现原本以为3个通道够用结果一个滑条占了5个通道最后只能重新选型非常耽误进度。2.2 LCD驱动能力SEG/COM、偏压和占空比LCD驱动器的规格怎么理解先说COM和SEG。段码LCD的基本原理是液晶像素夹在COM电极和SEG电极之间通过给COM和SEG施加不同的交流电压波形让对应的像素点呈现显示状态。一颗显示屏通常有几个COM引脚和几十个SEG引脚实际可驱动的像素数量就是COM数量乘以SEG数量。常见的段码LCD规格比如 4COM × 32SEG意味着最多能点128个段。实际项目中40个段码已经能显示丰富的数字加图标了所以4COM × 40SEG左右是主流配置。注意SEG数量通常会占用很多IO口这也解释了为什么很多MCU在启用LCD驱动后可用IO会大幅减少。偏压Bias和占空比Duty这两个参数容易混淆。占空比指的是扫描的COM数4COM就是1/4占空比即每个COM在扫描周期里有1/4的时间被驱动。偏压指的是驱动波形的电压档位比如1/3偏压意味着使用VDD、2/3VDD、1/3VDD、GND这几档电压来组合出无DC分量的交流波形目的是防止液晶材料老化。选型的时候要注意MCU内置的LCD偏压发生器是否支持目标屏幕的偏压要求以及LCD电压 VLCD 的可调范围。VLCD 直接决定显示对比度通常 MCU 会提供软件可调的 VLCD 寄存器在量产时用于微调一致性。2.3 工作电压、功耗与触摸灵敏度带LCD驱动的MCU往往要用在电池供电设备上比如血糖仪、手持温湿度计这时候工作电压范围和工作电流就是关键指标。大多数这类MCU的工作电压在1.8V到5.5V之间内部LCD升压电路可以把电压抬升到3V甚至5V来驱动液晶。需要注意的是触摸灵敏度在不同电压下表现不一致通常是电压越低触摸检测越困难。有些MCU在3V以下供电时内部触摸模块的ADC基准会下降导致基线噪声变大。选型时建议把目标工作电压的最低值给到MCU原厂的触摸库参数表中让对方帮你评估灵敏度余量。另外看功耗时要分清“LCD开启时的工作电流”和“睡眠电流”。LCD驱动本身需要持续给COM/SEG输出波形无论显示内容是否变化扫描都得继续所以LCD开启时的电流通常在5到20微安这个量级这是产品待机功耗的大头。如果产品需要在关机状态下仍然显示时间或温度这部分电流就必须认真核算否则一节纽扣电池可能撑不过一个月。2.4 Flash/RAM与调试接口集成外设多了Flash占用并不小。触摸库和LCD驱动库加在一起很多厂商提供的底层代码就有4到8KB再加上应用代码如果芯片Flash只有16KB做复杂UI就很紧张。我的建议是Flash不少于32KBRAM不少于2KB。这个配置跑一个中等复杂度的小家电面板带10来个界面、10多个触摸按键、蜂鸣器提示、数据存储是够用的。如果你还要跑加减密、OTA升级、蓝牙协议栈那就要往64KB以上看了。调试接口也需要关注。触摸LCD这类集成外设调试起来最需要的是“实时观察内部寄存器值和波形”。如果芯片带SWD或JTAG接口可以在调试时直接查看触摸通道的原始计数值这比串口打印日志要高效得多。有些低端8位MCU只有ISP接口调试很不方便项目进度压力大的时候会非常痛苦。2.5 厂商与开发工具链说到工具链我给一个真诚的建议优先选择有图形化触摸配置工具的厂商。触摸调试和GPIO控制不一样它需要调整的参数很多充电时间、采样次数、频谱响应、阈值、噪声容忍度等。如果全靠手动写寄存器开发周期会拉长很多而且调参数非常容易出错。目前主流厂商基本都提供了类似CapSense调参器、触摸调试GUI的工具厂家通过USB把芯片数据传到PC端工程师可视化地看到触摸前后的计数值变化波形还能在图形界面中直接调整参数并导出配置。这个工具好不好用我建议在选型阶段就申请一套开发板实际体验一下不要等画完板子再发现调参困难。顺便说一句开发环境。8位MCU通常用自家IDE加C编译器32位MCU比如ARM Cortex-M内核芯片用Keil、IAR即可。编译器版本对代码优化有一定影响但真正影响开发效率的是例程的质量和完整度。选型时一定要去官网下载配套的SDK和例程看看例程里是不是有触摸按键加LCD显示同时工作的完整工程。很多SDK只有最基础的GPIO和Timer例程触摸和LCD要自己拼这种SDK上手会比较痛苦。下面给一个典型的选型参数对比表方便大家做初步筛选。参数项入门级方案主流集成方案高端集成方案内核8位MCU8位或Cortex-M0Cortex-M0或以上主频4~8 MHz8~48 MHz32~72 MHzFlash8~16KB16~64KB64~128KBRAM256B~1KB2~8KB8~16KB触摸通道4~8路6~16路16~24路LCD驱动4COM×20SEG4COM×40SEG8COM×40SEG工作电压2.2~3.6V1.8~5.5V1.8~5.5V典型场景简单温度显示小家电面板复杂仪器仪表3. 硬件设计实操触摸电极、LCD与PCB走线选好芯片后硬件设计的质量直接决定了触摸灵敏度和LCD显示的稳定性。这里没有太多讨价还价的余地很多问题都是画板阶段埋下的雷。3.1 触摸电极的尺寸、形状和布局电容触摸按键的物理本质是测量电极对地的寄生电容变化。手指靠近时电极到地的电容会增加这个增量越明显系统识别越可靠。所以电极设计的核心思路就是把电极本身的寄生电容控制住把手指带来的电容变化量做出来。电极尺寸经验值圆形电极直径建议在8到15毫米之间方形电极边长建议在8到12毫米之间。太小的电极手指覆盖面积不足电容变化量太小太大的电极虽然触控稳定但相邻按键容易互相干扰手指在两个电极交界处会同时触发两个按键。间距同样重要。相邻电极中心距不应小于12毫米电极边缘间距不应小于5毫米。有些设计为了美观把按键排得很密结果误触率居高不下。这里有个小技巧在电极之间用铺地隔离地线间隔最好不小于3毫米能显著降低相邻电极之间的耦合。电极下面和周围不要走任何高速信号线尤其不要走PWM线和电源开关线。我见过一块板子按键电极下方走了一条高频蜂鸣器PWM线导致触摸检测值波动很大按键偶尔失灵。电极的形状对灵敏度影响不算大圆形、方形、六边形都能正常工作真正影响大的是电极面积和周围地线布局。从美观出发做异形电极时记得保持总面积和以上经验值相当。另外如果产品做的是隔空触摸面板外壳是玻璃或亚克力外壳厚度不要超过3毫米触摸电极应紧贴面板背面。外壳太厚或者有气隙灵敏度都会明显下降只能靠加大电极面积去补偿。3.2 LCD玻璃与背光电路的设计配合段码LCD是玻璃器件引脚一般通过导电橡胶条斑马条或FPC排线连接PCB。硬件设计时要注意几点。首先是LCD金属引脚和PCB焊盘之间的间距。导电橡胶条的压缩量需要在一定范围内PCB焊盘宽度和间距要严格按LCD厂商提供的规格书设计否则装配后容易缺划或缺段。这里建议画板前把LCD玻璃的尺寸图和引脚间距图要过来逐一定位。背光方案常见的有LED侧背光和EL冷光片MCU驱动板上一般直接使用LED背光。LED的驱动电流和限流电阻要根据LCD玻璃的透过率调整过亮会导致LCD出现“水纹”或老化加速过暗则影响夜间使用体验。通常做法是把背光电平接到MCU的PWM口通过PWM调节微调亮度。这里有一个很常见的坑LCD的VCOM公共端电压需要AC波形驱动但如果MCU的LCD电源VLCD和背光LED共用升压电路背光电流的细微波动会耦合到LCD波形上导致显示闪烁。遇到这种情况可以在VLCD输出端增加一个4.7到10微法的电容并在LCD电源引脚附近并联100纳法陶瓷电容问题基本能压下来。3.3 PCB布局布线的五个要点触摸和LCD同时存在的板子布线规则和普通数字电路板有很大区别。按照优先级排序最重要的五个要点如下。第一触摸电极和芯片触摸引脚之间的走线尽量短走线宽度建议0.2到0.3毫米不要为了美观画粗线。走线越长寄生电容越大触摸基线就越高留给手指的增量空间就越小。第二LCD的COM/SEG走线不能和触摸走线平行长距离伴行尤其是SEG走线会周期性翻转电平对触摸信号产生耦合干扰形成“显示某几段时触摸灵敏度下降”之类的奇怪现象。第三触摸采样期间MCU内部ADC会切换通道外部晶体振荡器建议采用带屏蔽罩的小型晶振或走线包地避免晶振信号串扰进触摸模块。第四地平面完整。触摸按键区域的顶层和底层不要被大面积割裂地回路不完整会导致ESD和触摸噪声一起恶化。第五开关电源或DC-DC电路尽量远离触摸电极区域磁珠加电容隔离是最稳妥的做法。3.4 ESD与浪涌防护家电产品都要过静电放电测试这个环节在带触摸按键的产品上最容易翻车。因为触摸电极直接裸露在面板内侧静电很容易通过外壳缝隙或者显示窗传导到电极上再通过走线进入MCU触摸引脚。对付ESD最有效的手段是TVS管。每个触摸引脚的走线靠近焊盘处对地并一个低电容TVS管选型时注意结电容不要超过10皮法否则会直接拉低触摸灵敏度。很多带触摸的MCU原厂会给出触摸引脚的外围保护电路参考照着用就行。另外LCD的偏压发生器和LCD电源也需要加ESD保护尤其是LCD玻璃通过长导线引到主板的方案导线本身就是静电收集器。去耦电容的布局也不能忽视。MCU电源引脚、VLCD引脚、触摸参考电压引脚每个都要配备0.1微法去耦电容并且尽可能靠近引脚放置。这是老生常谈但在触摸LCD方案里去耦电容的位置不好往往会造成整个面板的显示波动和触摸噪声同时上升。4. 固件开发触摸扫描与LCD驱动的工程实现硬件板子回来后固件开发是关键。很多人以为这部分的重点是把触摸扫描函数和LCD显示函数都调通其实真正重要的工作在“怎么把二者优雅地协调起来”同时保证整个主循环不卡顿、功耗可控。4.1 LCD初始化与段码映射设计段码LCD的驱动看似简单但有一个需要特别小心的点段码映射关系。一块玻璃上每个显示段都对应特定的COM口和SEG口组合代码里要维护一个映射表。改板之后映射关系可能变化要重新核对。一般流程是这样的先从LCD制造商那里拿到玻璃的引脚定义图标出每个COM和SEG位置对应的显示内容比如“COM0SEG0 第一位数字的A段”。然后在MCU的LCD缓冲区数组里建立起索引关系常见的做法是用一个结构体或者位掩码来表示一个字符。数据手册里通常会给一个LCD波形输出的真值表比如要达到“ON”状态COM和SEG的相对电压要在某一帧内切换极性。代码上这类MCU一般提供直接写LCDRAM的功能应用层只需要操作对应的RAM位。我习惯把LCD段码的映射定义放在一个单独的头文件里用宏定义而不是直接操作寄存器地址。比如定义一个宏 SEG_1SEG_A_SET()这样在UI层写代码时逻辑清晰不容易写错位。另外注意LCD显示是有刷新频率的常见是32Hz到64Hz。太低的刷新率会出现“闪烁感”太高则增加功耗。在程序主循环里不要频繁整体刷新LCDRAM只需对需要变化的段进行单独写入。稳定的不变化内容写入一次就够了。4.2 触摸扫描的状态机与滤波算法触摸扫描不能直接拿原始计数值需要一个完善的状态机来处理。常见的触摸扫描状态机包含三个状态空闲、检测、去抖。在空闲状态MCU定时触发触摸采样得到当前通道的原始计数值。系统用滑动平均或者中值滤波计算出一个基线值基线代表“没有手指时”的环境电容。手指按下的时候原始计数值会大于基线值差值就是信号量。当信号量超过阈值且持续一定次数去抖系统才认为“按键按下”。释放检测同理信号量低于释放阈值且持续若干次系统才认为“按键释放”。阈值怎么定经验值手指按下时的信号量一般是基线噪声的5到10倍。调试工具里可以看到实时波形通常手指按下信号量在100到1000的范围而噪声可能在10到30左右。阈值一般设置为信号量幅度的40%到60%既能保证可靠识别又不会过于灵敏。写代码时要把阈值做成可校准的参数存储在Flash或者EEPROM里量产时按需微调。这里还有一个重要技巧触摸扫描模块在采样期间最好关闭LCD段码波形切换中断或者通过MCU内部的触发机制让两者错开。因为LCD的电压波形翻转时会产生边沿跳动如果触摸采样的ADC转换正好落在LCD翻转瞬间就会引入噪声。很多MCU的硬件触摸模块本身已经和LCD扫描做了同步但如果你的芯片没问题软件上可以避免在LCD刷新中断里启动触摸采样。下面给出一个触摸扫描主循环的伪代码示例void touch_task(void) { uint16_t raw touch_read_channel(TOUCH_KEY_1); uint16_t delta raw - baseline[TOUCH_KEY_1]; if (delta press_threshold[TOUCH_KEY_1]) { if (debounce_cnt[TOUCH_KEY_1] DEBOUNCE_PRESS_CNT) { debounce_cnt[TOUCH_KEY_1]; } else { key_event | KEY_PRESSED_EVENT; } } else { debounce_cnt[TOUCH_KEY_1] 0; if (delta release_threshold[TOUCH_KEY_1]) { key_event | KEY_RELEASED_EVENT; } // 缓慢更新基线适应环境变化 baseline[TOUCH_KEY_1] baseline[TOUCH_KEY_1] * (BASELINE_UPDATE_N - 1) / BASELINE_UPDATE_N raw / BASELINE_UPDATE_N; } }4.3 界面联动的调度逻辑一个产品要稳定运行最怕的就是“触摸扫描、LCD显示、逻辑处理”挤在同一段程序里互相阻塞。我建议用一个简单的定时器调度架构1毫秒时基作为心跳消息队列传递事件触摸任务每10到20毫秒执行一次UI刷新每30到50毫秒执行一次按键事件通过队列通知UI层。这个架构看起来简单但实际能避免很多问题。比如用户在快速多次按键时如果按键事件丢失体验会非常差。用队列缓存事件后即便UI层正在执行耗时的写Flash操作事件也不会丢失。另外LCD的段码刷新不需要和按键事件直接同步只要保证显示内容更新在一个刷新周期内完成即可。做UI逻辑时我习惯把界面拆成“状态”和“变化”两层。比如一个温度显示界面稳定状态只需要显示一个数值当用户按下加键时触发一次数值更新事件更新段码缓冲区并显示。如果每次主循环都去无条件重写整个LCDRAM即便显示内容没变也会增加功耗和潜在的波形干扰。4.4 低功耗设计触摸唤醒与显示节电电池供电产品对功耗的要求更加严格低功耗设计要从硬件和软件一起入手。软件层面触摸模块一般支持“唤醒模式”。在睡眠状态下触摸模块仍以较低的频率进行扫描比如每50到100毫秒扫描一次当检测到有效触摸时通过中断唤醒主控。这个模式下触摸模块功耗可以控制在几个微安到几十微安整机睡眠电流可以控制在10微安以内。如果产品在睡眠时不需要LCD显示可以把LCD驱动关掉只保留触摸唤醒。如果需要持续显示时间则至少要保留LCD驱动的工作电流和触摸扫描电流这个要提前核算。需要注意的是触摸唤醒模式下的灵敏度通常比正常工作模式要低因为采样次数和扫描频率都降低了。如果产品需要做到“超级低功耗待机”可以在睡眠前提高触摸阈值减少误唤醒同时把唤醒灵敏度做保守一点。还有一个小技巧如果机身有金属装饰件或者大面积接地结构触摸电极和地之间的距离会显著影响灵敏度。在调试低功耗模式时别只盯着软件也要考虑产品外壳和结构对电极电容的影响。电池供电设备如果电池装得很靠近触摸电极电池本身也会引入寄生电容常常表现为“未触摸时基线漂移很大”这种情况需要在结构上把电池位置和电极错开。5. 调试和量产阶段的踩坑记录这类MCU的项目坑不少而且很多坑是开发到中期或者到了量产测试阶段才暴露出来的。整理几个我实际遇到并解决过的典型问题可以作为排查手册来用。5.1 灵敏度上不去先别急着加电容触摸按键灵敏度不够的表现是手指按下去没反应或者需要很用力接触面板才有反应。很多人第一反应是去软件里调阈值或者往触摸引脚加电容滤波。实测下来这通常解决不了根本问题。灵敏度不足的常见原因其实集中在硬件上电极面积太小、面板外壳太厚、触摸走线过长、TVS管结电容过大。排查顺序建议是先看电极尺寸是否达标再看外壳厚度再看走线长度最后麻烦示波器测量触摸引脚处的波形质量和电源纹波。单纯依赖软件调阈值往往会陷入“调高了误触发调低了没反应”的尴尬境地。软件上可以做的有限但有效的手段是增加触摸通道的采样次数。大多数触摸模块支持配置单次采样的时钟周期和重复采样次数增加采样次数可以降低随机噪声等效提高信噪比。代价是功耗增加和采样时间变长。如果你的系统主循环是10毫秒周期采样总时间超过2毫秒就要注意是否影响到其他任务必要时改用异步采样触发。5.2 触摸按键误触发的真实原因误触发比灵敏度低更让人头疼。常见表现是上电瞬间误触发、手在面板附近晃过触发、环境湿度变化后误触发、某个LED或PWM开启后误触发。上电瞬间触发的处理方法很有讲究。芯片刚上电时触摸模块的基线还没有建立此时如果检测到一个大信号就会误判为按键按下。解决方法是软件上延时启动触摸检测比如上电200毫秒后再开始采集并且基线建立时间不小于500毫秒。还有一些MCU支持在复位后自动禁用触摸中断直到固件手写使能这个功能建议开启。环境湿度变化导致误触发常见于厨房或卫生间场景。水汽在电极表面形成水膜改变了寄生电容基线的缓慢更新算法可能来不及跟上。解决方法有两个一是提高基线更新的敏感度让基线更快跟随环境变化二是利用TWATuning with Auto-Update机制让芯片在检测不到手指时自动缓慢调整基线检测到手指后暂停更新。后者是主流方案多数厂商的触摸库已经内置只需要确认开关是否打开。5.3 LCD显示乱码、缺划、闪烁的几个雷LCD显示缺划首先要检查装配问题。导电橡胶条压偏、压力不均匀是头号原因尤其是结构公差偏大的外壳。其次进来看PCB焊盘设计焊盘宽度和玻璃引脚间距不匹配也会导致个别段接触不良。显示闪烁则要从软件和硬件两方面排查。先看LCD刷新频率如果低于32Hz肉眼明显能感到闪烁可以调高刷新频率试试。再看VLCD电压电压偏低时显示对比度下降肉眼看上去会觉得“发虚”类似闪烁。最后检查主循环里是否存在长时间阻塞比如写Flash、进行复杂浮点运算会导致LCD的中断服务不及时形成周期性漏刷。还有一个隐蔽的问题LCD的COM/SEG驱动波形和触摸采样如果不同步会出现一种独特的现象——触摸按键按下期间LCD某几段会变暗。这是触摸模块检测到按键后内部中断优先级较高把LCD扫描的时间片抢走了。解决办法是调整两个外设的中断优先级或者将触摸采样触发条件配置为只在LCD扫描的空闲窗口内启动。文章开头说过集成方案比分离方案可靠但有一个例外LCD驱动和触摸模块同芯片内部共享参考电压源时如果触摸采样抽取电流过大会导致VLCD轻微跌落表现为LCD亮度在触摸时轻微变化。对于严格的产品可以增加外部参考源或者选择触摸模块和LCD模块完全独立供电的芯片。5.4 量产一致性和来料检测量产阶段最大的坑是“开发板正常产线批量不良”。用这类MCU的时候不同批次的触摸灵敏度和LCD对比度会有差异主要原因是环境温度、元件批次差异导致的寄生电容不同。解决方案有几种。一是把触摸阈值的校准接口做成产线测试工具通过串口或者I2C接口快速烧录校准参数。很多厂商的触摸调试工具支持导出量产参数文件直接在产线烧录时一并写入。二是让固件在上电自检时执行一次短期基线校准在没有任何触摸的情况下记录基线值计算阈值。这里注意自检时的环境温度和生产时的环境温度不同生成的阈值要预留充足余量。LCD对比度的一致性则可以通过量产时微调VLCD寄存器来实现。我建议在产线测试工序中增加一个“显示目检触摸灵敏度校准”的环节虽然增加了几秒钟的测试时间但能避免大量终端市场售后问题这笔投入非常值得。5.5 常见问题速查表问题现象可能原因解决方案触摸灵敏度低电极面积小、外壳厚度大、TVS电容过大加大电极、降低外壳厚度、换低结电容TVS上电误触发按键基线未建立上电延时200ms后再启动触摸检测湿手或潮湿环境误触发水膜导致寄生电容变化开启基线自动更新提高释放阈值触摸时LCD闪触摸采样与LCD扫描时间冲突合理分配外设中断优先级LCD缺划装配压力不均/焊盘间距不匹配检查导电胶条及PCB焊盘设计显示闪烁刷新率低或VLCD电压偏低提高刷新频率或微调VLCD寄存器睡眠电流超标LCD未关断或触摸唤醒频率过高睡眠时关闭LCD、降低触摸扫描频率批量灵敏度不一致元件批次差异/环境温度差异产线校准预留阈值余量6. 一点个人体会带触摸和LCD驱动的MCU这两年明显成为小家电、仪表类方案的主流选择我从分离方案一路做过来最大的体会是这类芯片真正难的不是单点功能而是把触摸、显示、功耗、EMC放在一起通盘考虑。很多朋友拿到一颗新芯片第一件事是点亮屏、扫到按键这没错但我建议在原理图阶段就多花一两天把触摸电极的布局、LCD走线的隔离、电源的去耦反复看几遍后期调试能省下成倍的时间。另外如果公司资源允许选型阶段尽量申请原厂的开发板和调试工具。触摸调试工具能让你快速验证芯片在目标外壳厚度、目标PCB布局下的实际表现这比看几十页数据手册都有效得多。曾经有次我打算换一颗成本更低的芯片结果在开发板上实测发现它在目标外壳下灵敏度余量不足最终放弃了这颗芯片。这个决策看起来保守但避免了一次冒进换型可能带来的量产事故。如果你正在做带触摸和LCD显示的新产品或者正在为旧产品的方案升级发愁我的建议是先从一块参考设计板开始跑通最小系统再把电极、屏和外壳做进去一步一步来。这类MCU的集成度高但不代表它简单尊重它的物理特性它就能帮你把产品打磨得更稳定。
返回列表