MSP432输入输出模块

第6章MsP432微控制器输入输出模块

单片机中的输入输出模块是供信号输入、输出所用的模块化单元。MsP432单片机的片内输入输出模块非常丰富,典型的输入输出模块有:通用O端口、模/数转换模块、比较器E  定时器。本章重点讲述MSP432单片机的各个典型输入输出模块的结构、原理及功能,并针对  各个模块给出了简单的应用例程

6.1通用1/o端口

6.1.1MsP432微控制器端口概述

通用LO端口是单片机最重要也是最常用的外设模块。通用LO端口不但可以直接用于输入/输出,而且可以为MSP432单片机应用系统扩展提供必要的逻辑控制信号

MSP432单片机最多可以提供11个通用LO端口(P1-P10和PJ)。大部分端口有8个引脚,少数端口引脚少于8个。每个1/0引脚都可以独立地设置为输入或者输出方向并且每个LO引脚都可以独立地读取或者写人,所有的端口寄存器都可以独立地置位或者清零。

P1-P6引脚具有中断能力。从P1-P6端口的各个LO引脚引入的中断可以独立地使能,并且可以设置为上升沿或者下降沿触发中断。所有的P1端口的I/O引脚的中断都来源于同一个中断向量P1IV,同理,P2端口的中断源都来源于另一个中断向量P2IV,每个独立的端口可以进行字节访问,或者两个结合起来进行字节访问。端口P1/P2、P3/P4、P5/P6、P7/P8等结合起来分别叫作PA、PB、PC、PD等。当进行字操作写入PA口时,所有的16位数据都被写入这个端口,利用字节操作写入PA端口的低字节时,高字节保持不变;  类似地,利用字节指令写入PA端口高字节时,低字节保持不变。其他端口也是一样。当写入的数据长度小于端口的最大长度时,那些没有用到的位保持不变。所有端口都利用这个规则来访问,而中断向量寄存器,例如P1IV和P2IV,它们只能进行字节操作,也就是说,不存在中断向量寄存器PAIV

6.1.2通用O端口输出特性

基础知识:

在介绍MSP432单片机端口输出特性之前,首先介绍什么是灌电流和拉电流。简而言之,灌电流是外部电源输入单片机引脚的电流,外部是源,形象地称为灌入;  拉电流是单片机引脚输出的电流,单片机内部是源,形象地称为拉出。

MSP432单片机在默认输出驱动(PxDS.y=0即欠驱动强度)且单片机供电电压VCC为3v条件下,端口低电平和高电平的输出特性分别如图6-1和图6-2所示。其中,电流输入为正,输出为负。

低电平的测试条件示意图如图6-3所示。在低电平输出特性测试时,内部接地,外接可变电源,电流灌入单片机引脚,即La为灌电流。通过更改外部可变电源,测得MSP432单片机的低电平输出特性,由图6-1可知,在常温下,MSP432单引脚最大输入电流约为29mA。另外,在输出低电平时,单引脚输入电流越大,内部分压越大,因此,会相应拍高低电平时的输出电压。高电平的测试条件示意图如图6-4所示。在高电平输出特性测试时,内部接VCC,外接可变电源,电流拉出单片机引脚,即L为拉电流。通过更改外部可变电源,测得MSP432单片机的高电平输出特性,由图6-2可知,在常温下,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个引脚的输人/输出方向。8位在PUC之后都复位。使用输入或  者输出功能时,应该先定义端口的方向,输人/输出才能满足设计者的要求。作为输入时,只能  读;作为输出时,可读可写。

0:输人模式; 1:输出模式。

4.     
上拉/下拉电阻使能寄存器 PXREN

该寄存器的每一位可以使能相应LO引脚的上拉/下拉电阻。该寄存器需与输出寄存器配合使用.能完成上拉/下拉电阻的配置

0:上拉/下拉电阻禁止  1:上拉/下拉电阻使能

上拉电阻和下拉电阻的使用方法: 若需要将MSP432单片机的某一引脚配置为内电阻上拉,应首先怕、PxREN寄存器中的该位配置为1,再将PxOUT寄存器中的该位也配置为1,则实现内部电阻上拉;若需要将MSP432单片机的某一引脚配置为内部电阻下拉,应首先将PxREN寄存因中的该位配置为0,再将PxOUT寄存器中的该位也配置为0,则实现内部电阻下拉

5.     
输出驱动能力调节寄存器PxDs

P1Ds寄存器的每一位可使相关引脚选择全驱动模式和次驱动模式(减弱驱动能力)默认的是次驱动模式

0:次驱动模式       1:全驱动模式。

6.功能选择寄存器 PxSEL

P1-P6端口还有其他片内外设功能,为了减少引脚,将这些功能与芯片外的联系通过复用P1-P6引脚的方式来实现PxSEL用来选择引脚的I/O端口功能与外围模块功能

0:选择引脚为普通I/0功能;     1:选择引脚为外国模块功能

注意:设置PXSEL=1不会自动设置引脚的输入输出方式,其他外国模块功能雪要根据模块功能所要求的输入输出方向设置 PxDIRx位。例如,P4.2引脚复用3种功能: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口的8个引脚的中断触发沿。

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.5

PxIFG.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)转换的基础知识不是很了解,在  北

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值