DO OR DIE
MSP430 MSP430单片机输入/输出模块 通用I/O端口GPIO
一、MSP430单片机端口概述
●MSP430F5XX系列单片机最多可以提供12个通用I/O端口(P1~P11和PJ),大部分端口有8个引脚。
●MSP430F5529一共80个引脚,63个通用I/O端口。P1~P7共56个 + P8.0,P8.1,P8.2 + PJ.0,PJ.1,PJ.2,PJ.3。
●P1和P2引脚具有中断能力。
●端口配对:可以将端口P1/P2,P3/P4,P5/P6,P7/P8结合起来称为PA,PB,PC,PD。
○可以对每个独立的端口进行字节访问,或者将两个结合起来(PA)进行字访问。
○可以对PA口进行字操作,一次性写入16位数据。
○当写入的数据长度小于端口的最大长度时,那些没有用到的位保持不变。
二、通用I/O端口的输出特性
灌电流:外部电源输入单片机引脚的电流,外部是源,形象地称为灌入。
拉电流:单片机引脚输出的电流,单片机内部是源,形象地称为拉出。
1、端口输出模式
●MSP430单片机端口具有两种输出模式,可以通过PxDS.y
进行设置。
○当PxDS.y
控制位被配置为0时,即PxDS.y = 0
为欠驱动模式。(默认模式)
○PxDS.y = 1
为全驱动模式。
2、欠驱动模式输出特性
低电平
此时,单片机内部接地(IO置0),外部接可变电源。此时为灌电流。
●常温下,MSP430单个引脚最大输入电流约为19mA。(VCC = 3.0V)
●MSP430单片机外部所有器件总体输入电流不得超过100mA。(VCC = 3.0V)
●在输出低电平时,单引脚输入电流越大,内部分压将越大,因此会相应抬高低电平时的输出电压。
高电平
此时,单片机内部接VCC(IO置1),外部接可变电源。此时为拉电流。
●常温下,MSP430单个引脚最大输出电流约为19mA。(VCC = 3.0V)
●MSP430单片机外部所有器件总体输出电流不得超过100mA。(VCC = 3.0V)
●在输出高电平时,单引脚输入电流越大,内部分压将越大,因此会相应降低高电平时的输出电压。
3、全驱动模式输出特性
常温下,MSP430单个引脚强驱动模式输出最大输出/输入电流约为55mA。(VCC = 3.0V)
●但是,MSP430单片机外部所有器件总体输出/输入电流不得超过100mA。(VCC = 3.0V)
三、端口P1和P2
●端口P1和P2具有输入/输出、中断和外部模块功能。
●P1和P2每个端口由9个控制寄存器进行设置。
1、方向寄存器PxDIR
●方向寄存器PxDIR相互独立的8位分别定义了8个引脚的输入/输出方向。
●方向寄存器在PUC之后都被复位。
●应该先定义端口的方向,再使用输入或输出功能。
●默认为0,端口被设置为输入模式;1为输出模式。
MSP430的复位信号有2种:上电复位信号(POR)、上电清除信号(PUC)
MSP430复位信号POR与PUC
2、输入寄存器PxIN
●输入寄存器是CPU扫描I/O引脚信号的只读寄存器,用户不能对其写入,只能通过读取该寄存器的内容来获取I/O端口的输入信号,此时引脚的方向必须选定为输入。
●输入寄存器中的某一位为0,表示该位输入为低;某一位为1,表示该位输入为高。
●默认为undefined未定义
3、输出寄存器PxOUT
●该寄存器为I/O端口的输出缓冲寄存器。
●可以通过改变寄存器的内容来改变I/O口输出状态。
●在读取时,寄存器的内容与引脚方向无关。
●改变方向寄存器的内容,输出缓存的内容不受影响 。
●默认为undefined未定义
4、上拉/下拉电阻使能寄存器PxREN
Pullup or Pulldown Resistor Enable Registers
●每个PxREN寄存器中的每个位都启用或禁用相应I/O引脚的上拉或下拉电阻。 PxOUT寄存器中的相应位选择引脚是上拉还是下拉。
●
Bit = 0: 上拉或下拉电阻禁用
Bit = 1: 上拉或下拉电阻使能
●MSP430单片机引脚配置为内部电阻上拉/下拉
PxDIR | PxREN | PxOUT | I/O Configuration |
---|---|---|---|
0 | 0 | x | Input |
0 | 1 | 0 | Input with pulldown resistor |
0 | 1 | 1 | Input with pullup resistor |
1 | x | x | Output |
5、输出驱动强度寄存器PxDS
Output Drive Strength Registers
每个PxDS寄存器中的每个位选择完全驱动还是降低驱动强度。 默认设置为降低驱动强度。
Bit = 0: 欠驱动模式
Bit = 1: 全驱动模式
6、功能选择寄存器PxSEL
Function Select Registers
●P1和P2端口还有其他片内外设功能。端口引脚通常与其他外围模块功能复用。 每个PxSEL位用于选择引脚功能– I / O端口或外围模块功能。
●
Bit = 0: 选择引脚为普通I/O功能
Bit = 1: 选择引脚为外围模块功能
●设置PxSEL = 1不会自动设置引脚方向。 其他外围模块功能可能需要根据模块功能所需的方向来配置PxDIR位。
7、中断使能寄存器PxIE
Interrupt Enable Registers
●寄存器的每一位用以控制相应引脚的中断允许。
●寄存器的8位与端口的8个引脚一一对应。
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|
PxIE.7 | PxIE.6 | PxIE.5 | PxIE.4 | PxIE.3 | PxIE.2 | PxIE.1 | PxIE.0 |
●
Bit = 0: 该位禁止中断(默认)
Bit = 1: 该位允许中断
8、中断触发边沿选择寄存器PxIES
Interrupt Edge Select Registers
●每个PxIES位选择相应I/O引脚的中断触发沿。
Bit = 0: 上升沿触发
Bit = 1: 下降沿触发
●默认为undefined未定义
● NOTE: Writing to PxIES
Writing to P1IES or P2IES for each corresponding I/O can result in setting the corresponding interrupt flags.
9、中断标志寄存器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 |
●
Bit = 0: 无中断请求
Bit = 1: 有中断请求
●需要软件清除
四、端口P3~P11
●端口P3~P11没有中断功能,其他与P1,P2一样。
●由6个寄存器配置。