问题:最近在调试公司一款老产品时发现BMS引脚拉高,应该是从内部ROM启动,串口打印"C",但是有时却从外部Flash启动了;将BMS 引脚拉低应该从外部Flash启动,但有80%情况ARM从内部ROM启动了。
查找原因:ARM上电启动时低速晶振32.768 kHz开始起振了,手册提供启动时间最大是900 ms,而复位芯片的复位时间只有200ms。AT91RM9200在BMS启动模式选择时,要求复位信号上升沿前的10个时钟(32.768kHz)周期要保证稳定。
我实际测到的是
明显32.768KHz时钟未稳定
解决方法:给ARM的复位信号延迟1.5s+200ms(复位芯片的复位信号给到CPLD,由CPLD给ARM复位信号,所以在CPLD中延迟1.5s,那么给ARM的复位信号脉宽为1.7s)。这种方法解决了问题。如下图所示。另外在测试中启动模式未出现过问题。
疑问:我看了别人的方案,没有CPLD或者其他MCU对ARM的复位信号NRST特意做延迟。都是用复位脉宽为200ms的复位芯片。请大家给我提点宝贵建议,不胜感激! |