MSP430x5xx有三种复位信号:掉电复位(brownout reset, BOR)、上电 复位(power on reset, POR)和上电清除(power up clear, PUC)。下表列出了三种信号的触发条件和信号产生后设备的初始条件:
在系统完成复位以后,用户软件必须根据应用需求初始化设备:
- 初始化堆栈指针,一般是写入RAM顶端地址;
- 根据应用需求初始化看门狗;
- 根据应用需求配置外围模块。
对BOR的理解
在单片机系统中,一般采用电池或者市电供电。如果采用电池供电,则存在电池电压不断下降的问题;如果采用市电供电,则存在着电压波动和电源干扰的问题。其中,电源电压的不稳定,是造成单片机系统运行混乱甚至死机的重要原因之一。所以,通过BOR电路检测电源的电压, 一旦发现VCC下降到某一个门槛值时,就使单片机及时复位以免系统失控。这个复位状态一直保持到VCC重新上升到门槛值以上之后。
对BOR, POR和PUC之间区别与联系的理解
BOR会在芯片上电或者掉电过程中检测电源电压,并产生POR信号,如上图所示。芯片上电过程中,当电源电压VCC超过VCC(start)后BOR电路产生POR信号,直到VCC超过V(B_IT+),然后再经过延迟t(BOR)后,POR信号撤销。如果VCC电压上升速率较慢,t(BOR)会相应的延长。芯片掉电过程中,VCC必须降到低于V(B_IT-)之后BOR电路才产生POR信号。这是个迟滞比较功能,V(B_IT+)和V(B_IT-)差值即为迟滞电压Vhys(B_IT-),通过迟滞比较避免错误产生POR信号。
BOR与POR(和PUC)信号一个重要不同之处在于POR和PUC信号不会造成芯片执行启动代码,即程序计数器(PC)会直接载入0xFFFEh地址。另一个重要的不同之处在于BOR、POR和PUC信号系统复位后会导致不同的寄存器初始值,如下表最后4行所示。
例如SYSCTL寄存器的SYSJTAGPIN、SYSPMMPE和SYSRIVECT位的值保持置1直到系统产生BOR信号。
下图用图形方式展示了BOR、POR和PUC的产生条件和三个信号之间的关系。可以看出BOR信号能够产生POR信号,POR信号能够产生PUC信号,但反之不然。
参考资料
- 《Lierda-MSP430培训课件-系统复位、中断及工作模式》
- 《MSP430x5xx and MSP430x6xx Family User Guide》
- Differences between BOR, POR and PUC on MSP430F5522 - TI E2E Community