Presentation is loading. Please wait.

Presentation is loading. Please wait.

第6章: 数字输入/输出模块(I/O) 6.1 数字I/O端口概述 6.2 数字I/O端口寄存器 6.3 I/O端口应用.

Similar presentations


Presentation on theme: "第6章: 数字输入/输出模块(I/O) 6.1 数字I/O端口概述 6.2 数字I/O端口寄存器 6.3 I/O端口应用."— Presentation transcript:

1 第6章: 数字输入/输出模块(I/O) 6.1 数字I/O端口概述 6.2 数字I/O端口寄存器 6.3 I/O端口应用

2 6.1 数字I/O端口概述 数字I/O脚有专用和复用之分。其功能可通过9个16位控制寄存器来控制。控制寄存器分为两类:
I/O复用控制寄存器(MCRx),用来选择I/O脚是片内外设功能还是通用I/O功能; 数据方向控制寄存器(PxDATDIR):用来控制双向I/O脚的数据传送方向。 注意:上述数字I/O脚是通过控制寄存器(映射在数据存储器空间)来控制的,与器件的I/O空间无任何关系。 LF240x系列DSP多达41只I/O引脚,大部分是复用的。

3 6.2 数字I/O寄存器 I/O复用引脚的结构见图6.1。由图可看出复用I/O引脚如何来实现引脚功能选择和数据传送方向选择的。
图6.1复用引脚配置图 3

4 6.2 数字I/O寄存器 表6.1(P97)列出了与I/O模块有关的寄存器,地址为:7090h-709Fh 注意: 映射到数据存储器空间。
当复用I/O脚无论是被配置为外设功能还是为通用I/O时,引脚的状态都可通过读I/O数据寄存器来获取。 保留位是不可操作的,读出为0,写入对它无影响。 4

5 6.2 数字I/O寄存器 表6.1数字I/O控制寄存器地址 地址 寄存器 功能 7090h MCRA I/O复用控制寄存器A 7092h
MCRB I/O复用控制寄存器B 7094h MCRC I/O复用控制寄存器C 7098h PADATDIR I/O端口A数据和方向寄存器 709Ah PBDATDIR I/O端口B数据和方向寄存器 709Ch PCDATDIR I/O端口C数据和方向寄存器 709Eh PDDATDIR I/O端口D数据和方向寄存器 7095h PEDATDIR I/O端口E数据和方向寄存器 7096h PFDATDIR I/O端口F数据和方向寄存器 5

6 6.2 数字I/O寄存器 I/O口复用输出寄存器 LF240x/240xA具有3个I/O端口复用控制寄存器:MCRA、MCRB、MCRC。
(1)I/O端口复用控制寄存器A(MCRA),映射地址:7090h,其配置见表6.2(P97)。 6

7 6.2 数字I/O寄存器 位 基本功能及描述(MCRA.n=1) 通用I/O(MCRA.n=0) MCRA.0
SCITXD :SCI异步串行口发送数据 IOPA0 MCRA.1 SCIRXD: SCI异步串行口接收数据 IOPA1 MCRA.2 XINT1:外部用户中断1 IOPA2 MCRA.3 CAP1/QEP1:捕捉输入1/正交编码脉冲输入1(EVA) IOPA3 MCRA.4 CAP2/QEP2:捕捉输入2/正交编码脉冲输入2(EVA) IOPA4 MCRA.5 CAP3:捕捉输入3(EVA) IOPA5 MCRA.6 PWM1:比较/PWM输出引脚1(EVA) IOPA6 MCRA.7 PWM2:比较/PWM输出引脚2(EVA) IOPA7 MCRA.8 PWM3:比较/PWM输出引脚3(EVA) IOPB0 MCRA.9 PWM4:比较/PWM输出引脚4(EVA) IOPB1 MCRA.10 PWM5:比较/PWM输出引脚5(EVA) IOPB2 MCRA.11 PWM6:比较/PWM输出引脚6(EVA) IOPB3 MCRA.12 T1PWM/T1CMP:TMR1比较输出(EVA) IOPB4 MCRA.13 T2PWM/T2CMP :TMR2比较输出(EVA) IOPB5 MCRA.14 TDIRA:通用定时器计数方向选择(EVA);1=加计数;0=减计数 IOPB6 MCRA.15 TCLKINA:通用定时器(EVA)的外部时钟输入 IOPB7 7

8 6.2 数字I/O寄存器 (2)I/O端口复用控制寄存器B,映射地址:7092h,其配置见表6.3(P98)。
注意:MCRB.9-MCRB.15必须配置成1,其为系统的专用引脚,用作与硬件仿真器接口(JTAG)相连,实现DSP的在线仿真功能。对其写0会引起不可预测的结果。 8

9 6.2 数字I/O寄存器 位 基本功能及描述(MCRA.n=1) 通用I/O(MCRA.n=0) MCRB.0
W/R:写/读选定;0=读;1=写 IOPC0 MCRB.1 BIO:分支控制输入;0=执行分支程序 IOPC1 MCRB.2 SPISIMO:SPI从动输入、主动输出 IOPC2 MCRB.3 SPISOMI: SPI从动输出、主动输入 IOPC3 MCRB.4 SPICLK:SPI时钟 IOPC4 MCRB.5 SPISTE:SPI从动发送使能 IOPC5 MCRB.6 CANTX:CAN发送数据 IOPC6 MCRB.7 CANRX:CAN接收数据 IOPC7 MCRB.8 XINT2/ADCSOC:外部用户中断2/AD转换开始输入 IOPD0 MCRB.9 EMU0:带内部上拉仿真器I/O引脚0 保留位 MCRB.10 EMU1:带内部上拉仿真器I/O引脚1 MCRB.11 TCK:带内部上拉JTAG测试时钟 MCRB.12 TDI :带内部上拉JTAG测试数据输入 MCRB.13 TDO:带内部上拉JTAG测试数据输出 MCRB.14 TMS:带内部上拉JTAG测试方式选择 MCRB.15 TMS2:带内部上拉JTAG测试方式选择2 9

10 6.2 数字I/O寄存器 (3)I/O端口复用控制寄存器C(MCRC),映射地址:7094h,其配置见表6.4(P99)。 10

11 6.2 数字I/O寄存器 位 基本功能(MCRA.n=1) 通用I/O(MCRA.n=0) MCRC.0 CLKOUT:时钟输出 IOPE0
PWM7:比较/PWM输出引脚7(EVA) IOPE1 MCRC.2 PWM8:比较/PWM输出引脚8(EVA) IOPE2 MCRC.3 PWM9:比较/PWM输出引脚9(EVA) IOPE3 MCRC.4 PWM10:比较/PWM输出引脚10(EVA) IOPE4 MCRC.5 PWM11:比较/PWM输出引脚11(EVA) IOPE5 MCRC.6 PWM12:比较/PWM输出引脚12(EVA) IOPE6 MCRC.7 CAP4/QEP3:捕捉输入4/正交编码脉冲输入3(EVA) IOPE7 MCRC.8 CAP5/QEP4:捕捉输入5/正交编码脉冲输入4(EVA) IOPF0 MCRC.9 CAP6:捕捉输入6 IOPF1 MCRC.10 T3PWM/T3CMP: TMR3比较输出(EVA) IOPF2 MCRC.11 T4PWM/T4CMP; TMR4比较输出(EVA) IOPF3 MCRC.12 TDIRB:通用定时计数器方向选择(EVB) IOPF4 MCRC.13 TCLKINB:通用定时器(EVB)的外部时钟输入 IOPF5 MCRC.14 保留 IOPF6 MCRC.15 保留位 11

12 6.2 数字I/O寄存器 I/O口数据和方向寄存器 6个数据和方向控制寄存器(PXDATDIR),包含两个功能位。
如I/O端口被选择作通用I/O引脚,数据和方向控制寄存器可以控制数据和I/O引脚的数据方向。 如I/O端口被选择作外设功能时,数据和方向控制寄存器的设置对相应的引脚无影响。 12

13 6.2 数字I/O寄存器 (1)端口A数据和方向控制寄存器(PADATDIR),地址:7098h
位15-8:AnDIR PA7-PA0的数据方向 0:相应引脚配置为输入 1:相应引脚配置为输出 位7-0:IOPA7-IOPA0 如果AnDIR=0,引脚配置为输入 0-相应引脚的电平读为低电平 1-相应引脚的电平读为高电平 如果AnDIR=1,引脚配置为输出 0-设置相应引脚,使其输出信号为低电平时有效 1-设置相应引脚,使其输出信号为高电平时有效 如果I/O端口用作通用I/O,则必须对数据和方向寄存器进行初始化设置,为输入还是输出。 13

14 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-设置相应引脚,使其输出信号为低电平时有效 1-设置相应引脚,使其输出信号为高电平时有效 14

15 6.2 数字I/O寄存器 (3)端口C数据和方向控制寄存器(PCDATDIR),地址:709Ch
位15-8:CnDIR PC7-PC0的数据方向 0-相应引脚配置为输入 1-相应引脚配置为输出 位7-0:IOPCn 如果CnDIR=0,引脚配置为输入方式。 0-相应引脚的电平读为低电平 1-相应引脚的电平读为高电平 如果CnDIR=1,引脚配置为输出 0-设置相应引脚,使其输出信号为低电平时有效 1-设置相应引脚,使其输出信号为高电平时有效 15

16 6.2 数字I/O寄存器 (4) 端口D数据和方向控制寄存器(PDDATDIR),地址:709Eh 位15-9:保留 位8:D0DIR
0-相应引脚配置为输入 1-相应引脚配置为输出 位7-1:保留 位0:IOPD0 如果D0DIR=0,引脚配置为输入方式。 0-相应引脚的电平读为低电平 1-相应引脚的电平读为高电平 如果D0DIR=1,引脚配置为输出 0-设置相应引脚,使其输出信号为低电平时有效 1-设置相应引脚,使其输出信号为高电平时有效 16

17 6.2 数字I/O寄存器 (5)端口E数据和方向控制寄存器(PEDATDIR),地址:7095h
位15-8:EnDIR PE7-PE0的数据方向 0-相应引脚配置为输入 1-相应引脚配置为输出 位7-0:IOPEn 如果EnDIR=0,引脚配置为输入方式。 0-相应引脚的电平读为低电平 1-相应引脚的电平读为高电平 如果EnDIR=1,引脚配置为输出 0-设置相应引脚,使其输出信号为低电平时有效 1-设置相应引脚,使其输出信号为高电平时有效 17

18 6.2 数字I/O寄存器 (6) 端口F数据和方向控制寄存器(PFDATDIR),地址:7096h 位15:保留
位14-8:FnDIR PF6-PF0的数据方向 0-相应引脚配置为输入 1-相应引脚配置为输出 位7:保留 位7-0:IOPFn 如果FnDIR=0,引脚配置为输入方式。 0-相应引脚的电平读为低电平 1-相应引脚的电平读为高电平 如果FnDIR=1,引脚配置为输出 0-设置相应引脚,使其输出信号为低电平时有效 1-设置相应引脚,使其输出信号为高电平时有效 18

19 6.2 数字I/O寄存器 数字I/O端口配置实例 配置:选择I/O引脚的功能,且设置I/O引脚的方向。 I/O配置实例程序: MCRA
.set 7090h ;可将这些映射语句放于240x.h文件中 PADATDIR 7098h PBDATDIR 709Ah LDP #0E1h ;指向相应的数据页面 LACC #0h ;设置MCRA所有位均为0 SACL ;配置为I/O脚,选择引脚IOPA0-IOPA7和IOPB0-IOPB7 ;引脚IOPA0-IOPA7配置为输入,低有效 #0F00h ;引脚IOPB7-IOPB4配置为输入 ;引脚IOPB3-IOPB0配置为输出 ;读取引脚IOPB7-IOPB4输入状态 AND #00F0h ;A为输入状态 19

20 6.3 I/O端口应用 1、I/O端口作为输出 使用I/O端口输出8个信号,这8个信号分别连接到8个LED,硬件接口电路如图6.2(P102)所示。输出引脚与LED之间接一触发器74HC273,来实现对LED的驱动。在此使用IOPB作为输出信号来控制发光二极管的亮灭,而IOPF2作为选通74HC273的输出信号。 图6.2 TMS320LF2407与LED接口电路 20

21 6.3 I/O端口应用 下面的实例程序实现对8个LED的循环驱动,即LED循环发光LED1→LED2→LED3→LED4→LED5 →LED6→LED7→LED8→LED1 ……。 (1)主程序 IOSFT_REG .usect ".data0",1 ;要显示的数据寄存器 .include "F2407REGS.H" ;引用头部文件 .def _c_int0 .text _c_int ;相当于主程序的入口 CALL SYSINIT ;调系统初始化程序 LDP #DP_PF2 ;指向7080h~7100h区 LACL MCRA AND #000FFH ;IOPB口配置为一般I/O功能 SACL MCRA LACL MCRC AND #0FBFFH ;IOPF2 配置为一般I/O功能 SACL MCRC LACL PBDATDIR OR #0FF00H ;IOPB口设置为输出方式 SACL PBDATDIR 21

22 6.3 I/O端口应用 22 LDP #5H ;指向0280h~0300h区 SPLK #01H,IOSFT_REG ;给显示的数据赋初值
LOOP: LDP #DP_PF2 LACL PFDATDIR OR #0404H ;IOPF2 设置为输出方式,且IOPF2=1 SACL PFDATDIR ;开74HC273片选信号 LDP #5H LACL IOSFT_REG LDP #DP_PF2 SACL PBDATDIR ;送要显示的数据到IOPB口 AND #0FFFBH ;IOPF2=0 SACL PFDATDIR ;关74HC273片选信号 CALL DELAY ;调延时程序 SFL ;左移一位 SACL IOSFT_REG BIT IOSFT_REG,BIT8 ;判是否循环完一次,即已点亮第8个发光二极管 BCND LOOP1,TC B WAIT LOOP1: LDP #5H SPLK #01H,IOSFT_REG ;如循环完一次则显示数据赋初值 WAIT: NOP B LOOP 22

23 6.3 I/O端口应用 (2)系统初始化程序 SYSINIT: SETC INTM CLRC SXM CLRC OVM
CLRC CNF ;B0 被配置为数据存储空间 LDP #0E0H SPLK #81FEH,SCSR1 ;CLKIN=6 M,CLKOUT=24 M SPLK #0E8H,WDCR ;不使能WDT LDP #0 SPLK #0000H,IMR ;不使能 SPLK #0FFFFH,IFR ;清全部中断标志 RET 23

24 6.3 I/O端口应用 (3)软件延时程序 DELAY: MAR *,AR4 LAR AR4,#0FFFEH LAR AR0,#00H
DELAY1: SBRK #1 NOP CMPR 00 BCND DELAY1,NTC RET 24

25 6.3 I/O端口应用 1、I/O端口作为输入和输出
使用键盘的响应作为I/O端口的输入,用I/O端口的输出点亮发光二极管,硬件接口电路如图6.3(P104)所示。用查询的方式读取键值,当K1键按下时,点亮发光二极管。K1键对应的I/O输入引脚为IOPF3,在IOPF3作通用I/O输入的情况下,如K1键按下则端口F数据和方向控制寄存器(PFDATDIR)的第3位为0。经过延时消抖动后如PFDATDIR .3仍为0则表示K1键按下。 图6.3 TMS320LF2407与键盘、LED接口电路 25

26 6.3 I/O端口应用 下面的实例程序实在前面程序的基础上添加了键盘输入程序,仅给出通用I/O作为输入时的初始化和读键盘程序。 (1)初始化程序 IOINIT: ;添加在前面程序的大循环 ;LOOP:之前就行了 LDP #DP_PF2 LACL MCRC AND #0F7FFH ;IOPF3 配置为一般的I/O口 SACL MCRC LACL PFDATDIR AND #0F7FFH ;IOPF3为输入方式 SACL PFDATDIR RET 26

27 6.3 I/O端口应用 (2)读K1键程序 READKEY: ;添加在前面程序的大循环LOOP:之后就行了 LDP #DP_PF2
LACL PFDATDIR ;取出键值PFDATDIR.3 SACL KEYDATA ;存放键值 LDP #DP_USER BIT KEYDATA,12 ;判IOPF3是否为1 BCND K1_RET,TC ;如IOPF3为1则K1没有按下 ;延时消抖动 LACL PFDATDIR ;再次取出键值PFDATDIR.3 SACL KEYDATA BIT KEYDATA,12 ;判IOPF3是否为1 ,如为0则确实有K1键按下 BCND K1_RET,TC SPLK #0FFH,IOSFT_REG ;给显示的数据值 K1_RET: RET 27


Download ppt "第6章: 数字输入/输出模块(I/O) 6.1 数字I/O端口概述 6.2 数字I/O端口寄存器 6.3 I/O端口应用."

Similar presentations


Ads by Google