最近采用CY7C68013A芯片设计了一款产品,其实内部就是一个51单片机,控制USB通讯。在测试过程发现部分电路板上电后,电脑无法发现新USB硬件,也不提示无法识别,设备管理器也没有UNKNOW DEVICE的提示。经过仔细排查怀疑内部的51单片机没有工作。
排查了晶振,供电,IO脚等等之后都没发现问题,最后怀疑是电路reset有问题。
根据芯片资料所述:VCC上升时间不能太快,至少需要200us。在使用无源晶振时,reset复位时间必须是在VCC达到3.0V后大约5MS。若是外部时钟的加电复位时间大约为200us。
我们一般使用单片机的时候,硬件电路中的复位电路设计如下图所示。此复位电路是针对低电平有效复位而言的,其中二极管是起着在断电的情况下能够很快的将电容 两端的电压释放掉,为下次上电复位做准备。
电容两端的初始电压为U0(一般情况下设为0V),T时刻电容两端电压为UT。3.3V电压设为VCC。
由流经电容的电流I和电容两端的电压变化关系式:I=C*dUt/dt
可以得到:I*dt=C*dU t
两边分别积分可以的得到:I*T=∫(0-1)C*dUt;即I*T=C*Ut−C*U0
(其中U0=0V),
由VCC=UR+UT 可以得到公式:VCC=R1*(C*UT/T)+UT
对电容充电至0.9*VCC时完成复位,此时可以得出T=9*RC,T就是所需要的复位时间。根据自己电路中的参数计算出复位时间
T=900MS;
但实际过程中采用LOTO的OSCA02示波器的触发功能,捕捉正常工作USB电路板上电时刻复位信号的波形状态;如下图所示(黄色为电压VCC波形,蓝绿色为复 位信号波形):
观察波形状态,正常USB电路板上电时,VCC上升时间为100US左右,RESET复位信号为500US。
无反应的USB电路板上电时,示波器捕捉的波形如图5所示,VCC在100US可从0V上升到3.3V,而RESET复位信号上升时间持续400MS,而且一直达不到3.3V。
遇到此现象,使用示波器观察上电复位波形和VCC电压波形之间的延迟关系会很有帮助。当然使用USB 示波器在电脑上操作也很方便。检查RESET管脚周围的电阻和电容等有无虚焊、漏焊等失误。这次故障应该是电容焊错,换了一个电容就正常了,故障排除。