1、第第6章:章:数字输入数字输入/输出模块输出模块(I/O)6.1 数字数字I/O端口概述端口概述6.2 数字数字I/O端口寄存器端口寄存器6.3 I/O端口应用端口应用 6.1 数字I/O端口概述数字数字I/O脚有脚有专用专用和和复用复用之分。其功能可通过之分。其功能可通过9个个16位控位控制寄存器制寄存器来控制。来控制。控制寄存器分为两类:控制寄存器分为两类:I/O复用复用控制寄存器(控制寄存器(MCRx),用来选择,用来选择I/O脚是片内外设功能脚是片内外设功能还是通用还是通用I/O功能;功能;数据方向数据方向控制寄存器(控制寄存器(PxDATDIR):用来控制双向:用来控制双向I/O脚的
2、数据脚的数据传送方向。传送方向。注意:注意:上述数字上述数字I/O脚是通过控制寄存器(映射在数据存脚是通过控制寄存器(映射在数据存储器空间)来控制的,储器空间)来控制的,与器件的与器件的I/O空间无任何关系。空间无任何关系。LF240 x系列系列DSP多达多达41只只I/O引脚,大部分是复用的。引脚,大部分是复用的。6.2 数字I/O寄存器I/O复用引脚的结构见复用引脚的结构见图图6.1。由图可看出复用。由图可看出复用I/O引脚引脚如何来实现如何来实现引脚功能选择引脚功能选择和和数据传送方向数据传送方向选择的。选择的。图图6.1复用引脚配置图复用引脚配置图 6.2 数字I/O寄存器表表8.1(
3、P151)列出了与)列出了与I/O模块有关的寄存器,地址模块有关的寄存器,地址为:为:7090h-709Fh注意:注意:映射到映射到数据存储器空间。数据存储器空间。当复用当复用I/O脚无论是被配置为外设功能还是为通用脚无论是被配置为外设功能还是为通用I/O时,引时,引脚的状态都可通过读脚的状态都可通过读I/O数据寄存器来获取。数据寄存器来获取。保留位保留位是不可操作的,读出为是不可操作的,读出为0,写入对它无影响。,写入对它无影响。6.2 数字I/O寄存器地址地址寄存器寄存器功能功能7090hMCRAI/O复用控制复用控制寄存器寄存器A7092hMCRBI/O复用控制复用控制寄存器寄存器B70
4、94hMCRCI/O复用控制复用控制寄存器寄存器C7098hPADATDIRI/O端口端口A数据和方向寄存器数据和方向寄存器709AhPBDATDIRI/O端口端口B数据和方向寄存器数据和方向寄存器709ChPCDATDIRI/O端口端口C数据和方向寄存器数据和方向寄存器709EhPDDATDIRI/O端口端口D数据和方向寄存器数据和方向寄存器7095hPEDATDIRI/O端口端口E数据和方向寄存器数据和方向寄存器7096hPFDATDIRI/O端口端口F数据和方向寄存器数据和方向寄存器表表6.1数字数字I/O控制寄存器地址控制寄存器地址 6.2 数字I/O寄存器I/O口复用输出寄存器口复用
5、输出寄存器LF240 x/240 xA具有具有3个个I/O端口复用控制寄存器端口复用控制寄存器:MCRA、MCRB、MCRC。(1)I/O端口复用控制寄存器端口复用控制寄存器A(MCRA),映射地址:映射地址:7090h,其配置见表,其配置见表8.2(P152)。)。6.2 数字I/O寄存器位位基本功能及描述(基本功能及描述(MCRA.n=1)通用通用I/O(MCRA.n=0)MCRA.0SCITXD:SCI异步串行口发送数据异步串行口发送数据IOPA0MCRA.1SCIRXD:SCI异步串行口接收数据异步串行口接收数据IOPA1MCRA.2XINT1:外部用户中断:外部用户中断1IOPA2M
6、CRA.3CAP1/QEP1:捕捉输入:捕捉输入1/正交编码脉冲输入正交编码脉冲输入1(EVA)IOPA3MCRA.4CAP2/QEP2:捕捉输入:捕捉输入2/正交编码脉冲输入正交编码脉冲输入2(EVA)IOPA4MCRA.5CAP3:捕捉输入:捕捉输入3(EVA)IOPA5MCRA.6PWM1:比较:比较/PWM输出引脚输出引脚1(EVA)IOPA6MCRA.7PWM2:比较:比较/PWM输出引脚输出引脚2(EVA)IOPA7MCRA.8PWM3:比较:比较/PWM输出引脚输出引脚3(EVA)IOPB0MCRA.9PWM4:比较:比较/PWM输出引脚输出引脚4(EVA)IOPB1MCRA.1
7、0PWM5:比较:比较/PWM输出引脚输出引脚5(EVA)IOPB2MCRA.11PWM6:比较:比较/PWM输出引脚输出引脚6(EVA)IOPB3MCRA.12T1PWM/T1CMP:TMR1比较输出比较输出(EVA)IOPB4MCRA.13T2PWM/T2CMP:TMR2比较输出比较输出(EVA)IOPB5MCRA.14TDIRA:通用定时器计数方向选择:通用定时器计数方向选择(EVA);1=加计数;加计数;0=减计数减计数IOPB6MCRA.15TCLKINA:通用定时器:通用定时器(EVA)的外部时钟输入的外部时钟输入IOPB7 6.2 数字I/O寄存器(2)I/O端口复用控制寄存器端
8、口复用控制寄存器B,映射地址:,映射地址:7092h,其,其配置见表配置见表8.3(P153)。)。注意:注意:MCRB.9-MCRB.15必须配置成必须配置成1,其为系统的专,其为系统的专用引脚,用作与硬件仿真器接口用引脚,用作与硬件仿真器接口(JTAG)相连,实现相连,实现DSP的在线仿真功能。的在线仿真功能。对其写对其写0会引起不可预测的结会引起不可预测的结果。果。6.2 数字I/O寄存器位位基本功能及描述(基本功能及描述(MCRA.n=1)通用通用I/O(MCRA.n=0)MCRB.0W/R:写:写/读选定;读选定;0=读;读;1=写写IOPC0MCRB.1BIO:分支控制输入;:分支
9、控制输入;0=执行分支程序执行分支程序IOPC1MCRB.2SPISIMO:SPI从动输入、主动输出从动输入、主动输出IOPC2MCRB.3SPISOMI:SPI从动输出、主动输入从动输出、主动输入IOPC3MCRB.4SPICLK:SPI时钟时钟IOPC4MCRB.5SPISTE:SPI从动发送使能从动发送使能IOPC5MCRB.6CANTX:CAN发送数据发送数据IOPC6MCRB.7CANRX:CAN接收数据接收数据IOPC7MCRB.8XINT2/ADCSOC:外部用户中断:外部用户中断2/AD转换开始输入转换开始输入IOPD0MCRB.9EMU0:带内部上拉仿真器:带内部上拉仿真器I
10、/O引脚引脚0保留位保留位MCRB.10EMU1:带内部上拉仿真器:带内部上拉仿真器I/O引脚引脚1保留位保留位MCRB.11TCK:带内部上拉:带内部上拉JTAG测试时钟测试时钟保留位保留位MCRB.12TDI:带内部上拉:带内部上拉JTAG测试数据输入测试数据输入保留位保留位MCRB.13TDO:带内部上拉:带内部上拉JTAG测试数据输出测试数据输出保留位保留位MCRB.14TMS:带内部上拉:带内部上拉JTAG测试方式选择测试方式选择保留位保留位MCRB.15TMS2:带内部上拉:带内部上拉JTAG测试方式选择测试方式选择2保留位保留位 6.2 数字I/O寄存器(3)I/O端口复用控制寄
11、存器端口复用控制寄存器C(MCRC),映射地址:映射地址:7094h,其配置见表其配置见表8.4(P154)。)。6.2 数字I/O寄存器位位基本功能(基本功能(MCRA.n=1)通用通用I/O(MCRA.n=0)MCRC.0CLKOUT:时钟输出:时钟输出IOPE0MCRC.1PWM7:比较:比较/PWM输出引脚输出引脚7(EVA)IOPE1MCRC.2PWM8:比较:比较/PWM输出引脚输出引脚8(EVA)IOPE2MCRC.3PWM9:比较:比较/PWM输出引脚输出引脚9(EVA)IOPE3MCRC.4PWM10:比较:比较/PWM输出引脚输出引脚10(EVA)IOPE4MCRC.5PW
12、M11:比较:比较/PWM输出引脚输出引脚11(EVA)IOPE5MCRC.6PWM12:比较:比较/PWM输出引脚输出引脚12(EVA)IOPE6MCRC.7CAP4/QEP3:捕捉输入:捕捉输入4/正交编码脉冲输入正交编码脉冲输入3(EVA)IOPE7MCRC.8CAP5/QEP4:捕捉输入:捕捉输入5/正交编码脉冲输入正交编码脉冲输入4(EVA)IOPF0MCRC.9CAP6:捕捉输入:捕捉输入6IOPF1MCRC.10T3PWM/T3CMP:TMR3比较输出比较输出(EVA)IOPF2MCRC.11T4PWM/T4CMP;TMR4比较输出比较输出(EVA)IOPF3MCRC.12TDI
13、RB:通用定时计数器方向选择:通用定时计数器方向选择(EVB)IOPF4MCRC.13TCLKINB:通用定时器:通用定时器(EVB)的外部时钟输入的外部时钟输入IOPF5MCRC.14保留保留IOPF6MCRC.15保留保留保留位保留位 6.2 数字I/O寄存器I/O口数据和方向寄存器口数据和方向寄存器6个数据和方向控制寄存器(个数据和方向控制寄存器(PXDATDIR),包含两个功能位。包含两个功能位。(1)I/O方向位方向位:如果引脚被选择了通用如果引脚被选择了通用I/O,方向位决定了是输,方向位决定了是输入(入(0)还是输出()还是输出(1)。)。(2)I/O数据位数据位:如果引脚被选择
14、了通用如果引脚被选择了通用I/O,当方向选为输入,当方向选为输入,则可从该位上读取数据,当方向选为输出,则可向该位写入数则可从该位上读取数据,当方向选为输出,则可向该位写入数据。据。如如I/O端口被选择作通用端口被选择作通用I/O引脚,数据和方向控制寄存器可以控制引脚,数据和方向控制寄存器可以控制数据和数据和I/O引脚的数据方向。引脚的数据方向。如如I/O端口被选择作外设功能时,数据和方向控制寄存器的设置对相端口被选择作外设功能时,数据和方向控制寄存器的设置对相应的引脚无影响。应的引脚无影响。6.2 数字I/O寄存器(1)端口端口A数据和方向控制寄存器(数据和方向控制寄存器(PADATDIR)
15、,地址:地址:7098h位位15-8:AnDIR PA7-PA0的数据方向的数据方向0:相应引脚配置为输入1:相应引脚配置为输出位位7-0:IOPA7-IOPA0如果如果AnDIR=0,引脚配置为输入,引脚配置为输入0相应引脚的电平读为相应引脚的电平读为低电平低电平1相应引脚的电平读为相应引脚的电平读为高电平高电平如果如果AnDIR=1,引脚配置为输出,引脚配置为输出0设置相应引脚,使其输出信号为设置相应引脚,使其输出信号为低电平时有效低电平时有效1设置相应引脚,使其输出信号为设置相应引脚,使其输出信号为高电平时有效高电平时有效如果如果I/O端口用作通用端口用作通用I/O,则必须对数据和方向寄
16、存器进行,则必须对数据和方向寄存器进行初初始化设置始化设置,为输入还是输出。,为输入还是输出。6.2 数字I/O寄存器(2)端口端口B数据和方向控制寄存器(数据和方向控制寄存器(PBDATDIR),地址:地址:709Ah位位15-8:BnDIR PB7-PB0的数据方向的数据方向0相应引脚配置为相应引脚配置为输入输入1相应引脚配置为相应引脚配置为输出输出位位7-0:IOPBn如果如果BnDIR=0,引脚配置为输入方式。,引脚配置为输入方式。0相应引脚的电平读为相应引脚的电平读为低电平低电平1相应引脚的电平读为相应引脚的电平读为高电平高电平如果如果BnDIR=1,引脚配置为输出,引脚配置为输出0
17、设置相应引脚,使其输出信号为设置相应引脚,使其输出信号为低电平时有效低电平时有效1设置相应引脚,使其输出信号为设置相应引脚,使其输出信号为高电平时有效高电平时有效 6.2 数字I/O寄存器(3)端口)端口C数据和方向控制寄存器(数据和方向控制寄存器(PCDATDIR),地址:地址:709Ch 位位15-8:CnDIR PC7-PC0的数据方向的数据方向0相应引脚配置为相应引脚配置为输入输入1相应引脚配置为相应引脚配置为输出输出位位7-0:IOPCn如果如果CnDIR=0,引脚配置为输入方式。,引脚配置为输入方式。0相应引脚的电平读为相应引脚的电平读为低电平低电平1相应引脚的电平读为相应引脚的电
18、平读为高电平高电平如果如果CnDIR=1,引脚配置为输出,引脚配置为输出0设置相应引脚,使其输出信号为设置相应引脚,使其输出信号为低电平时有效低电平时有效1设置相应引脚,使其输出信号为设置相应引脚,使其输出信号为高电平时有效高电平时有效 6.2 数字I/O寄存器(4)端口端口D数据和方向控制寄存器(数据和方向控制寄存器(PDDATDIR),地址:地址:709Eh 位位15-9:保留保留位位8:D0DIR0相应引脚配置为相应引脚配置为输入输入1相应引脚配置为相应引脚配置为输出输出位位7-1:保留保留位位0:IOPD0如果如果D0DIR=0,引脚配置为输入方式。,引脚配置为输入方式。0相应引脚的电
19、平读为相应引脚的电平读为低电平低电平1相应引脚的电平读为相应引脚的电平读为高电平高电平如果如果D0DIR=1,引脚配置为输出,引脚配置为输出0设置相应引脚,使其输出信号为设置相应引脚,使其输出信号为低电平时有效低电平时有效1设置相应引脚,使其输出信号为设置相应引脚,使其输出信号为高电平时有效高电平时有效 6.2 数字I/O寄存器(5)端口)端口E数据和方向控制寄存器(数据和方向控制寄存器(PEDATDIR),地址:地址:7095h 位位15-8:EnDIR PE7-PE0的数据方向的数据方向0相应引脚配置为相应引脚配置为输入输入1相应引脚配置为相应引脚配置为输出输出位位7-0:IOPEn如果如
20、果EnDIR=0,引脚配置为输入方式。,引脚配置为输入方式。0相应引脚的电平读为相应引脚的电平读为低电平低电平1相应引脚的电平读为相应引脚的电平读为高电平高电平如果如果EnDIR=1,引脚配置为输出,引脚配置为输出0设置相应引脚,使其输出信号为设置相应引脚,使其输出信号为低电平时有效低电平时有效1设置相应引脚,使其输出信号为设置相应引脚,使其输出信号为高电平时有效高电平时有效 6.2 数字I/O寄存器(6)端口端口F数据和方向控制寄存器(数据和方向控制寄存器(PFDATDIR),地址:地址:7096h位位15:保留保留位位14-8:FnDIR PF6-PF0的数据方向的数据方向0相应引脚配置为
21、相应引脚配置为输入输入1相应引脚配置为相应引脚配置为输出输出位位7:保留保留位位7-0:IOPFn如果如果FnDIR=0,引脚配置为输入方式。,引脚配置为输入方式。0相应引脚的电平读为相应引脚的电平读为低电平低电平1相应引脚的电平读为相应引脚的电平读为高电平高电平如果如果FnDIR=1,引脚配置为输出,引脚配置为输出0设置相应引脚,使其输出信号为设置相应引脚,使其输出信号为低电平时有效低电平时有效1设置相应引脚,使其输出信号为设置相应引脚,使其输出信号为高电平时有效高电平时有效 6.2 数字I/O寄存器数字数字I/O端口配置实例端口配置实例配置:配置:选择选择I/O引脚的功能,且设置引脚的功能
22、,且设置I/O引脚的方向。引脚的方向。I/O配置实例程序:配置实例程序:MCRA.set7090h;可将这些映射语句放于可将这些映射语句放于240 x.h文件中文件中PADATDIR.set7098h;可将这些映射语句放于可将这些映射语句放于240 x.h文件中文件中PBDATDIR.set709Ah;可将这些映射语句放于可将这些映射语句放于240 x.h文件中文件中LDP#0E1h;指向相应的数据页面指向相应的数据页面LACC#0h;设置设置MCRA所有位均为所有位均为0SACLMCRA;配置为配置为I/O脚,选择引脚脚,选择引脚IOPA0-IOPA7和和IOPB0-IOPB7SACLPAD
23、ATDIR;引脚引脚IOPA0-IOPA7配置为输入,低有效配置为输入,低有效LACC#0F00h;引脚引脚IOPB7-IOPB4配置为输入配置为输入SACLPBDATDIR;引脚引脚IOPB3-IOPB0配置为输出配置为输出LACCPBDATDIR;读取引脚读取引脚IOPB7-IOPB4输入状态输入状态AND#00F0h;A为输入状态为输入状态 6.3 I/O端口应用1、I/O端口端口作为输出作为输出使用使用I/O端口输出端口输出8个信号,这个信号,这8个信号分别连接到个信号分别连接到8个个LED,硬件接,硬件接口电路如口电路如图图6.2(P102)所示。输出引脚与所示。输出引脚与LED之间
24、接一触发器之间接一触发器74HC273,来实现对来实现对LED的驱动。在此使用的驱动。在此使用IOPB作为作为输出信号输出信号来来控制发光二极管的亮灭,而控制发光二极管的亮灭,而IOPF2作为作为选通选通74HC273的输出信的输出信号号。图图6.2 TMS320LF2407与与LED接口电路接口电路 6.3 I/O端口应用下面的实例程序实现对下面的实例程序实现对8个个LED的循环驱动,即的循环驱动,即LED循环发光循环发光LED1LED2LED3LED4LED5 LED6LED7LED8LED1。(1)主程序)主程序IOSFT_REG.usect.data0,1;要显示的数据寄存器要显示的数
25、据寄存器 .includeF2407REGS.H;引用头部文件引用头部文件 .def_c_int0 .text_c_int0 ;相当于主程序的入口相当于主程序的入口 CALLSYSINIT;调系统初始化程序调系统初始化程序 LDP#DP_PF2;指向指向7080h7100h区区 LACLMCRA AND#000FFH;IOPB口配置为一般口配置为一般I/O功能功能 SACLMCRA LACLMCRC AND#0FBFFH;IOPF2 配置为一般配置为一般I/O功能功能 SACLMCRC LACLPBDATDIR OR#0FF00H;IOPB口设置为输出方式口设置为输出方式 SACLPBDATD
26、IR OR#0FF00H;IOPB口设置为输出方式口设置为输出方式 SACLPBDATDIR 6.3 I/O端口应用LDP#5H;指向指向0280h0300h区区SPLK#01H,IOSFT_REG;给显示的数据赋初值给显示的数据赋初值LOOP:LDP#DP_PF2LACLPFDATDIROR#0404H;IOPF2 设置为输出方式,且设置为输出方式,且IOPF2=1SACLPFDATDIR;开开74HC273片选信号片选信号LDP#5HLACLIOSFT_REGLDP#DP_PF2SACLPBDATDIR;送要显示的数据到送要显示的数据到IOPB口口LACLPFDATDIRAND#0FFFB
27、H;IOPF2=0SACLPFDATDIR;关关74HC273片选信号片选信号CALLDELAY;调延时程序调延时程序LDP#5HLACLIOSFT_REGSFL;左移一位左移一位SACLIOSFT_REGBITIOSFT_REG,BIT8;判是否循环完一次,即已点亮第判是否循环完一次,即已点亮第8个发光二极管个发光二极管BCNDLOOP1,TCBWAITLOOP1:LDP#5HSPLK#01H,IOSFT_REG;如循环完一次则显示数据赋初值如循环完一次则显示数据赋初值WAIT:NOPBLOOP 6.3 I/O端口应用(2)系统初始化程序)系统初始化程序SYSINIT:SETC INTM C
28、LRC SXM CLRC OVMCLRC CNF;B0 被配置为数据存储空间被配置为数据存储空间 LDP#0E0HSPLK#81FEH,SCSR1;CLKIN=6 M,CLKOUT=24 M SPLK#0E8H,WDCR;不使能不使能WDTLDP#0SPLK#0000H,IMR;不使能不使能SPLK#0FFFFH,IFR;清全部中断标志清全部中断标志RET 6.3 I/O端口应用(3)软件延时程序)软件延时程序DELAY:MAR*,AR4LARAR4,#0FFFEHLARAR0,#00HDELAY1:SBRK#1NOPCMPR00BCNDDELAY1,NTC RET 6.3 I/O端口应用1、
29、I/O端口端口作为输入和输出作为输入和输出使用键盘的响应作为使用键盘的响应作为I/O端口的输入,用端口的输入,用I/O端口的输出点亮发光二极管,硬端口的输出点亮发光二极管,硬件接口电路如件接口电路如图图6.3(P104)所示。用查询的方式读取键值,当所示。用查询的方式读取键值,当K1键按下键按下时,点亮发光二极管。时,点亮发光二极管。K1键对应的键对应的I/O输入引脚为输入引脚为IOPF3,在,在IOPF3作作通用通用I/O输入的情况下,如输入的情况下,如K1键按下键按下则端口则端口F数据和方向控制寄存器数据和方向控制寄存器(PFDATDIR)的第的第3位为位为0。经过延时消抖动后如。经过延时
30、消抖动后如PFDATDIR.3仍为仍为0则则表示表示K1键按下。键按下。图图6.3 TMS320LF2407与键盘、与键盘、LED接口电路接口电路 6.3 I/O端口应用下面的实例程序实在前面程序的基础上添加了键盘输入程序,仅给下面的实例程序实在前面程序的基础上添加了键盘输入程序,仅给出通用出通用I/O作为输入时的初始化和读键盘程序。作为输入时的初始化和读键盘程序。(1)初始化程序)初始化程序IOINIT:;添加在前面程序的大循环添加在前面程序的大循环;LOOP:之前就行了:之前就行了LDP#DP_PF2LACLMCRCAND#0F7FFH;IOPF3 配置为一般的配置为一般的I/O口口SAC
31、LMCRCLACLPFDATDIRAND#0F7FFH;IOPF3为输入方式为输入方式SACLPFDATDIRRET 6.3 I/O端口应用(2)读)读K1键程序键程序READKEY:;添加在前面程序的大循环添加在前面程序的大循环LOOP:之后就行了:之后就行了 LDP#DP_PF2 LACLPFDATDIR ;取出键值取出键值PFDATDIR.3 SACLKEYDATA;存放键值存放键值LDP#DP_USERBITKEYDATA,12;判判IOPF3是否为是否为1BCNDK1_RET,TC;如如IOPF3为为1则则K1没有按下没有按下;延时消抖动延时消抖动LDP#DP_PF2LACLPFDATDIR ;再次取出键值再次取出键值PFDATDIR.3 SACLKEYDATALDP#DP_USERBITKEYDATA,12;判判IOPF3是否为是否为1,如为,如为0则确实有则确实有K1键按下键按下BCNDK1_RET,TCSPLK#0FFH,IOSFT_REG;给显示的数据值给显示的数据值K1_RET:RET