第4章数字IO1.docx

上传人:b****5 文档编号:6009141 上传时间:2023-01-02 格式:DOCX 页数:17 大小:460.02KB
下载 相关 举报
第4章数字IO1.docx_第1页
第1页 / 共17页
第4章数字IO1.docx_第2页
第2页 / 共17页
第4章数字IO1.docx_第3页
第3页 / 共17页
第4章数字IO1.docx_第4页
第4页 / 共17页
第4章数字IO1.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

第4章数字IO1.docx

《第4章数字IO1.docx》由会员分享,可在线阅读,更多相关《第4章数字IO1.docx(17页珍藏版)》请在冰豆网上搜索。

第4章数字IO1.docx

第4章数字IO1

第4章数字输入/输出模块(I/O)

4.1数字I/O端口概述

LF2407A采用哈佛结构,有3个独立的空间:

程序空间、数据空间和I/O空间,均为64K字。

这3个空间对外共用一个16为地址总线和一个16位数据总线,并以3个片选线

区分为不同空间,其中,I/O空间可接外部设备,是LF2407与外部设备联系的接口。

本节介绍的数字I/O端口具有连接外部设备的功能,是LF2407A中除I/O空间外另一个与外部设备联系的接口。

数字I/O端口(GeneralPurposeDigitalI/O,GPIO)。

LF2407A有41个LF24数字I/O端口,其中绝大多数具有另一功能,这“另一个功能”都是SCI、SPI等片内外设模块的引脚功能。

例如PWM9/IOPE3引脚是数字I/O端口E的第3引脚,同时又是PWM9引脚。

其实,这一引脚是显着作为片内外设引脚的事件管理器B中产生PWM9的功能。

它是首先要完成的、基本功能。

在不使用PWM9功能的前提下,这一引脚才作为数字I/O端口。

这些复用的、共享的引脚是实现基本功能还是数字I/O端口功能呢?

这通过对控制寄存器的编程来确定。

当把这些共享引脚选定为数字I/O端口后,还将通过对相应控制寄存器的编程来确定数字I/O端口是输入还是输出。

I/O空间与数字I/O端口之间的共同点就是都可以与外部设备发生联系,都用于外部设备发生联系。

它们之间的区别在于I/O空间是通过16为地址总线和16位数据总线以及

与外部设备相联系,通过汇编语句IN、OUT读/写I/O空间中的某一地址上的数据,这个数是一个16位二进制数;而数字I/O口是片内外设模块之一,与定时器这样的片内外设功能等同,这一数字输入/输出(I/O)端口通过对片内控制寄存器进行读/写,以对数字I/O端口进行操作。

每一数字I/O口对应一位二进制数。

4.2数字I/O端口结构

从图中给出了LF2407A中一个数字I/O口共享引脚逻辑控制简图,表明了其内部结构和逻辑关系。

从图中可以看出,“引脚”既可以作为基本功能使用,也可以作为数字I/O使用。

其选择功能由I/O复用(MUX)控制寄存器(MCRX)的控制位来完成。

这里,该控制位仅是一个二进制数据位MCRx.n,当MCRx.n=1时,选择基本功能;当MCRx.n=0时,选择数字I/O功能。

当该“引脚”选择数字I/O功能后,将由“I/O端方向位”选定该端口是输入,还是输出。

当值为0时,选择输入功能;当值为1时,选择输出功能。

“I/O端口数据位”是数字I/O口数据位,当数字口作为输入使用时,从该位读数据;当数字口做输出使用时,向该位写数据。

注意:

数字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口功能)

0

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口功能)

0

MCRB.0

W/

IOPC0

1

MCRB.1

IOPC1

2

MCRB.2

SPISIMO

IOPC2

3

MCRB.3

SPISIMI

IOPC3

4

MCRB.4

SPICIK

IOPC4

5

MCRB.5

IOPC5

6

MCRB.6

CANTX

IOPC6

7

MCRB.7

CANRX

IOPC7

8

MCRB.8

XINT2/ADCSOC

IOPD0

9

MCRB.9

EMU0

保留

10

MCRB.10

EMU1

保留

11

MCRB.11

TCK

保留

12

MCRB.12

TDI

保留

13

MCRB.13

TDO

保留

14

MCRB.14

TMS

保留

15

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)的位定义

位名称

引脚功能选择

MCRB.n=1(基本功能)

MCRB.n=0(I/O口功能)

0

MCRC.0

CLKOUT

IOPE0

1

MCRC.1

PWM7

IOPE1

2

MCRC.2

PWM8

IOPE2

3

MCRC.3

PWM9

IOPE3

4

MCRC.4

PWM10

IOPE4

5

MCRC.5

PWM11

IOPE5

6

MCRC.6

PWM12

IOPE6

7

MCRC.7

CAP4/QEP3

IOPE7

8

MCRC.8

CAP5/QEP4

IOPF

9

MCRC.9

CAP6

IOPF1

10

MCRC.10

T3PWM/T3CMP

IOPF2

11

MCRC.11

T4PWN/T4CMP

IOPF3

12

MCRC.12

TDIRB

IOPF4

13

MCRC.13

TCLKINB

IOPF5

14

MCRC.14

保留

IOPF6

15

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),

地址:

7098h

位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),

地址:

709Ah

位15-8:

BnDIR

0:

相应引脚配置为输入

1:

相应引脚配置为输出

位7-0:

IOPBn

如果BnDIR=0,引脚配置为输入

0-相应引脚的电平读为低电平

1-相应引脚的电平读为高电平

如果BnDIR=1,引脚配置为输出

0-设置相应引脚,使其输出信号为低电平时有效

1-设置相应引脚,使其输出信号为高电平时有效

如果I/O端口用作通用I/O,则必须对数据和方向寄存器进行初始化设置,为输入还是输出。

寄存器PBDATDIR的数据位与对应I/O引脚

(3)I/O端口C数据和方向控制寄存器(PCDATDIR),

地址:

709Ch

位15-8:

CnDIR

0:

相应引脚配置为输入

1:

相应引脚配置为输出

位7-0:

IOPCn

如果CnDIR=0,引脚配置为输入

0-相应引脚的电平读为低电平

1-相应引脚的电平读为高电平

如果CnDIR=1,引脚配置为输出

0-设置相应引脚,使其输出信号为低电平时有效

1-设置相应引脚,使其输出信号为高电平时有效

如果I/O端口用作通用I/O,则必须对数据和方向寄存器进行初始化设置,为输入还是输出。

寄存器PCDATDIR的数据位与对应I/O引脚

 

(4)I/O端口D数据和方向控制寄存器(PDDATDIR),

地址:

709Eh

位15~9:

保留位

位8DnDIR

0:

相应引脚配置为输入

1:

相应引脚配置为输出

位7-1:

保留位

位0:

IOPDn

如果DnDIR=0,引脚配置为输入

0-相应引脚的电平读为低电平

1-相应引脚的电平读为高电平

如果DnDIR=1,引脚配置为输出

0-设置相应引脚,使其输出信号为低电平时有效

1-设置相应引脚,使其输出信号为高电平时有效

如果I/O端口用作通用I/O,则必须对数据和方向寄存器进行初始化设置,为输入还是输出。

寄存器PDDATDIR的数据位与对应I/O引脚

(5)I/O端口E数据和方向控制寄存器(PEDATDIR),

地址:

7095h

位15~8:

EnDIR

0:

相应引脚配置为输入

1:

相应引脚配置为输出

位7-0:

IOPEn

如果EnDIR=0,引脚配置为输入

0-相应引脚的电平读为低电平

1-相应引脚的电平读为高电平

如果EnDIR=1,引脚配置为输出

0-设置相应引脚,使其输出信号为低电平时有效

1-设置相应引脚,使其输出信号为高电平时有效

如果I/O端口用作通用I/O,则必须对数据和方向寄存器进行初始化设置,为输入还是输出。

寄存器PEDATDIR的数据位与对应I/O引脚

(6)I/O端口F数据和方向控制寄存器(PFDATDIR),

地址:

7096h

位15:

保留位

位14~8:

EnDIR

0:

相应引脚配置为输入

1:

相应引脚配置为输出

位7:

保留位

位6-0:

IOPFn

如果FnDIR=0,引脚配置为输入

0-相应引脚的电平读为低电平

1-相应引脚的电平读为高电平

如果FnDIR=1,引脚配置为输出

0-设置相应引脚,使其输出信号为低电平时有效

1-设置相应引脚,使其输出信号为高电平时有效

如果I/O端口用作通用I/O,则必须对数据和方向寄存器进行初始化设置,为输入还是输出。

寄存器PFDATDIR的数据位与对应I/O引脚

4.5数字I/O端口配置实例

配置:

选择I/O引脚的功能,且设置I/O引脚的方向。

I/O配置实例程序:

MCRA.set7090h;可将这些映射语句放于240x.h文件中

PADATDIR.set7098h;可将这些映射语句放于240x.h文件中

PBDATDIR.set709Ah;可将这些映射语句放于240x.h文件中

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。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1