MSP430系统复位【原创】
0赞
接着上面的继续,想要谈点关于MSP430系统复位和初始化得问题。开始前想谈谈最近的生活。很忙,白天都在查询资料解决问题,晚上回来后想要补课却发现自身的精力有点无力支持的样子,对效率有了点真切的认识。昨天晚上消遣了一把,看了个电影《死亡诗社》,不过我比较喜欢另一个翻译《春风化雨》,让人感觉暖一点,里面有句话语seize the day,翻译成了及时行乐,也不知道达到了 信、达、雅的哪个境界。看着这些天的各种离奇荒诞,但却真实发生的的事情,有些木讷了。试着让自己不关心他们了,学着做点技术活挺好的,痛苦并快乐着。
我个人浅显的认识是MSP430提供的复位和初始化与其他类型的单片机异曲同工,复位方面认识一下产生复位信号的由来,然后当然每种单片机的初始化都有它的特点,下面我们来看一下。
MSP430使用了两个分离的复位信号,一个用作软件复位(上电清除),另一个就用作硬件复位(上电复位)信号。硬件复位也就是POR(power on reset),软件复位标识为PUC(power up clear)。下面我们给出一般的两种复位信号的图解。
POR信号在下面两种事件发生时才会产生:
- 器件上电;
- RST/NMI 引脚配置为复位模式,当RST/NMI 引脚产生低电平时。
当POR信号产生时,必然会产生PUC信号;而PUC信号的产生并不会牵连POR信号。PUC信号的产生依赖与下面的事件:
- POR信号发生;
- 启动看门狗时,看门狗定时器计满时;
- 向看门狗写入错误的安全参数值时;
- 向片内FLASH写入错误的安全参数值时。
可以看出PUC信号的产生涉及到一些关于安全参数和看门狗之类的问题,我们在此并不解释,待会会专门讲一下看门狗,我们现在关心的是,当这些信号产生时,单片机做出了什么反应,给出了什么结果。
当POR信号(或者PUC信号,存在一些不同之处,但大体相似)发生时就引起了器件的复位,进行初始化,初始化后的状态为:
- RST/NMI引脚被配置为复位模式;
- I/O引脚设置为输入模式,I/O标志复位;
- 状态寄存器被复位;
- 程序计数器(PC)装入复位向量地址0xFFFE,CPU从此地址开始取指令执行;
- 决定工作频率的系统时钟从DCO的最低频率开始工作。启动晶振时钟后,频率调整到目标值;
- 一些其他模块的寄存器初始化。
下面我们来看一下整个过程的实现。RST/NMI 引脚在加载电压Vcc后设置成复位功能。引脚的复位功能一直保持到不选此功能为止。处于复位功能状态下,引脚电压被拉低至GND,然后释放,MPS430按照下面的顺序开始工作:
- 将在复位向量地址0FFFEh中包含的地址加载入PC;
- 在释放RST/NMI引脚后,CPU从复位向量中所含的地址开始运行;
- 状态寄存器SR复位
- 除PC与SR外,用户程序对全部寄存器进行初始化;
- 对 外围模块中的寄存器进行处理;
- 决定工作频率的系统时钟从DCO的最低频率开始工作。启动晶振时钟后,频率调整到目标值。
下面给出了一个POR信号的时序图。
提供三种典型的复位电路:
- 在RST/NMI管脚上接100k欧的上拉电阻。
- 在1的基础上再接0.1uf的电容,电容的一端接地,可以使复位更加可靠。
- 在2的基础上,再在电阻上面并接出一个型号为IN4008的二极管,可以可靠的实现系统断电后立即上电。