目录
一、现象
现场某型号门锁,断电后,再上电,就能开门;由于电池在门外,很容易拆卸,导致安全性问题。
二、原因以及解决方案
经过测试,发现是由于PB6引脚,在CPU上电启动过程中(此时程序未运行)不断的输出一个40KHz的时钟,而这个引脚正好接的是电机驱动的其中一根线;在进入程序后,初始化IO,就正常了;但是启动过程中会导致电机动作几个ms;
在老款的门锁上电机的这个轻微动作并没有测试出上电就能开门的问题,新款的门锁问题也不是必然出现;
目前解决方案是,在程序正式启动后,将电机倒转50ms;经过测试,按照正常人的反应速度无法再通过上电断电来进行开门了。
三、后续硬件设计及测试注意事项
1、硬件设计上,电机驱动IO不能使用类似PB6这种上电默认输出时钟的IO。
2、另外,测试时,需要注意,与电机驱动、安全一类相关的芯片需要着重测试上电启动过程中的IO状态。
四、具体分析过程
第一步,测试老款门锁主板(单板),发现电机只是极轻微动作或无动作,并没有出现上电后就能开门的情况;测试新款门锁主板(双层带按键板),电机有比较明显的咔嗒声音。
查看原理图,发现新款门锁主板电机驱动IO为PB6、PC9,而老款门锁主板电机驱动IO为PC4、PC5。
所以,以为是程序问题,最有可能是在固件中操作了PB6、PC9导致的;查看固件程序,并未发现问题;所以可以排除是程序逻辑问题。
第二步,将老款和新款门锁主板中的程序全部擦除,上电测试,发现老款门锁主板仍然是电机偶尔会出现轻微动作,而新款门锁上电后电机会持续动作一段比较长的时间,明显能听到咔咔的声音。
所以基本可以确定是上电时,CPU的IO状态不稳定造成的电机转动。
第三步,使用示波器抓波形如下:
图1,老款门锁主板上电时MOTOA、MOTOB波形
可以看到,CPU在启动时,PC4、PC5两个IO都会被拉高一段时间,大约在130ms左右,但是两个基本是同步的,所以电机不会动作。
图2,新款门锁MOTOA上电波形
可以看到,上电时,PB6引脚有130ms的40KHz的时钟输出,而PC9上电时是拉高的,当PB6的电平被拉低时,MOTOA=0 MOTOB=1就会导致电机转动。
当门锁有程序时,进入程序,重新初始化,就好了,所以实际电机转动不到130ms,只是轻微动作。
经过测试分析,确定是PB6引脚上电时状态导致的问题,后续设计时IO口的分配需要注意。