第4章数字IO1Word下载.docx
《第4章数字IO1Word下载.docx》由会员分享,可在线阅读,更多相关《第4章数字IO1Word下载.docx(17页珍藏版)》请在冰豆网上搜索。
注意:
数字I/O脚是通过映射在数据空间的控制寄存器来控制的,与器件的I/O空间无任何关系。
4.3数字I/O端口控制寄存器
数字输入/输出模块有两类,共9个控制寄存器。
与其他片内外设控制寄存器一样,这些寄存器被映射到数据空间,地址从7090h~709Fh。
对寄存器中所有保留位是不可操作的,读时位0,写对它无影响。
当复用I/O引脚被配置为外设功能或通用I/O(GPIO)输出时,引脚状态可以通过读I/O数据寄存器来获取。
表5-1列出了数字I/O端口模块所用的控制寄存器单元。
表5-1数字I/O端口模块控制器列表
地址
控制寄存器
说明
7090h
MCRA
I/O端口复用控制寄存器A
709Ch
PCDATDIR
I/O端口C数据和方向寄存器
7092h
MCRB
I/O端口复用控制寄存器B
709Eh
PDDATDIR
I/O端口D数据和方向寄存器
7094h
MCRC
I/O端口复用控制寄存器C
7095h
PEDATDIE
I/O端口E数据和方向寄存器
7098h
PADATDIR
I/O端口复A数据和方向寄存器
7096h
PFDATDIR
I/O端口F数据和方向寄存器
709Ah
PBDATDIR
I/O端口B数据和方向寄存器
4.3.1I/O端口复用控制寄存器
LF2407共有3个I/O端口复用控制寄存器:
MCRA、MCRB、MCRC。
(1)I/O端口复用控制寄存器A地址:
7090h
表4-2数字I/O端口复用控制寄存器A(MCRA)的位定义
位
位名称
引脚功能选择
MCRA.n=1(基本功能)
MCRA.n=0(I/O口功能)
MCRA.0
SCITXD
IOPA0
1
MCRA.1
SCIRXD
IOPA1
2
MCRA.2
XINT1
IOPA2
3
MCRA.3
CAP1/QEP1
IOPA3
4
MCRA.4
CAP2/QEP2
IOPA4
5
MCRA.5
CAP3
IOPA5
6
MCRA.6
PWM1
IOPA6
7
MCRA.7
PWM2
IOPA7
8
MCRA.8
PWM3
IOPB0
9
MCRA.9
PWM4
IOPB1
10
MCRA.10
PWM5
IOPB2
11
MCRA.11
PWM6
IOPB3
12
MCRA.12
T1PWM/T1CMP
IOPB4
13
MCRA.13
T2PWM/T2CMP
IOPB5
14
MCRA.14
TDIRA
IOPB6
15
MCRA.15
TCLKINA
IOPB7
TMS320LF240x的端口均为8位,而MCRA为16位,因此控制了IOPA和IOPB两个I/O端口的设置。
(2)I/O端口复用控制寄存器B地址:
7092h
表4-3数字I/O端口复用控制寄存器B(MCRB)的位定义
MCRB.n=1(基本功能)
MCRB.n=0(I/O口功能)
MCRB.0
W/
IOPC0
MCRB.1
IOPC1
MCRB.2
SPISIMO
IOPC2
MCRB.3
SPISIMI
IOPC3
MCRB.4
SPICIK
IOPC4
MCRB.5
IOPC5
MCRB.6
CANTX
IOPC6
MCRB.7
CANRX
IOPC7
MCRB.8
XINT2/ADCSOC
IOPD0
MCRB.9
EMU0
保留
MCRB.10
EMU1
MCRB.11
TCK
MCRB.12
TDI
MCRB.13
TDO
MCRB.14
TMS
MCRB.15
TMS2
TMS320LF240x的端口均为8位,而MCRA为16位,因此控制了IOPC和IOPC两个I/O端口的设置。
(3)I/O端口复用控制寄存器C地址:
7094h
Notes:
1)DuetotheabsenceoftheW/R/IOPC0,BIO/IOPC1,andSPISTE/IOPC5pins,bits0,1,and5ofMCRBmustbetreatedasreservedinthe2402A.
2)DuetotheabsenceofSPIandCANmodules(in2402A),bits2,3,4,6,and7ofMCRBshouldalwaysbewrittenwith0.ThecorrespondingpinsworkasGPIOpinsonly.
3)DuetotheabsenceoftheCANmoduleandW/Rfunctionin2404A,bits0,6,and7ofMCRBshouldalwaysbewrittenwith0.ThecorrespondingpinsworkasGPIOpinsonly.
4)DuetotheabsenceoftheW/Rfunctionin2406A,bit0ofMCRBshouldalwaysbewrittenwith0.ThecorrespondingpinworksasaGPIOpinonly.
表4-3数字I/O端口复用控制寄存器C(MCRC)的位定义
MCRC.0
CLKOUT
IOPE0
MCRC.1
PWM7
IOPE1
MCRC.2
PWM8
IOPE2
MCRC.3
PWM9
IOPE3
MCRC.4
PWM10
IOPE4
MCRC.5
PWM11
IOPE5
MCRC.6
PWM12
IOPE6
MCRC.7
CAP4/QEP3
IOPE7
MCRC.8
CAP5/QEP4
IOPF
MCRC.9
CAP6
IOPF1
MCRC.10
T3PWM/T3CMP
IOPF2
MCRC.11
T4PWN/T4CMP
IOPF3
MCRC.12
TDIRB
IOPF4
MCRC.13
TCLKINB
IOPF5
MCRC.14
IOPF6
MCRC.15
TMS320LF240x的端口均为8位,而MCRA为16位,因此控制了IOPE和IOPF两个I/O端口的设置。
4.4数据和方向控制寄存器
6个数据和方向控制寄存器(PXDATDIR),包含两个功能位。
(1)I/O方向位
如果引脚被选择了通用I/O,方向位决定了是输入(0)还是输出
(1)。
(2)I/O数据位
如果引脚被选择了通用I/O,当方向选为输入,则可从该位上读取数据,当方向选为输出,则可向该位写入数据。
如I/O端口被选择作通用I/O引脚,数据和方向控制寄存器可以控制数据和I/O引脚的数据方向。
如I/O端口被选择作外设功能时,数据和方向控制寄存器的设置对相应的引脚无影响。
(1)I/O端口A数据和方向控制寄存器(PADATDIR),
地址:
位15-8:
AnDIRPA7-PA0的数据方向
0:
相应引脚配置为输入
1:
相应引脚配置为输出
位7-0:
IOPA7-IOPA0
如果AnDIR=0,引脚配置为输入
0-相应引脚的电平读为低电平
1-相应引脚的电平读为高电平
如果AnDIR=1,引脚配置为输出
0-设置相应引脚,使其输出信号为低电平时有效
1-设置相应引脚,使其输出信号为高电平时有效
如果I/O端口用作通用I/O,则必须对数据和方向寄存器进行初始化设置,为输入还是输出。
寄存器PADATDIR的数据位与对应I/O引脚
(2)I/O端口B数据和方向控制寄存器(PBDATDIR),
BnDIR
IOPBn
如果BnDIR=0,引脚配置为输入
如果BnDIR=1,引脚配置为输出
寄存器PBDATDIR的数据位与对应I/O引脚
(3)I/O端口C数据和方向控制寄存器(PCDATDIR),
CnDIR
IOPCn
如果CnDIR=0,引脚配置为输入
如果CnDIR=1,引脚配置为输出
寄存器PCDATDIR的数据位与对应I/O引脚
(4)I/O端口D数据和方向控制寄存器(PDDATDIR),
位15~9:
保留位
位8DnDIR
位7-1:
位0:
IOPDn
如果DnDIR=0,引脚配置为输入
如果DnDIR=1,引脚配置为输出
寄存器PDDATDIR的数据位与对应I/O引脚
(5)I/O端口E数据和方向控制寄存器(PEDATDIR),
位15~8:
EnDIR
IOPEn
如果EnDIR=0,引脚配置为输入
如果EnDIR=1,引脚配置为输出
寄存器PEDATDIR的数据位与对应I/O引脚
(6)I/O端口F数据和方向控制寄存器(PFDATDIR),
位15:
位14~8:
位7:
位6-0:
IOPFn
如果FnDIR=0,引脚配置为输入
如果FnDIR=1,引脚配置为输出
寄存器PFDATDIR的数据位与对应I/O引脚
4.5数字I/O端口配置实例
配置:
选择I/O引脚的功能,且设置I/O引脚的方向。
I/O配置实例程序:
MCRA.set7090h;
可将这些映射语句放于240x.h文件中
PADATDIR.set7098h;
PBDATDIR.set709Ah;
LDP#0E1h;
指向相应的数据页面
LACC#0h;
设置MCRA所有位均为0
SACLMCRA;
配置为I/O脚,选择引脚IOPA0-IOPA7和IOPB0-IOPB7
SACLPADATDIR;
引脚IOPA0-IOPA7配置为输入,低有效
LACC#0F00h;
引脚IOPB7-IOPB4配置为输入
SACLPBDATDIR;
引脚IOPB3-IOPB0配置为输出
LACCPBDATDIR;
读取引脚IOPB7-IOPB4输入状态
AND#00F0h;
A为输入状态
上为一个数字I/O的实际配置程序,对于每个寄存器的定义已介绍,对于所有数字I/O配置定义的参考表,见P81。
4.6数字I/O应用实例
4.6.1使用数字I/O查询输入信号
接口电路如下图所示。
在I/O初始化时,需设置引脚为I/O,且需要选择信号方向。
程序见参考书。
4.6.2使用数字I/O输出信号
本例为使用I/O端口输出4个信号,分别连接到4个LED。
输出脚与LED间接一触发器SN74HCT273,对LED驱动。
使用:
PWM3/IOPB0、PWM4/IOPB1、PWM5/IOPB2、PWM6/IOPB3作为输出。
PWM7/IOPE1作为SN74HCT273的选通信号。
如何实现对4个LED的循环驱动?
即DS0→DS1→DS2→DS2,参考程序见P86。