aerkate

MSP430系统复位【原创】

0
阅读(2661)

 

接着上面的继续,想要谈点关于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的二极管,可以可靠的实现系统断电后立即上电。