单片机
返回首页

MSP430单片机系统复位和初始化

2021-06-28 来源:eefocus

简介:
本章我们来学习一下MSP430单片机的系统复位与初始化的过程。
这节课的主要内容有:
·系统复位POR与PUC
·POR产生过程
·复位后,系统初始状态
·程序中如何复位
·硬件中如何设计


1,系统复位 POR与PUC


1.1 MSP430单片机复位逻辑图


可以看到,它在复位时会产生两个信号,一个是POR信号,一个是PUC信号。


POR信号叫做power-on reset。PUC信号叫做power-up clear。翻译成中文就是:POR为上电复位信号,PUC为上电清除信号。这两个信号都可以导致MSP430单片机发生复位中断。但是他们之间的级别是不一样的。


1.2 POR信号来源


POR信号的复位级别更高一些,POR信号主要来自于硬件:


※芯片上电;


※RST/NMI设置成复位模式,并在RST/NMI引脚上出现低电平信号;


※超级电压监视电路发现电压不稳。


1.3 PUC信号来源


POR信号的产生总会产生PUC信号,但PUC信号的发生不一定会产生POR信号。PUC信号是上电清除信号,产生PUC信号的情况有:


※发生POR信号;


※处于看门狗模式下,看门狗定时时间到;


※看门狗定时器写入错误的安全键值;


※FLASH存储器写入错误的安全键值;


※CPU从外设地址范围0H-01FF取数据。


2 POR产生过程(BOR)


2.1 POR信号产生过程图



我们现在看到的这张图是POR信号的产生过程图。


如果这里是一个供电电压的话,在上电初期,刚开始供电的时候,电压是很不稳的,电压就有可能发生来回的跳变,电源还会产生很多的毛刺,这时候就需要POR信号来时刻监视电源电压,一旦电源电压低于可编程的有效阈值的时候,就应该产生一个上电复位,保证单片机从一个确定的起始位置开始运行程序。


如果在单片机上电的时候,没有一个监视电压的波动情况的过程,那么如果单片机在这个位置开始从Flash读取程序代码,开始执行的话,跑程序时突然来了一个电压的下降(比如这个位置),这时候如果没有一个有效的复位信号,那么可能导致单片机的内核陷入一个无效的状态,或者说让它的内部发生自锁,进入一个不确定的状态,这时候系统就变得很不稳定了,所以需要在上电初期产生一个有效的复位信号,保证系统是在一个确定的位置,按照确定的方式开始执行的。


2.2 掉电产生POR



我们来看一下这张图,掉电复位电路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信号。VCC(start),Vhys(B_IT-),V(B_IT-)和t(BOR)的值,就如这张表所示。


3 复位后,系统初始化状态


3.1 系统复位后的系统状态


系统复位POR后的单片机系统状态为:


※RST/NMI引脚为复位功能;


※I/O方向寄存器复位,即I/O引脚为输入状态;


※MSP430内部的功能模块初始化,寄存器为默认值;


※SR(状态寄存器)复位;


※看门狗激活


※PC(程序计数器)载入0xFFFE处地址并开始执行。


3.2 上电复位后的硬件初始化


发生复位后,程序查询各复位源的标志。程序能确定复位源,以执行适当的复位操作。


MSP430在发生VCC上电后开始硬件初始化,即:


※全部I/O引脚切换成输入状态;


※I/O标志复位,细节见个外围模块的说明。


※将复位向量0FFFEh中包含的地址加载入PC中。CPU从上电清除(PUC)向量中包含的地址开始运行。


※状态寄存器(SR)复位。


※用户程序必须对除PC与SR外的全部寄存器进行初始化(如SP、RAM等)。


※决定工作频率的系统时钟从DCO 最低频率开始工作。启动晶振时钟后,频率调整到目标值。


3.3 RST /NMI复位功能复位后执行顺序


RST/NMI引脚在加载电压Vcc后设置成复位功能。引脚的复位功能一直保持到不选此功能为止。处于复位功能状态下,在RST/NMI引脚上拉低至GND,然后释放,则MSP430按以下顺序开始工作。


※将在复位向量0FFFEh中包含的地址加载入PC。


※在释放RST/NMI引脚后,CPU从复位向量中所含的地址开始运行。


※状态寄存器SR复位。


※除PC与SR外,用户程序对全部寄存器进行初始化(如SP、RAM等)。


※对外围模块中的寄存器进行处理。


※决定工作频率的系统时钟从DCO的最低频率开始工作。启动晶振时钟后,频率调整到目标值。


4 程序中如何复位


4.1软件初始化


在系统复位以后,用户就要进行软件初始化,用户软件必须根据应用的需求对MSP430进行初始化,它包括以下几个部分:


1、初始化SP,通常是RAM的顶部,也就是初始化堆栈指针,让它指向RAM的顶端。MSP430的RAM的堆栈是向下生长的。也就是最开始的时候堆栈指针是指向一个搞地址,然后随着用户不断的压栈,往里面存入数据的时候,SP的地址是往下减小的。


2、初始化看门狗定时器,也就是讲看门狗放入到一个根据系统需要的一个确定的状态,是使用它还是关闭它。即使使用看门狗的时候,看门狗定时的时间间隔是可以用户编程的。


3、配置外围模块,也就是配置一些外设资源。


4.2程序初始化


我们来看主函数,首先我们看到的是关闭看门狗程序,在这里,我需要说明一下,在MSP430单片机中,看门狗默认是开的,所以在初始化时我们需要关闭看门狗,当我们需要看门狗的时候再打开看门狗定时器。


第2行代码显示的是时钟(系统)初始化程序,其他的外围模块都是沿着时钟这个核心来执行的。所以我们有必要在开始的进行时钟初始化,具体的时钟初始化过程,我们会在后面的振荡器与系统时钟这一课详细讲解。


下面一行我们看到的是端口的初始化程序。在这里说下,给芯片上电时,我们大家都知道,芯片内部是有一个复位的,复位后,各个端口有一个固定的状态,但是在端口初始化的时候,我们可以根据我们的需要来设定端口的初始化。


然后,就是我们的外设资源的初始化了,我们在我们的系统中,需要用到什么外设资源,那么我们就需要对什么进行初始化,当然,我们也可以将时钟初始化改成系统初始化,然后将我们需要的外设资源初始化,放到里面,一起进行初始化。这个方法,在我们编写大的软件时,进行模块化编程的时候很受用。


到这里,我们的软件初始化就完成了。


5 硬件中如何设计


5.1 复位电路的设计


复位电路是单片机系统中不可缺少的部分,其好坏影响整个单片机应用系统的可靠性。同时,复位电路非常容易受到外部噪声的干扰。因此,复位电路的设计首先要保证整个应用系统的可靠性,其次是具有抗干扰能力。


复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后,还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。


图中的电路图,就是我们畅学电子MSP430核心板的复位电路,该电路图可靠性高,抗干扰能力强,具有非常广泛的应用。


5.2 掉电产生POR



为提高系统设计的可靠性,也可以采用专用集成电路提供复位。这张图便是采用专用集成电路的原理图。


这种集成电路一般除了能够提供上电复位信号,还可以提供按键手动复位和定时自动复位信号。由于MSP430系列单片机都有片内看门狗定时器能够实现看门狗功能,因此MSP430系列单片机只需要提供上电复位和按键手动复位即可。


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • PIC单片机控制的遥控防盗报警器电路

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 用NE555制作定时器

  • 如何构建一个触摸传感器电路

  • 基于ICL296的大电流开关稳压器电源电路

  • 基于TDA2003的简单低功耗汽车立体声放大器电路

    相关电子头条文章