第6章MsP432微控制器输入输出模块
单片机中的输入输出模块是用于信号输入和输出的模块化单元。MsP432单片机片内输入输出模块非常丰富,典型的输入输出模块有:通用O端口、模/数转换模块、比较器E 定时器。本章重点介绍MSP432单片机各典型输入输出模块的结构、原理和功能 每个模块都给出了简单的应用程序例程
6.1通用1/o端口
6.1.1MsP432微控制器端口概述
通用LO端口是单片机最重要、最常用的外设模块。LO端口不仅可以直接用于输入/输出,还可以用于输出MSP为扩展单片机应用系统提供必要的逻辑控制信号
MSP432单片机最多可提供11个通用LO端口(P1-P10和PJ)。大多数端口有8个引脚,少数端口少于8个引脚。每个1/0引脚可以独立设置为输入或输出方向,每个引脚可以独立设置LO引脚可以独立读写,所有端口寄存器都可以独立定位或清零。
P1-P6引脚具有中断能力。从P1-P6端口的各个LO引脚引入的中断可以独立使能,可以设置为上升或下降的触发中断。所有的P1端口的I/O引脚的中断来自同一中断向量P1IV,同理,P端口的中断源来自另一个中断向量P2IV,字节访问可以在每个独立字节访问,也可以结合两个字节访问。端口P1/P2、P3/P4、P5/P6、P7/P8等结合起来分别叫作PA、PB、PC、PD等。写入字操作时PA所有的16位数据都写在这个端口,用字节操作写入PA端口低字节时,高字节保持不变; 类似地,用字节指令写入PA端口高字节时,低字节保持不变。其它端口也是如此。当数据长度小于端口的最大长度时,未使用的位置保持不变。使用此规则访问所有端口,并中断向量寄存器,如P1IV和P2IV,它们只能操作字节,也就是说,没有中断向量寄存器PAIV
6.1.22通用O端口输出特性
基础知识:
在介绍MSP在432单片机端口输出特性之前,首先介绍什么是灌装电流和拉电流。简而言之,灌装电流是外部电源输入单片机引脚的电流,外部是源,生动地称为灌装; 拉电流是单片机引脚输出的电流,单片机内部是源,生动地称为拉出。
MSP默认输出432单片机驱动(PxDS.y=0即欠驱动强度,单片机电源电压VCC为3v端口低电平和高电平的输出特性如图6-1和图6-2所示。其中,电流输入为正,输出为负。
低电平试验条件示意图如图6-3所示。测试低电平输出特性时,内部接地,外部可变电源,电流注入单片机引脚,即La为灌电流。通过改变外部可变电源来测量MSP从图6-1可以看出,432单片机的低电平输出特性,在MSP432单引脚最大输入电流约为29mA。此外,输出低电时,单引脚输入电流越大,内部压力越大。因此,高低电平时的输出电压会相应拍摄。高电平试验条件示意图如图6-4所示。测试高电平输出特性时,内部连接VCC,外部可变电源,电流拉出单片机引脚,即L为拉电流。通过改变外部可变电源来测量MSP图6-2显示了432单片机的高电平输出特性,常温下,MSP32单引脚最大输出电流约为31mA。此外,在输出高电平时,单引脚输出电流越大,内部压力越大,因此,输出电压会相应降低。
当PxDS.y当控制位置为1时,即单片机端口为强驱动模式。在强驱动模式下,端口的低电平和高电平输出特性如图6-5和图6-6所示。
在常温和强驱动模式下,MSP432单片机单引脚低电平和高电平的最大输出是±160mA。但是, MSP432单片机的总输入或输出电流仍不超过100mA。在1.8V 请参考相关芯片数据手册,在此不赘述低电平和高电平输出的条件下。
6.1.3端口P1-P6
端口P1-P6具有输入/输出、中断和外部模块功能,可通过设置自己的9个控制寄存器来实现。Px代表P1-P6。
1. 输入寄存器PxIN
输入寄存器是CPU扫描I/O引脚信号的只读寄存器,用户不能对其写入,只能通过读取该寄存器的内容获取I/O此时,引脚的方向必须选择为输入端口的输入信号。输入寄存器中的一个是
0示该位输人为低; 一个是1,说明该位输入高。
2. 输出寄存器 PXOUT
该寄存器为I/O端口输出缓冲寄存器。其内容可以像操作内存数据一样写入,以实现变化 I/O输出状态的目的。输出缓存的内容与引脚方向的定义无关。改变方向寄存器的内容, 输出缓存的内容不受影响。
0:低输出;1:高输出。
3. 方向寄存器 PXDIR
相互独立的8位分别定义了8个引脚的输人/输出方向。PUC然后复位。使用输入或 输出功能时,应首先定义端口的方向,以满足设计师的要求。作为输入,只能 读;作为输出,可读可写。
0:输人模式; 1.输出模式。
4. 上拉/下拉电阻使寄存器 PXREN
每个寄存器都能使相应的能量LO引脚的上拉/下拉电阻。寄存器应与输出寄存器一起使用.上拉/下拉电阻的配置可以完成
禁止上拉/下拉 1:上拉/下拉电阻
使用上拉电阻和下拉电阻: 若需要将MSP432单片机的某一引脚配置为内电阻上拉,应先恐惧,PxREN寄存器中的位置为1,然后将其分配到1PxOUT寄存器中的位置也配置为1,实现内部电阻的上拉;如有必要,MSP432单片机的一个引脚配置为内部电阻下拉,应首先拉PxREN该位置在寄存因中的配置为0,再将PxOUT寄存器中的该位也配置为0,则实现内部电阻下拉
5. 调节寄存器的输出驱动能力PxDs
P1Ds每个寄存器都可以相关引脚选择全驱动模式和次驱动模式(削弱驱动能力)默认为次驱动模式
0:次驱动模式 一、全驱动模式。
6.功能选择寄存器 PxSEL
P1-P6端口还有其他芯片内外设置功能。为了减少引脚,通过重用这些功能与芯片外的连接P1-P实现6引脚的方法PxSEL选择引脚I/O端口功能和外围模块功能
0:选择普通引脚I/0功能; 1:外国模块功能选择引脚
注意:设置PXSEL=1.引脚的输入输出模式不会自动设置。其他外国模块功能雪应根据模块功能要求的输入输出方向设置 PxDIRx位。例如,P4.2引脚复用三种功能:GPIO TA2CLK输入和MCLK输出。若需将P4.2引脚设为MCLK应将输出功能输出PSEL.2和P4DIR.2设置为1。在P4SEL.在2为1的前提下,P4DIR.2为0,则P4.2引脚的功能是 TA2CLK输入。请参考相关芯片的数据手册,设置每个引脚的具体功能。
7. 中断使能寄存器PxIE
寄存器的每个引脚都用于控制引脚是否允许中断。寄存器的定义如下:
7
6
5
4
3
2
1
0
PxIE.7
PxIE.6
PxIE.5
PxIE.4
PxIE.3
PxIE.2
PxIE.1
PxIE.0
0: 禁止中断 1:该位允许中断
8. 选择中断触发边缘的寄存器PxIES
如果允许Px口的某个引脚中断,还需定义该引脚的中断触发沿。该寄存器的8位 Px八个引脚的中断触发沿。
7
6
5
4
3
2
1
0
PxIES.7
PxIES.6
PxIES.5
PxIES.4
PxIES.3
PxIES.2
PxIES.1
PxIES.0
0:沿着相应标志的位置上升 0:沿着相应标志的位置下降
9. 中断标志寄存器PxIFG
该寄存器有8个标志位,它们含有相应引脚是否有待处理中断的信息,即相应引脚是否中断请求。如果Px当引脚从低电平跳到高电平时,允许中断引脚并选择上升边缘,PxIFG相应的位置会位置,说明引脚有中断。
7
6
5
4
3
2
1
0
PxIFG.7
PxIFG.6
<>PxIFG.5PxIFG.4
PxIFG.3
PxIFG.2
PxIFG.1
PxIFG.0
0:没有中断请求 1:有中断请求
6.1.4端口P7-P10、PJ
这些端口没有中断能力,其余功能与P1-P6端口一样,能实现输入/输出功能和外围模块功 k个端口有6个寄存器供用户使用,用户可通过这6个寄存器对它们进行访同和控制。每个 的6个寄存器分别为:输入寄存器(PxIN)、输出寄存器(PxOUT)、方向选择寄存器 PDR)、输出驱动能力调节寄存器(PxDs)、上拉/下拉电阻使能寄存器(PxREN)和功能选择寄存器(PxSEL)。具体用法同P1-P端口
6.1.5端口的应用
端口是单片机中最经常使用的外设资源。一般在程序的初始化阶段对端口进行配置,配 置时,先配置功能选择寄存器PxSEL,若为I/O端口功能,则继续配置方向寄存器PxDIR; 若为输人,则继续配置中断使能寄存器PxIE;若允许中断,则继续配置中断触发沿选择寄存器 PxlES
需要注意的是,P1-P6端口的中断为多源中断,即P1端口的8位共用一个中断向量P1IV,P端口的8位也共用一个中断向量P2Ⅳ。当Px端白上的8个引脚中的任何一个引脚有中断触发时,都会进入同一个中断服务程序。在中断服务程序中,首先应该通过PxIFG判断是哪一个引脚触发的中断,再执行相应的程序,最后还要用软件清除相应的PxIFG标志位。
【例6.1.1】在MSP432单片机系统中,P1.0、P1.1、P1.2发生中断后执行不同的代码。
/Port1IsR·/
vola PortI Handler(void) ∥P1口中断服务程序
if(PI IFG &BITO) ∥判断P1中断标志第0位
∥在这里是P1.0中断服务程序
{
………
}
if(Pl IFG S&BITI) ∥判断P1中断标志第1位
∥在这里是P1,1中断服务程序
{
………
}
if(P1 IFG&BIT2) ∥判断P1中断标志第2位
∥在这里是P1.2中断服务程序
{
………
}
P1 IFG=0: ∥清除P1所有中断标志位
【例6.1.2】利用软件循环查询P6.7引脚的输入状态,若P6.7输入为高电平,则使P1.0输出高电平;若P6.7输人为低电平,则使P1.0输出低电平。该程序可利用查询的方式检测按键是否按下。为了调试方便,P1.0引脚可接LED。
#include"msp.h"
int main(void)
{
WDTCTL=WDTPW|WDTHOLD; //关闭看门狗
PIDIR|=BIT0; //设P1.0为输出方向
P6DIR&=~BIT7; //设P6.7为输入方向
while(1)
{
if(P6IN&BIT7)
PIOUT|=BIT0;
else
P1OUT&=~BIT0;
}
}∥循环查询P6.7引脚输入状态
【例6.1.3】利用按键外部中断方式,实现反转P1.0引脚输出状态。P1.1选择GPIO功能,内部上拉电阻使能,且使能中断。当P1.1引脚产生下降沿时,触发P1端口外部中断,在中断服务程序中,反转P1.0口输出状态。按键外部中断实时性较高,用途非常广泛,可以处理对响应时间要求比较苛刻的事件。在【例6.1.2】程序中,若主循环一次的时间比较长,P6.7脚置位时间比较短,则有可能在一个主循环周期内漏掉一次或多次P6.7引脚置位事件,因在该种情况下,采用【例6.1.2】端口查询的方式,可能就无法满足设计的要求,可以采按键外部中断的方式实现。
#include"msp.h"
int main(void)
{
WDTCTL=WDTPW|WDTHOLD; //关闭看门狗
PIDIR|=BIT0;
P1DIR&=~£¨BIT1£©;
P1OUT=BIT1;
P1REN=BIT1;
P1IFG=0;
P1IE=BIT1;
P1IES=BIT1;
NVIC_ISER1=1<<((INT_PORT1-16)&13);
P2DIR|=0xFF;P2OUT=0;
P3DIR|=0xFF;P3OUT=0;
P4DIR|=0xFF;P4OUT=0;
P5DIR|=0xFF;P5OUT=0;
P6DIR|=0xFF;P6OUT=0;
P7DIR|=0xFF;P7OUT=0;
P8DIR|=0xFF;P8OUT=0;
P9DIR|=0xFF;P9OUT=0;
P10DIR|=0xFF;P10OUT=0;
_sleep();
while(1);
}
/PORT1 ISR/
voidPort1Handler(void)
{
volatile uint32_t i;
if(P1 IFG & BIT1)
P1OUT^=BIT0;
for(i=0;i<10000;i++);
P1IFG &=~BIT1;
}
例程解读:
对功耗有要求的系统,应将未使用的GPO口的电平固定
为了使MSP432单片机最大限度地实现低功耗,对MSP432单片机未使用的GPIO,应该将其设置为输出或者输入,并且将引脚的电平固定。可以通过外部电路将引脚连接至Vcc或者GND,也可使能内部上下拉电阻,将引脚电平固定。
对于MSP432单片机而言,大部分情况下,测量到的功耗与数据手册不符,均是由对MSP432单片机未使用的 GPIO处理不当引起的。在默认情况下,MSP432单片机的GPIO是作为输入的,其等效电路为推挽模式.
当GPIO引脚配置为输入引脚且外部电平处于浮动状态(0<Vin<Vcc)时,内部的 MOSFET管的导通电流本身就处于一个不稳定的值,会导致整体功耗的升高。另外,过高或过低的温度会加剧这种不稳定 且当供电电压升高时, MOSFET管本身的导通电流也会变大。故在高压和低温双重作用下,就 会出现功耗升高现象。
6.2 模/数转换模块ADC14
6.2.1 模/数转换概述
在MSP432单片机的实时控制和智能仪表等实际应用中,常常会遇到连续变化的物理量 如温度、流量、压力和速度等。利用传感器把这些物理量检测出来,转换为模拟电信号,再经 过模/数转换器(ADC)转换成数字量,才能够被MSP432单片机处理和控制。
对于很多刚刚接触单片机的读者,可能对模数(MD)转换的基础知识不是很了解,在 北进行简单的介绍。若对模数转换原理比较熟悉,基础知识可以略去不读
1. 模数转换基本过程
在ADC中,因为输入的模拟信号在时间上是连续的,而输出的数字信号是离散的,所以ADC在进行转换时,必须在一系列选定的瞬间(标轴上的一些规定点上)对输入的模拟信号采样,然后把这些采样值转换为数字量。因此,一般的模数转换过程是通过采样保持、量化和编码这3个步骤完成的,即首先对输入的模拟电压信号采样,采样结束后进入保持时同 在这段时间内将采样的电压量转换为数字量,并按一定的编码形式给出转换结果,然后开始下 次采样。
2. ADC的位数
代表ADC模块采样转换后输出代码的位数。例如一个14位的ADC模块,采 转换后的代码即为14位,表示数值的取值范围为0-16383
3. 分辨率
ADC模块的分辨率以输出二进制数的位数表示。从理论上讲,n位输出的ADC转换器能区分2n个不同等级的输入模拟电压,能区分输人电压的最小值为满量程输入的1/2n。在最大输入电压一定时,输出位数越多,量化单位越小,分辨率越高,因此,分辨率与ADC的位数有关 .例如一个8位ADC模块的分辨率为满刻度电压的1/256。如果满刻度输入电压为5V,该ADC模块的分辨率即为5V/256=20mV。
4. 量化误差
量化误差和分辨率是统一的,量化误差是由于有限数字对模拟数值进行离散取值(量化) 而引起的误差。因此,量化误差在理论上为一个单位分辩率,即±1/2LSB,这就表明实际输出的数字量和理论上应得到的输出数字量之间的误差小于最低有效位的一半。量化误差无法消除,但提高分辨率可以减少量化误差。
5.采样周期
采样周期是每两次采样之间的时间间隔。采样周期包括采样保持时间和转换时间。采样保持时间是指ADC模块完成一次采样和保持的时间;转换时间是指ADC模块完成一次模数转换 所需要的时间。在MSP432单片机的ADC14模块中,采样保持时间可通过控制寄存器进行设 置,而转换时间一般需要16个 ADCCLK的时间。
6.采样频率
采样频率也称为采样速率或者采样率,定义了每秒从连续信号中提取并组成离散信号的采样个数,用赫兹(Hz)来表示。采样频率的倒数是采样周期。为了确定对一个模拟信号的采样 频率,在此简单介绍采样定理。采样定理又称香农采样定理或者奈奎斯特采样定理,即在进行 模拟/数字信号的转换过程中,当采样频率s.max大于信号中最高频率分量fmax的2倍时 (fs.max>=2max),采样之后的数字信号能保留原始信号中的信息。在一般应用中,采样频率 应为被采样信号最高频率的5-10倍
7.采样保持电路
采样保持( Sample Hold,S/H)电路是模数转换系统中的一种重要电路,其作用是采集模拟输入电压在某一时刻的值,并在模数转换器进行转换期间保持输出电压不变,以供模数转长该电路存在的原因在于模数转换需要一定时间,在转换过程中,如果送给ADC的模拟量 入出模 化,则不能保证采样的精度。为了简单起见,在此只分析单端输入ADC的采样保持电路.
采样保持电路有两种工作状态:采样状态和保持状态。当控制开关S闭合时,输出跟随输入变化,称为采样状态;当控制开关S断 时,由保持电容C维持该电路的输出不变,称为保持状态
8.多通道同步采样和分时复用
大多数单片机都集成了8个以上 ADC通道,这些单片机内部的ADC模块大多是多通道分时复用的结构,其内部其实 只有一个ADC内核,依靠增加模拟开关的方法轮流使用ADC内核,所以,有多个 ADC的输入通道。MSP432单片机也采用种结构,如图6-10所示
在何种情况下适合使用多通道分时复ADC呢? 最重要的一点就是各通道的信号没有时间关联性。比如同时测量温度压力,就可以使用分时复用ADC。
同步采样可以完成以下两项特殊工作
1)同时采集具有时间关联性的多组信 图6-10MsP432集成的ADC14模块局部号。例如,在交流电能计量中,需要同时对电流和电压进行采样,才能正确得出电流电压波形的相位差,进而算出功率因数。
2)将N路独立ADC均匀错相位地对同一信号进行采样,可以“实质”上提高 N倍采样率(这与等效时间采样不同)。在实际应用中,当由于多种原因难以获取高采样率ADC时,就可以使用多个ADC同采样的方法来提高总的采样率。相比分立的多个ADC,集成在一个芯片上的同步ADC在均匀错相位控制方面更简单。 MSP432单片机内有高速14位ADC模块。因此,本节主要以ADC14模块为例,介绍模数转换模块。
2.2ADC14模块介绍
ADC14模块的特性如下:
1) 高达1Msps的最大转换率
-
无数据丢失的单调的14位转换器,可以通过软件选择8位、10位、12位和14位模数转换
-
采样周期可由软件或定时器编程控制的采样保持功能
-
通过软件或定时器启动
5 ) 可通过软件选择片内参考电压(1.2V、1.45V或2.5V)
- 可通过软件选择内部或外部参考电压;
7)高达32路可单独配置的外部输入通道,可选择单端输入或差分输
8)可为内部温度传感器、0.5AVCC和外部参考电压分配转换通道;
9)正或负参考电压通道可独立选择
-
换时钟源可选
-
具有单通道单次、单通道多次、序列通道单次和序列通道多次的转换模式
-
ADC内核和参考电压都可独立关闭;
-
具有38路快速响应的ADC中断
-
具有32个转换结果存储寄存器。
ADC14模块支持快速的14位模数转换。该模块具有14位的逐次渐进(SAR)内核、模拟输入多路复用器、参考电压发生器、采样及转换所需的时序控制电路和32个转换结果缓冲及控制寄存器。转换结果缓冲及控制寄存器允许在没有CPU干预的情况下,进行多达32路ADC采样、转换和保存。下面对ADC14内部各模块进行介绍
1. 14位ADC内核
ADC内核是一个14位的模/数转换器,并能够将结果存储在转换存储器中,其结构如图6 12中①所示。该内核采用两个可编程/选择的参考电压(VR+和VR-)作为转换的上限和下限 当输入模拟信号大于或等于VR+,时,ADC14输出满量程值3FFFh,而当输入信号小于或等于VR-时,ADC14输出0。输入模拟电压的最终转换结果满足公式(6-1)。
NADC=16384 X (Vin+ - Vr-)/( Vr+ - Vr-)
ADC14内核由两个控制寄存器ADC14CTL0和ADC14 CTL1配置,并可由ADC14ON使能。当 ADC14没有被使用时,为了节省电流消耗可关闭ADC14模块。ADC14的控制位只能在ADC14ENC=0时被修改。任何转换发生前必须将ADC14ENC置为1。
2. 模拟输入多路复用器
MSP432单片机的ADC14模块配置有32路外部输入通道和6路内部输入通道,其结构如 图6-12中②所示。38路输人通道共用一个转换器内核,当需要对多个模拟信号进行采样转换 时,模拟输入多路复用器分时地将多个模拟信号接通,即每次接通一个信号采样并转换,通过 这种方式实现对38路模拟输入信号进行测量和控制。
输入多路复用器是先开后合型的,这样可以减少通道切换时引入的噪声,其结构如图6-13 所示。输入多路复用器也是一个T形开关,能尽量减少通道间的合,那些未被选用的通道则 将被ADC模块隔离,中间节点和模拟地相连,可以使寄生电容接地,消除串扰。
3. 参考电压发生器
所有的模数转换器(ADC)和数模转换器(DAC)都需要一个基准信号,通常为电压ADC的数字输出表示模拟输人相对于它的基准的比率;DAC的数字输入表示模拟输出对于它的基准的比率。有的转换器具有内部基准,有的需要外加外部基准。
MSP32单片机的ADC14模块内置参考电源,MSP432P40lr单片机的ADCl4模块内部参考电压发生器可以产生3种可选的电压等级:1.2V、1.45V和2.5V。每一个参考电压都可以作内部参考电压或者输出到外部引脚Vref+。设置 REFON=1,将使能内部参考电压发生器,当REFVSEL=0时,内部参考电压为1.2V,当 REFVSEL=1时,内部参考电压为1.45N,当 REFVSEL=3时,内部参考电压为2.5V。内部参考模块在不使用时,可以关闭以降低功耗。如果ADC14 REFBURST=0,输出可以连续使用。如果ADC14 REFBURST=1,输出仅在ADC4转换期间可用。
ADC14模块的参考电压有6种可编程选择,分别为Vr+和Vr-的组合,其结构如图6-12中 ③所示。其中, Vr+从AVcc(模拟电压正端)、VREF+(AD转换器内部参考电源的输出正端) 和VREF+/ VeREF+ (外部参考源的正输入端)3种参考电源中选择。Vr-可以从AVss(模拟电压负端)和VeREF+ (A/D转换器参考电压负端,内部或外部)两种参考电源中选择
4. 采样和转换所需的时序控制电路
时序控制电路提供采样及转换所需要的各种时钟信号,包括ADC14CLK转换时钟、SAMP-CON采样及转换信号、SHT控制的采样周期、SHS控制的采样触发源选择、ADC14S5EL选择的内核时钟、ADC14DIV选择的分频系数等,其结构如图6-12中④所示。详细情况请参考相关寄 存器说明。在时序控制电路的指挥下,ADC14的各部件能够协调工作。
5. 转换结果缓冲及控制寄存器
ADC14模块包含32个32位转换结果缓冲寄存器ADC14MEMx和32个32位转换结果控制寄存器ADC4MCTLx,其结构如图6-12中⑤所示。32位转换结果缓冲寄存器用于暂存转换 果,32位转换结果控制寄存器用于控制选择与各缓冲寄存器相连的输入通道。设置合理的话 ADC14模块硬件会自动将控制寄存器所配置的输入通道的转换结果暂存在缓冲寄存器中。具体 请参考6.2.4节中ADC4MEMx和ADC4MCTIx寄存器的说明。
6.2.3 模块操作
ADC14的转换模式
ADC14模块有4种转换模式,可以通过 CONSEQX控制位进行选择,具体转换模式说明如表:
ADC14 CONSEQX
转换模式
操作说明
00
单通道单次转换
一个单通道转换一次
01
序列通道单次转换
一个序列多个通道转换一次
10
单通道多次转换
一个单通道重复转换
11
序列通道多次转换
一个序列多个通道重复转换
(1) 单通道单次转换模式
该模式对单一通道实现单次转换。 模数转换结果被写入由 CSTARTADDX 位定义的存储寄存器ADC4MEMx中。当用户利用软件使ADC14SC启动转换时,下一次转换可以通过简单地设置ADC4SC位来启动。当有其他任何触发源用于转换时,ADC14ENC位必须在每次转换之前置位。其他的采样输入 信号将在ADC4ENC复位并置位之前被忽略。
在此模式下,复位ADC14ENC位可以立即停止当前转换,但是,结果是不可预料的。为了得到正确的结果,可以测试ADC14BUSY位,当ADC14BUSY位为0时,再清除ENC位。同时设置CONSEQx=0和ADC14ENC=0可以立即停止当前转换,但是,转换结果是不可靠的
【例6.2.1】单通道单次转换举例。
分析:本实例采用单通道单次转换模式,参考电压对选择:VR+=AVcc、VR-=AVss,设置为12位的模数转换, ADC14采样参考时钟源选择内部默认参考时钟 MODCLK。在主函数中,ADC14在采样转换的过程中时,MSP432单片机进入低功耗模式以降低功耗。当采样转换完成,会自动进入ADC14中断服务程序,唤醒CPU并读取采样转换结果。最终实现当输入模拟电压信号大于0.5倍AVCC时,使P1.0输出高电平;否则,P1.0输出低电平。
程序请参考例程-1
(2) 序列通道单次转换模式
该模式对序列通道做单次转换。ADC14转换结果将顺序写入由 CSTARTADDX位定义的、以ADCMEMx开始的转换存储器中。当由ADC14MCTLx寄存器中ADC14EOS位定义的最后一个通道转换完成之后,整个序列通道转换完成。序列通道单次转换的流程图如图6-15所示。当在程序中使用ADC14SC位启动转换时,下一次转换可以通过简单地设置ADC14SC位来启动。当有其他任何触发源用于开始转换时,ADC14ENC位必须在每次转换之前置位。其他的采样输入信号将在ADC14ENC复位并置位之前被忽略。
在此模式下,如果ADC14E0S位置1,复位ADC4ENC,则在序列中的最后一次转换完成之后,转换立即停止。但是,如果在ADC14EOS位为0时,ADC14ENC复位并不能停止序列转换。同时设置 CONSEQX=0和ADC4ENC=0可以立即停止当前转换,但是,转换结果是不可靠的。
【例】序列通道单次转换举例
本实例采用序列通道单词转换模式,选用的采样序列通道为A0,A1,A2,A3,每个通道都选择AVCC和AVSS作为参考电压,采样结果被顺序存储在ADC14MEM0,ADC14MEM1, ADC14MEM2, ADC114MEM3中,本实例的最终采样结果存储在Aresults[]数组中。
程序请参考例程-2
(3) 单通道多次转换模式
单通道多次转换模式是在选定的通道上进行多次转换。模数转换的结果被存入由 CSTARTADDx位定义的ADC14MEMx寄存器中。在这种转换模式下,每次转换完成后必须读 ADC14MEMx寄存器的值,否则在下一次转换中ADC14MEMx寄存器的值会被覆盖。单通道 次转换模式的流程图如图6-16所示。在此模式下,复位ADC14ENC位则在当前转换完成之后 换立即停止。同时设置 CONSEQX=0和ADC4ENC=0可以立即停止当前转换,但是,转换结果是不可靠的。
【例6.2.3】单通道多次转换举例。
分析:本实例采用单通道多次转换模式,选择的采样通道为A1,参考电压选择AVcc AVss。在内存中开辟出8个16位内存空间 Al results,将多次采样转换结果循环存储在Al results【】数组中,
程序请参考例程-3
(4) 序列通道多次转换模式
序列通道多次转换模式用来进行多通道的连续转换。模数转换结果将顺序写入由CSDTADDX位定义的、以 ADCMEMx开始的转换存储器中。当由ADC14MCTx寄存器中ADC14 位定义的最后一个通道转换完成之后,一次序列通道转换完成,触发信号会触发下一次序 道转换。序列通道多次转换模式的流程图如图6-17所示
在此模式下,如果ADC14EOS位为1,复位ADC14ENC位,则在序列最后一次转换完成后,转换立即停止。但是,如果ADC14EOS位为0,则ADC14ENC复位并不能停止序列转,同时设置 CONSEQx=0和ADCI4ENC=0,可以立即停止当前转换,但是,转换结果是不可靠的。
【例6.2.4】
序列通道多次转换举例。
分析:本实例采用序列通道多次转换模式,选择的采样序列通道为A0、A1、A2和A3 个通道都选择AVcc和AVss作为参考电压,采样结果被自动顺序存储在ADC14MEM 0,ADC14MEM1、ADC14MEM2和ADC14MEM3中。在本实例中,最终将A0、A1、A2和A3 的采样结果分别存储在A0results[]、 Al results]、A2 results[]、A3 results[]数组中。下面给例程序代码
程序请参考例程-3
- 采样和转换
当采样输入信号SHI出现上升沿时将启动模数转换。SHI信号源可以通过SHSx位进行定义 有8种选择:ADC14SC、TA0_C1、TA0_C2、TA1_C1、TA1_C2、TA2_C1、TA2_C2、TA3_CI ADC14支持8位、10位、12位及14位分辨率模式,可以通过ADC14RES控制位进行选择, 模数转换分别需要9、11、14及16个ADCl4CLK周期。采样输入信号的极性用ISSH控制位来选择。 采样转换信号 SAMPCON可以来自于采样输入信号SH或采样定时器,能够控制采样的周期及转 换的开始。当 SAMPCON信号为高电平时采样被激活, SAMPCON的下降沿将触发模数转换。
(1) 扩展采样时序模式
当ADC14SHP=0时,采样信号工作在扩展采样时序模式。SHI信号直接作为 SAMPCON信号,并定义采样周期t_sample的长度。如果使用ADC内部缓冲区,需要声明采样触发,等待 ADC4 RDYIFG标志置1(表示ADC14本地缓冲参考值已置位),然后在取消分频之前将采样触 发设置为期望的采样周期。当ADC14VRSEL=0001或1111时,使用ADC内部缓冲器。当 SAMPCON为高电平时,采样被激活。 SAMPCON信号的下降沿与ADC4CLK同步后开始转换。
2)脉冲采样时序模式
当ADC4SHP=1时,采样信号工作在脉冲采样时序模式。SHI信号用于触发采样定时器 ADC14CTl0寄存器中的ADC14SHT0x和ADCl4SHTLx位用来控制采样定时器的间隔,该间隔定义 SAMPCON的采样周期t_sample的长度。采样定时器在与ADC14CIK同步后,在t_sample时间内继续保持SAMPCON信号为高电平,因此整个采样时间为t_sample加t-sync,采样时间由 ADC14SHT0x和ADCl4SHTx控制ADC14sHx位选择控制ADC14MCTL8~ADC4MCLT23的采 样时间,ADCl4SHT1x选择控制ADC14MCTL0ADC14MCTL7和ADC4MCL24ADC14MCTL31 的采样时间。
- 转换存储器
典型的模数操作通常用中断请求的方式来通知模数转换的结束,并需要在下一次ADC执行前将转换结果转存到另一位置。ADC14中的32个转换存储缓冲寄存器(ADC14MEMx)使得 ADC可以进行多次转换而不需要软件干预。这一点提高了系统性能,也减少了软件开销。
ADC14模块的每个ADC14MEMx缓冲寄存器都可通过相关的ADC14MCTLx控制寄存器来配置,为转换存储提供了很大的灵活性。ADC14 VRSEL控制位定义了参考电压,ADC14INCHx和 ADC14DIF控制位选择输入通道。当使用序列通道转换模式时,ADC14EOS控制位定义了转换序列的结束。当ADC14MCTL31中的ADC4EOS位未置1时,序列从 ADC14MEM31翻转 到ADC14MEM0。
CSTARTADDX控制位定义任意转换中所用到的ADC14MCTLx。如果是单通道单次转换模式 或者单通道多次转换模式, CSTARTADDX用于指向所用的单一ADC14MCTLx。如果选择序列通道单次转化模式或者序列通道多次转换模式, CSTARTADDX指向序列中第一个ADC14MCTLx位置,当每次转换完成后,指针自动增加到序列的下一个ADC14MCTLx。序列一直处理到最后的控制字节ADC14 MCTLX中的ADC14E0S置位, CSSTARTADD可以取值0h-1Fh,分别指向ADC14 MEMO- ADC14 MEM32
当转换结果写到选择的ADC14 MEMEx时,ADC14IFGx寄存器中相应的标志将置位。转换 结果ADC14MEMx又有两种存储格式。当ADC14DF=0时,转换结果是右对齐的无符号数,对 于8位、10位及12位分辨率,ADC14MEMx的高8位、高6位及高4位总是0;当ADC14DF=1 时,转换结果是左对齐,以补码形式存储,对于8位、10位及12位分辨率,在ADC14MEMx中相应的低8位、低6位及低4位总是0
5. 阈值比较器
阈值比较器能够在没有CPU干预的情况下监测模拟信号。通过ADC4MCTx寄存器中的ADC14WⅠNC位使能阈值比较。阈值比较器中断包括
1)如果ADC14转换的当前结果小于寄存器ADCl4L0中定义的低阈值,则ADC14L0中断标志(ADCl4 LOIFG)置1。
2)如果ADC14转换的当前结果大于寄存器ADC14H中定义的高阈值,则ADC14H中断 标志(ADC4HHFG)置1。
3)如果ADC14转换的当前结果大于或等于寄存器ADC140中定义的低阈值且小于或等于寄存器ADC14H中定义的高阈值,则ADC14N中断标志(ADC14 LINIFG)置1。
这些中断是独立于转换模式生成的。阈值比较器的中断标志位在ADC14IFGx置位之后更新。
ADC14中有两组阈值比较器的门限寄存器:ADC14L00、ADC14HIO,ADCl4LO1、ADC14Hl 1 转换存储控制寄存器(ADC14 MCTLX)中的ADC14 WINCTH位在两组门限寄存器之间进行选择。 当ADC4 WINCTH设置为0时,选择ADC14L00和ADC14HI0门限寄存器,当ADC14 WINCTH设置为1时,选择ADC14L01和ADC14HI1门限寄存器对模数转换结果进行比较。
ADC14LOx和ADC14HIx寄存器中的低阈值和高阈值必须以正确的数据格式表示。如果 ADC14DF=0,选择二进制无符号数据格式,则ADC4L0x和ADC14HIx寄存器中的阈值必须写为二进制无符号数值。如果ADC14DF=1,则选择带符号的二进制补码数据格式,那么寄存器 ADC14LOk和ADC14Hx中的阈值必须写为带符号的二进制补码。更改ADC14DF位或ADC4RES位可复位门限寄存器。
6. 使用片内集成温度传感器
如果需要使用MSP432片内集成的温度传感器,用户可以选择模拟输入通道 INCHX=31。与选择外部输入通道一样,需要进行其他的寄存器配置,包括参考电压选择、转换存储寄存器选择等。温度传感器典型函数仅仅作为个示例,实际的参数可以参考具体芯片的数据手册。当使用温度传感器时,采样周期必须大于5微秒。温度传感器的偏移误差比 较大,在大多数实际应用中需要进行校准。选择温度传感器会自动地开启片上参考电压发生器作为温度传感器的电源。使用温度传感器,REF模块中的REFON位必须置1温度传感器的参考电压设置与其他通道相同。
6.2.4 ADC14模块寄存器
ADC14模块寄存器
寄存器名称
缩写
类型
访问方式
偏移地址
初始状态
ADC14控制寄存器0
ADC14CTL0
读/写
字访问
OOOh
00000000h
ADC14控制寄存器1
ADC14CTL1
读/写
字访问
004h
00000030h
ADC14阈值比较器低阈值寄存器0
ADC14LO0
读/写
字访问
008h
00000000h
ADC14阈值比较器高阈值寄存器0
ADC14HI0
读/写
字访问
000Ch
00003FFFh
ADC14阈值比较器低阈值寄存器1
ADC14LO1
读/写
字访问
010h
00000000h
ADC14阈值比较器高阈值寄存器1
ADC14HI1
读/写
字访问
014h
00003FFFh
ADC14存储控制寄存器
ADC14MCTL0~31
读/写
字访问
018h-094h
00000000h
ADC14缓冲寄存器
ADC14MEM0~31
读/写
字访问
098h-114h
未定义
ADC14中断使能寄存器0
ADC14IER0
读/写
字访问
13Ch
00000000h
ADC14中断使能寄存器1
ADC14IER1
读/写
字访问
140h
00000000h
ADC14中断标志寄存器0
QDC14IFGR0
读
字访问
144h
00000000h
ADC14中断标志寄存器1
QDC14IFGR1
读
字访问
148h
00000000h
ADC14清除中断标志寄存器0
ADC14CLRIFGR0
写
字访问
14Ch
00000000h
ADC14清除中断标志寄存器1
ADC14CLRIFGR1
写
字访问
150h
00000000h
ADC14中断向量寄存器
ADC14IV
读
字访问
154h
00000000h
(1)ADC14控制寄存器0
以下为对各个寄存器的详细介绍:
注:灰色部分表示只有在ADC10ENC=0时,才能被修改
(2)ADC14控制寄存器1
注:灰色部分表示只有在ADC10ENC=0时,才能被修改
(3)ADC14阈值比较器低阈值寄存器0(ADC14LO0)
(4)ADC14阈值比较器高阈值寄存器0(ADC14HI0)
(5)ADC14阈值比较器低阈值寄存器01(ADC14LO1)
(6)ADC14阈值比较器高阈值寄存器1(ADC14HI1)
(7)ADC14存储控制寄存器(ADC14MCTLx)
(8)ADC14缓冲寄存器(ADC14MEMx)
(9)ADC14中断使能寄存器0(ADC14IER0)
(10)ADC14中断使能寄存器1(ADC14IER1)
(11)ADC14中断标志寄存器0(ADC14IFGR0)
(12)ADC14中断标志寄存器1(ADC14IFGR1)
(13)ADC14中断标志清除寄存器0(ADC14CLRIFGR0)
(14)ADC14中断标志清除寄存器1(ADC14CLRIFGR1)
(15)ADC14中断向量寄存器(ADC14IV)
3.比较器E
6.3.1比较器E介绍
比较器E模块( Comp_E)包含多达16个通道的比较功能,其具有以下特性:
1)反相和同相端输入多路复用器;
2)比较器输出可编程RC滤波器
3)输出提供给定时器A捕获输入
4)端口输人缓冲区程序控制
5)中断能力;
6)可选参考电压发生器、电压滞后发生器;
7)外部参考电压输入
8)超低功耗比较器模式
9)中断驱动测量系统,支持低功耗运行。
知识点:比较器E是一个实现模拟电压比较的片内外设,在工业仅表、手持式仪表等 产品的应用中,可以实现多种测量功能,如测量电流、电压、电阻和电容,进行电池检测 以及产生外部模拟信号,也可结合其他模块实现精确的模数转换功能。
比较器E由16个输入通道、模拟电压比较器、参考电压发生器、输出滤波器和一些控制单元组成,主要用来比较模拟电压“+"输入端和“一”输入端的电压大小关系,然后设置输出信号 CEOUT的值。如果“+”输入端电压高于“-”输入端电压,输出信号 CEOUT置高,反之, CEOUT拉低。通过CEON控制位,可控制比较器E的开启和禁止(当CEON=1时 Comp_E开启;当CEON=0时,Comp_E禁止)。当比较器E不使用时,应该将其禁止,以减少电流的消耗。当比较器E禁止时,Comp_E输出低电平。
(1) 模拟输入开关
模拟输入开关通过 CEIPSELx和 CEIMSELx控制位控制模拟信号的输入,每个输入通道都相对独立的,且都可以引入比较器E的“+”输入端或“-”输入端。通过 CESHORT控制位可以将比较器E的模拟信号输入短路。比较器E的输入端也可通过 CERSEL和CEEX控制位的配合引入内部基准电压生成器产生的参考电压
通过相应寄存器的配置,比较器E可进行如下模拟电压信号的比较
·两个外部输入电压信号的比较;
·每个外部输入电压信号与内部基准电压的比较。
(2)参考电压发生器
参考电压发生器通过接入梯形电阻电路或内部共享电压来达到产生不同参考电压VREF的目的。如图6-23所示, CERSX控制位可选择参考电压的来源。若 CERSX为10,内部梯形电阻电路的电压来源于内部共享电压,内部共享电压可通过 CEREFLX控制位产生1.2V、2.0V或2.5V电压;若 CERSX为01,内部梯形电阻电路电压来源Vcc,可通过CEON实现参考电源的开关; 若 CERSX为00或11,内部梯形电阻电路无电源可用,被禁止。若 CERSX为11,参考电压来源于内部共享电压;当 CERSX不为11时,当 CEMRVS为0且 CEOUT为1时,参考电压来自Vm;当 CEMRVS和 CEOUT均为0时,参考电压来自Vn。当梯形电阻电路可用时,可通过CERES1和 CEREFO控制位对参考电压源进行分压,分压倍数可为1/5、2/5、3/5、45、14314、1/3、2/3、1/2和1。建议在更改 CEREFLx设置之前,设置 CEREFLx=00。 CEMRVS控制位实现对控制V电压的来源信号的控制。若 CEMRVS控制位为0, CEOUT控制VREF电压信号的来源;若CEMRVS的控制位为1,CEMRVL控制位控制VREF电压信号的来源。
(3) 内部滤波器
比较器E的输出可以选择使用或不使用内部RC滤波器。当CEF控制位设为1时,比较器输出信号经过RC滤波器,反之,不使用RC滤波器。如果在比较器的输入端,模拟电压的电压差很小,那么比较器的输出会产生振荡。 当比较器“+”输入端的电压减少并越过“-”输入端参考比较电压时,若比较器输出没有经过内部滤波器的过滤,在电压穿越的时刻,比较器输出将会产生较大的振荡 ,若比较器输出经过内部滤波器的过滤,在电压穿越的时刻,比较器的输出振荡较小。
(4)比较器E中断
比较器E具有一个中断标志位 CEIFG和一个中断向量CEIV。通过CEIES寄存器可以选择在比较器输出的上升沿或下降沿置位中断标志位。如果CEIE被置位,CEIFG将产生中断请求
(5)比较器E测量电阻
被对被测电阻的测量过程如下:
1) 将Px.x引脚拉高,通过标准参考电阻Rref对电容进行充电
2) 将Px.x引脚拉低,通过标准参考电阻Rref对电容进行放电
3) 再将Px.x引脚拉高,通过标准参考电阻Rref对电容进行充电
4) 之后将Px.y引脚拉低,通过被测电阻 Rmeas对电容进行放电
注意:
1) 当Px.x和Px.y引脚不用时,通过CEPDx控制位将其设为输入高阻状态
2) 比较器输出需要使用内部滤波器,减少开关噪声
3) 定时器A用来捕获电容的放电时间
(6)利用比较器E实现电容触摸按键原理
首先,人体是具有一定电容的。中间圆形的为铜,我们可以称之为“按键”,在这些按键中会引出根导线与单片机相连,单片机通过这些导线来检测是否有按键“按下”(检测的方法将在后面介绍);左边外围也是铜 ,不过外围的这些铜是与大地( Ground)相连的。在“按键”和外围的铜之间有空隙(我们可以称为空隙d)。当没有手指接触时,只有一个电容Cp,当有手指接触时,“按键”通过手指就形成了电容Cf。由于两个电容是并联的,所以手指接触“按键”前后,总电容的变化率为C%=((Cp+ Cf)-Cp)/Cp=Cf/Cp。
6.3.2 比较器E控制寄存器
比较器E控制寄存器汇总列表:
寄存器
简写
类型
偏移地址
比较器E控制寄存器0
CExCTL0
读/写
0x0000
比较器E控制寄存器1
CExCTL1
读/写
0x0002
比较器E控制寄存器2
CExCTL2
读/写
0x0004
比较器E控制寄存器3
CExCTL3
读/写
0x0006
比较器E中断控制寄存器
CExINT
读/写
0x000C
比较器E中断向量寄存器
CExIV
读
0x000E
(1) 比较器E控制寄存器0(CExCTL0)
(2) 比较器E控制寄存器1(CExCTL1)
(3) 比较器E控制寄存器2 (CExCTL2)
(4) 比较器E控制寄存器3 (CExCTL3)
(5) 比较器E中断控制寄存器 (CExINT)
(6) 比较器E中断向量寄存器 (CExIV)
6.4定时器
定时器模块是MsP432单片机中非常重要的资源,可以用来实现定时控制、延时、频率测量、脉宽测量以及信号产生等。此外,还可以在多任务的系统中作为中断信号,以实现程序的 切换。例如在MSP432单片机实时控制和处理系统中,需要每隔一段时间就对处理对象进行采样,再对获得的数据进行处理,这就要用到定时信号。
一般来说,MSP432单片机所需的定时信号可以用软件和硬件两种方法来获得
软件定时一般根据所需要的时间常数来设计一个延时子程序。延时子程序包含一定的指设计者要对这些指令的执行时间进行严密的计算或者精确的测量,以便确定廷时时间是否 符合要求。当时间常数比较大时,常常将延时子程序设计为一个循环程序,通过循环常数和循 环体内的指令来确定延时时间。这样,延时子程序结束以后,可以直接转入下面的操作(比如 采样),也可以用输出指令作为定时输出。这种方法的优点是节省硬件,所需时间可以灵活调 整。主要缺点是执行延时程序期间,CPU一直被占用,降低了CPU的利用率,也不容易提供多 作业环境。另外,设计延时子程序时,要用指令执行时间来拼凑延时时间,显得比较麻烦。不 过这种方法在实际中还是经常使用的。尤其是在已有系统上做软件开发时,或延时时间较小而 重复次数又有限时,常用软件方法实现定时。
硬件定时利用专门的定时器件作为主要实现器件,在简单的软件控制下,产生准确的延时 间。这种方法的主要思想是根据需要的定时时间,用指令对定时器设置定时常数,并用指令 启动定时器,使定时器开始计数,计数到确定值时,便自动产生一个定时输出。在定时器开始工作以后,CPU不去管它,而可以去做别的工作。这种方法最突出的优点是计数时不占用CP的时间,并且,如果利用定时器产生中断请求,可以建立多作业环境,大大提高CPU的利用率。而且定时器本身的开销并不是很大,因此,这种方法得到广泛应用
MSP432单片机的定时器资源非常丰富,包括看门狗定时器(WDT)、定时器A( Timer_ A)、 12位定时器( Timer32)和实时时钟(Real-Time)等。这些模块除了具有定时功能外,还各自具有一些特殊的用途,在应用中应根据需要选择合适的定时器模块。
MSP32单片机的定时器模块功能如下。
1)看门狗定时器:基本定时,当程序发生错误时执行一个受控的系统重启动
2)16位定时器A:基本定时,支持捕获输入信号、比较产生PWM波形等功能
3)32位定时器:基本定时,功能基本同定时器A,但比定时器A灵活,功能更强大
4)实时时钟:基本定时,日历功能。
下面分别介绍这些定时器
6.4.1看门狗定时器
今在工业控制现场,往往会由于供电电源、空间电磁干扰或其他的原因引起强烈的干 这些干扰作用于数字器件,极易使其产生错误动作,引起单片机程序运行紊乱,若不选行 有效的处理,程序就不能回到正常的运行状态。为了保证单片机的正常工作,一方面,要 减少干扰源对单片机的影响;另一方面,在单片机受到影响之后要能尽快恢复。看门狗就起到 了这个作用。看门狗的用法:在正常工作期间,一次看门狗定时时间将产生一次期间复位。如 果通过编程使看门狗定时时间稍大于程序中主循环执行一遍所用的时间,并且在程序执行过程 中都有对看门狗定时器清零的指令,使计数值重新计数,程序正常运行时,就会在看门狗定时 时间到达之前对看门狗清零,不会产生看门狗溢出。如果由于外界干扰使程序运行紊乱,则不 会在看门狗定时时间到达之前执行看门狗清零指令,看门狗就会产生溢出,从而产生单片机复 位,CPU需要重新运行用户程序,这样程序就又可以恢复正常运行。
知识点:
MSP432单片机内部集成了看门狗定时器,既可作为看门狗使用,也可为产生时间间隔进行定时。当用作看门狗时,若定时时间到,将产生一个系统复位信号;如果用户应用程序中不需要看门狗,可将看门狗定时器用作一般定时器使用,在选定的时间间隔到达时,将发生定时中断
看门狗定时器具有如下特点
1)软件可编程的8种时间间隔选择;
2)看门狗模式
3)定时计数模式
4)对看门狗控制寄存器的更改受口令保护,若口令输入错误,则控制寄存器无法更改
5)多种时钟源供选择
6)可选择关闭看门狗以减少功耗;
7)时钟故障保护功能
MSP432单片机 的看门狗定时器由中断产生逻辑单元、看门狗定时计数器、口令比较单元、看门狗控制寄存器、参考时钟选择逻辑单元等构成
1. 看门狗定时计数器( WDTCNT
看门狗定时计数器是一个32位增计数器,不能通过软件直接访问其计数值。软件可通过看门狗控制寄存器( WDTCTL)控制看门狗定时计数器及配置其产生的时间间隔。看门狗定时计 数器的参考时钟源可通过 WDTSSEL控制位配置为 SMCLK、ACLK、Ⅵ LOCLK或BCLK,产生的时间间隔可通过WDTIS控制位选择。
2. 看门狗模式
数到达之前,需要通过软件设置或暂停WDT。例如,如果 SMCLK默认来源于设置为3Ma的DCO,则会产生大约10.92ms的看门狗间隔窗口。用户必须在看门狗复位时间间隔期满或另1个复位信号产生之前,配置、停止或清除看门狗定时器。当看门狗定时器被配置工作在看门模式时,利用一个错误的口令密码操作看门狗控制寄存器( WDTCTL)或选择的时间间隔期清 都将产生一个PUC复位信号,它可将看门狗定时器复位到默认状态。
3. 定时计数模式
当 WDTTMSEI控制位选择为1时,看门狗定时器被配置为定时计数模式。这个模式 可以用来产生周期性中断,在定时计数模式下,当选定的时间间隔到来时,将置位看门狗定时计数 中断标志位(WDmG),但并不产生PUC复位信号。当看门狗定时计数中断允许控制位 (WDTE)置位,而且在NVC中启用看门狗定时计数中断时,CPU将响应 WDTIFG中断请求
中断请求被响应后,单片机将自动清除看门狗定时计数中断标志位。当然,也可通过软件手动
清除看门狗定时计数中断标志位。
4.看门狗定时器中断
看门狗定时器利用以下两个寄存器控制看门狗定时器中断
1)看门狗中断标志位 WDTIFG
2)看门狗中断允许控制位WDTE。
当看门狗定时器工作在看门狗模式时,看门狗中断标志位 WDTIFG来源于一个复位向量中 断。复位中断服务程序可利用看门狗中断标志位 WDTIFG来判定看门狗定时器是否产生了一个 系统复位信号。若 WDTIFG标志位置位,看门狗定时器产生一个复位条件,要么复位定时时间 到,要么口令密码错误 当看门狗定时器工作在定时计数模式时,一且定时时间到,将置位看门狗中断标志位 WDTIFG。若WTDE使能,则可响应看门狗定时计数中断。
5时钟故障保护功能
看门狗定时器提供了一个时钟故障保护功能,确保在看门狗模式下,参考时钟不失效,这就意味着低功耗模式将有可能影响看门狗定时器参考时钟的选择。如果 SMCLK或ACLK作为定 时器参考时钟源时失效,看门狗定时器将自动选择VLOCLK作为其参考时钟源。当看门狗定时 器工作于定时计数模式时,看门狗定时器没有时钟故障保护功能
6低功耗模式下的看门狗操作
MSP432单片机具有多种低功耗模式,在不同的低功耗模式下,启用不同的时钟信号。程序的需要以及所选时钟的类型决定了看门狗定时器的配置,例如如果用户想用低功耗模式3 LPM3),需要将时钟源设置为BCLK或 VLOCLK。当不需要看门狗定时器时,可利用 DTHOLD控制位关闭看门狗计数器( WDTCNT),以降低单片机功耗。
6.4.2定时器A( Timer A)
知识点: Timer A为16位定时器,具有7个捕获比较寄存器。 Timer A支持多路捕获比较、PWM输出和定时计数。 Timer A也具有丰富的中断能力,当定时时间到或满足捕获比较条件时,将可触发 Timer A中断
定时器A有如下特点
1)4种运行模式的异步16位定时/计数器
2)参考时钟源可选择配置
3)7个可配置的捕获/比较寄存器
4)可配置的PWM输出;
5)异步输入和输出锁存;
6)具有可对 Timer A中断快速响应的中断向量寄存器。
Timer A定时器主要分为两个部分:主计数器和捕获/比较模块。主计数器负责定时、计时或计数,计数值(TAxR寄存器的值)被送到各个捕获/比较模块中,它们可以在无须CPU干预的情况下根据触发条件与计数器值自动完成某些测量和输出功能。只需定时、计数功能时,可以只使用主计数器部分。而在PwM调制、利用捕获测量脉宽、周期等应用中,还需要捕获/比较模块的配合
值得注意的是,MP432单片机的定时器A是由多个形式相近的模块构成的,每个定时器模块又具有不同个数的捕获/比较器。它们的命名形式分别为TAx、 TAxCCRx(x=0、1、……,具体数目与具体型号有关),例如,TA0、 TAOCCRO、 TAOCCR4、TAI、TA1CCRO、 TAICCR1等
1.16位定时器原理
6位定时器的计数值寄存器TAR在每个时钟信号的上升沿进行增加/减少,可利用软件读 取TAR寄存器的计数值。此外,当定时时间到,并且产生溢出时,定时器可产生中断。置位定时器控制寄存器中的 TACLR控制位可自动清除TAR寄存器的计数值;同时,在增减计数模式下,清除了时钟分频器和计数方向。
(1) 时钟源选择和分频器
定时器的参考时钟源可以来自内部时钟ACLK、 SMCLK,或者来自 TACLK、 INCLK引脚输 入,可通过TAEL控制位进行选择。选择的时钟源首先通过D控制位进行1、2、4、8分频 对于分频后的时钟,可通过 TAIDEX控制位进行1、2、3、4、5、6、7、8分频。
(2) Timer A工作模式
Timer A共有4种工作模式:停止模式、增计数模式、连续计数模式和增减计数模式,具体工作模式可以通过MC控制位进行选择
Timer工作模式配置列表
MC控制位配置值
Timer_A工作模式
描述
00
停止模式
Timer_A停止
01
增计数模式
Timer_A从0到TAxCCR0重复计数
10
连续计数模式
Timer_A从0到0FFFFh重复计数
11
增减计数模式
Timer_A从0增计数到TAxCCR0之后减数到0,循环往复
1) 停止模式
停止模式用于定时器暂停,并不发生复位,所有寄存器现行的内容在停止模式结束后都可用。当定时器暂停后重新计数时,计数器将从暂停时的值开始以暂停前的计数方向计数。例如,停止模式前, Timer A定时器工作于增减计数模式并且处于下降计数方向,停止模式后, Timer_A仍然工作于增减计数模式下,从暂停前的状态开始继续沿着下降方向开始计数。如若不想这样,则可通过 TAXCTL中的 TACLR控制位来清除定时器的计数及方向记忆特性。
2) 增计数模式
比较寄存器 TAXCCR0用作 Timer A增计数模式的周期寄存器,由于 TAxCCRO为16位寄存器, 所以在该模式下,定时器A连续计数值应小于0FFh。 TAXCCRO的数值定义了定时的周期,计数 器TAXR可以增计数到 TAXCCRO的值,当计数值与 TAxCCRO的值相等(或定时器值大于TAC CR0的值)时,定时器复位并从0开始重新计数。增计数模式下的计数过程如图6-33所示。当定时器计数值计数到 TAxCCRO时,置位CRO中断标志位CIFG。当定时器从 TAxCCRI计数到0时,置位 Timer A中断标志位 TAIFG。
3) 连续计数模式
在连续计数模式下, Timer A定时器增计数到 OFFFFh之后从0开始重新计数,如此往复。当定时器计数值从0FFFh计数到0时,置位 Timer A中断标志位 TAIFG
连续计数模式的典型应用如下。
① 生多个独立的时序信号:利用捕获比较寄存器捕获各种其他外部事件发生的定时器数据。
② 产生多个定时信号:在连续计数模式下,每完成一个 TAxCCRn(其中n取值为0~6)计数 间隔,将产生一个中断,在中断服务程序中,将下一个时间间隔计数值赋给 TAxCCRn,图6-37表示了利用两个捕获比较寄存器 TAxCCRO和 TAxCCR1产生两个定时信号t和t1。在这种情况下, 定时完全通过硬件实现,不存在软件中断响应延迟的影响
4) 增减计数模式
若需要对称波形的情况,可以使用增减计数模式。在该模式下,定时器先增计数到TAx CRI0的值,然后反方向减计数到0。计数周期仍由 TAXCCRO定义,它是 TAxCCRO值的2倍。
注意:
在增减计数模式的过程中,也可以通过改变 TAXCCRO的值来重置计数周期。当 定时器工作在减计数的状态下时,更改了 TAxCCRO的值,计数器将继续进行减计数,直到 计数到0,新