lhf_1230 发表于 2024-5-29 11:14:24

求助!急 键盘扫描串口发送键值不定时异常

自从2009年公司一直使用STC12C56系列型号,每年有20K左右的用量,做矩阵键盘扫描,串口输出键值到主控单片机,运行一直很稳定。

2023年初开始更换新工艺的STC8H1K28,价格更低、速度更快,做同样的矩阵扫描工作,几个批量的41个按键的键盘处理,没有集中出现过运行不稳定的情况,最近做了两批72个按键的键盘,集中爆发了运行不稳定的情况,全国各地和国外的客户都有,排除天气、温度、湿度的影响,有时早晨开机就出现扫描不到有效键值的情况,反复上电掉电都不行,过一天再开机又正常了,用几天又出现这样的异常,返回我们车间几十台控制器,运行一切正常,发回给客户,还是不定时的出现异常,有三个客户已经配合往返3~5次,依旧没有解决。急切需要STC官方给解决一下呀,客户催的急。
前后大小两个键盘的区别是:按键少的用了11.0592MHz的晶体,没有用到P3.2/P3.3,按键多的用了12MHz的晶体,用到了所有的IO,软件的扫描方式相同。
官方处理需要的话可以向我索要版图和程序,多谢多谢,在线等,问题已经出现了3个月了

神农鼎 发表于 2024-5-30 10:55:55

把实际电路原理图的PDF发上来,大家一起帮你分析

行列式按键扫描,输入用高阻,打开内部上拉/或外部已有上拉,
===如打开内部上拉,则等 1mS, 再读外部状态,
===则外部对地分布电容再大,也可以认为外部被拉高了
===大概 T = 0.7 R*C

对应的内部上拉电阻,上电就打开,不要关 !
外部上拉电阻在跑用户程序时,已有充分的时间
===将外部对地分布电容拉高了
===上电时就在同步拉高

后面行列式按键扫描,I/O要输出低电平,可以开漏输出低
===开漏输出低就是强推挽的输出低,从高拉低也是要时间的,这个较短
===开漏输出低就是准双向口的输出低
===开漏输出高就是高阻输入,从开漏输出低回到开漏输出高/浮空高阻输入
         等外部实际被外部上拉电阻/内部上拉电阻拉高,还是要时间的
大概 T = 0.7 R*C
所有也可以统一用开漏模式
===到这个理解,也就及格了


jwd 发表于 2024-5-29 12:53:37

是不是与上电初始化进入IAP有关?

Yim_Hom 发表于 2024-5-29 13:47:05

班门弄个斧:您说的不稳定是哪个方面?初始化?主循环?按键扫描?状态机还是轮询?还是串口发送?
另外多考虑一个现场地线的问题,我们也经常碰到现场的故障在家里复现不了的情况,首先把程序的问题排除干净,然后考虑干扰,干扰可能是EMC或者其他。
C8051F040都碰到过程序跑飞的情况,分时轮询500ms的程序指示灯没反应,最后判断的是地线问题。

电子DIY小家 发表于 2024-5-29 14:12:53

一般这种问题大概率是电源问题!

lhf_1230 发表于 2024-5-29 14:14:18

就是一个最简单的矩阵扫描键盘,由原来的STC12C5608换成了STC8H1K28,其他所有的外围电路都没变,程序的书写也基本一致,个人认为地线干扰的问题可以排除,现象是今天开机扫描不到有效键值,反复重新上电都不行,明天正常了的话,反复重新上电都没问题,主控芯片能接收到发过来的键值,只是键值为无效键值0

lhf_1230 发表于 2024-5-29 14:15:38

电子DIY小家 发表于 2024-5-29 14:12
一般这种问题大概率是电源问题!

电源不稳定,还是供电不足?还是滤波不够干净彻底?

_奶咖君_ 发表于 2024-5-29 14:21:03

lhf_1230 发表于 2024-5-29 14:14
就是一个最简单的矩阵扫描键盘,由原来的STC12C5608换成了STC8H1K28,其他所有的外围电路都没变,程序的书 ...

我记得指令的处理时间有差距,,,,这些应该考虑到了吧。。

lhf_1230 发表于 2024-5-29 14:23:24

IO置位和读取输入状态之间有1ms的延时,时间应该足够了吧

AI-32位8051 发表于 2024-5-29 14:25:07

可参考下面技术贴进行排查电路隐患:
【新提醒】完整的系统设计参考原理图@STC8H8K64U, @STC32G12K128 - 电源/复位/省电模式/外部晶振/内部时钟/对外时钟输出/PLL-144MHz时钟 国芯技术交流网站 - STC全球32位8051爱好者互助交流社区
https://www.stcaimcu.com/forum.p ... 5025&extra=page%3D1

梁工 发表于 2024-5-29 15:17:30

行列扫描按键不正常,都是扫描时序和IO设置的问题。
行列扫描按键,IO设置为准双向口,也可以打开内置的额外4K上拉电阻会更好。
由于STC8系列的速度更快,所以当IO改变之后,要加一点延时(相比STC12系列速度慢,不需要加延时),通常加3~5个NOP即可。
部分客户就是因为换了速度更快的MCU,没有处理好速度、时序问题,才会出现不稳定的问题。
页: [1] 2
查看完整版本: 求助!急 键盘扫描串口发送键值不定时异常