晓飛飛 发表于 2025-10-20 12:03:51

有没有可能是IO检测到了高压脉冲,被钳位后当成了按键脉冲,所以才产生了键值,只要不跑飞不复位就算是抗静电有效。

网老四 发表于 2025-10-20 12:21:35

防静电跟抗干扰是两回事,不能混淆了.
防静电用稳压管之类钳位元件保护的话,通常只能保护元件不会损坏,而不能保证信号不出错,
抗干扰的目的则是保证信号不出错.
想要既能防静电又能不出错,得综合考虑软硬件保护和滤波方案.

神农鼎 发表于 2025-10-20 13:36:43

楼主现在 硬件很稳定,
MCU能稳定的检测到【静电产生的按键值】,硬件水平很高;
现在就是软件将这个不需要的 【静电产生的按键值】剔除就行。

yfmznxjm 发表于 2025-10-20 13:41:48

神农鼎 发表于 2025-10-20 11:37
STC8H8K64U 的 HBM-ESD是 8000V以上,最高的那一节;

原理图的PDF 贴上来,大家帮分析,


已上图,求指点。

梁工 发表于 2025-10-20 14:09:29

你这种情况,不是MCU扛不了静电,MCU工作正常,只是静电干扰了你读IO,
即,在你读IO时,没有按键,但是静电干扰刚好让IO的电平为按下键的电平,你的程序没有任何抗干扰处理的话,就会误认为是按键按下。
我推荐的方法是,每个按键状态对应一个位,我一般用正逻辑,即按下状态为1,未按键状态为0。比如64个按键,使用8个字节表示其状态。
每隔10ms扫描一次键盘保存键状态,我常使用3次比较,即使用数组KeyState做先进先出缓冲:
每10ms扫描一次,状态放KeyState;
if(++ScanIndex >= 3)    ScanIndex = 0;
对过去3次读取到的状态进行判断,每个键都独立的。
3次均为1则本次状态为1,3次均为0则本次状态为0,其余组合则本次状态不变。
再根据本次状态与上一次状态判断按下、释放、长按、双击等等。

xiaobendan 发表于 2025-10-20 16:48:16

那么8H好还是8G好?

yfmznxjm 发表于 2025-10-20 17:13:52

神农鼎 发表于 2025-10-20 13:36
楼主现在 硬件很稳定,
MCU能稳定的检测到【静电产生的按键值】,硬件水平很高;
现在就是软件将这个不需要 ...

您看到电路了吧,都是有预防的。

神农鼎 发表于 2025-10-20 19:04:51

yfmznxjm 发表于 2025-10-20 17:13
您看到电路了吧,都是有预防的。

15楼,梁工帮你分析了,你软件处理下
页: 1 [2]
查看完整版本: STC8H8K64U-45I 不抗静电吗 | STC8H 系列的 HBM-ESD 都是 8000V以上