计算机课件第8章 数字量IO

上传人:woxinch****an2018 文档编号:56921598 上传时间:2018-10-17 格式:PPT 页数:23 大小:305.50KB
返回 下载 相关 举报
计算机课件第8章 数字量IO_第1页
第1页 / 共23页
计算机课件第8章 数字量IO_第2页
第2页 / 共23页
计算机课件第8章 数字量IO_第3页
第3页 / 共23页
计算机课件第8章 数字量IO_第4页
第4页 / 共23页
计算机课件第8章 数字量IO_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《计算机课件第8章 数字量IO》由会员分享,可在线阅读,更多相关《计算机课件第8章 数字量IO(23页珍藏版)》请在金锄头文库上搜索。

1、2010,数字量I/O模块,教学内容: 1、数字I/O寄存器 2、数字I/O端口应用配置实例,教学目的: 1、掌握TMS320LF240x DSP数字I/O端口复用的实现原理 2、通过具体实例掌握数字I/O端口寄存器的配置,2010,教学重点:数字I/O寄存器及其功能、数字I/O端口的配置。,教学难点:根据实际的要求,灵活配置数字I/O端口以及分析原理图的工作原理,参考文献:1、TMS320LF240x DSP C 语言开发应用北京航空航天大学出版社 刘和平编2、DSP应用技术教程中国电力出版社 颜友钧编,2010,一、数字量I/O端口概述 TMS320LF2407系列有多达41个通用、双向的

2、数字量I/0引脚(分成A-F 6组),与外设之间实现电平的输入和输出。大部分具有复用特性,既可以用于通用I/O口,又可以用于特殊功能。数字I/O脚的功能通过9个16位控制寄存器来控制。控制寄存器分为两类:(重点)(1)I/O复用控制寄存器(3个:MCR(AC):来选择I/O脚是外设功能还是I/O功能。(2)数据方向控制寄存器(6个:P(A-F)DATDIR):控制双向I/O脚的数据和数据方向。,2010,二、数字量I/0端口寄存器I/O复用引脚如下图所示,2010,41个I/O口分成AF 6组端口,2010,3个I/O端口复用控制寄存器,MCRA(7090h)、MCRB(7092h)、MCRC

3、(7094h),位15:写1为TCLKINA ;写0为IOPB7。,位14:写1为TDIRA ;写0为IOPB6。,位13:写1为T2PWM/T2CMP ;写0为IOPB5。,位12:写1为T1PWM/T1CMP ;写0为IOPB4。,位11:写1为PWM6 ;写0为IOPB3。,位10:写1为PWM5 ;写0为IOPB2。,1) MCRA复用控制寄存器(控制8个A组、8个B组端口的使用),2010,位9:写1为PWM4 ;写0为IOPB1。,位8:写1为PWM3 ;写0为IOPB0。,位7:写1为PWM2 ;写0为IOPA7。,位6:写1为PWM1 ;写0为IOPA6。,位5:写1为CAP3

4、 ;写0为IOPA5。,位4:写1为CAP2/QEP2 ;写0为IOPA4。,位3:写1为CAP1/QEP1 ;写0为IOPA3。,位2:写1为XINT1 ;写0为IOPA2。,位1:写1为SCIRXD ;写0为IOPA1。,位0:写1为SCITXD ;写0为IOPA0。,1) MCRA复用控制寄存器(控制8个A组、8个B组端口的使用),高8位为B组,低8位为A组,2010,2) MCRB复用控制寄存器(控制8个C组、1个D组端口的使用),注意:位15-9:必须配置为1,使该部分引脚为JTAG接口功能 。,位8:写1为XINT2/ADCSOC ;写0为IOPD0。,位7:写1为CANRX ;写

5、0为IOPC7。,位6:写1为CANTX ;写0为IOPC6。,位5:写1为SPISTE ;写0为IOPC5。,位4:写1为SPICLK ;写0为IOPC4。,位3:写1为SPISOMI ;写0为IOPC3。,位2:写1为SPISIMO ;写0为IOPC2。,位1:写1为BIO ;写0为IOPC1。,位0:写1为W/R ;写0为IOPC0。,.8位为D组,低8位为C组,2010,3)MCRC 复用控制寄存器(控制8个E组、7个F组端口的使用),位15:保留。,位14:写1为IOPF6 ;写0为IOPF6 。,位13:写1为TCLKINB ;写0为IOPF5 。,位12:写1为TDIRB ;写0

6、为IOPF4 。,位11:写1为T4PWM/T4CMP ;写0为IOPF3 。,位10:写1为T3PWM/T3CMP ;写0为IOPF2 。,位9:写1为CAP6 ;写0为IOPF1 。,位8:写1为CAP5/QEP4 ;写0为IOPF0 。,2010,位7:写1为CAP4/QEP3 ;写0为IOPE7 。,位6:写1为PWM12 ;写0为IOPE6 。,位5:写1为PWM11;写0为IOPE5 。,位4:写1为PWM10 ; 写0为IOPE4 。,位3:写1为PWM9 ;写0为IOPE3 。,位2:写1为PWM8 ;写0为IOPE2 。,位1:写1为PWM7 ;写0为IOPE1。,位0:写1

7、为CLKOUT ;写0为IOPE0 。,3)MCRC功能配置(控制8个E组、7个F组端口的使用),.14-8位为F组,低8位为E组,2010,三、 数据和方向控制寄存器,PxDATDIR(x为AF)共有6个,只有当I/O端口被设置为通用I/O功能时,数据和方向控制寄存器才起作用。,6个寄存器的格式基本相同,其高8位表示对应的低8位的数据输入输出方向,低8位表示相应的I/O口的有效逻辑电平。,(1)A组端口PADATDIR,当AxDIR1时,IOPAx位对应的引脚为输出方式;当AxDIR0时,IOPAx位对应的引脚为输入方式。位IOPAx的值表示输入或输出的状态,0表示低电平,1表示高电平。例如

8、,当AxDIR=1时,若IOPAx=0,表示相应引脚输出低电平;若IOPAx1,表示相应引脚输出高电平,2010,6.4/5 I/O应用配置,软件设计头文件:定义映射寄存器地址和变量I/O配置、应用程序:配置复用控制寄存器MCRA使位【158】为0,使B口为I/O口;配置数据和方向寄存器PBDATDRR使端口B为输出口;从B口输出控制LED的发亮。,MCRA=0000H,使.15-8=0; PBDATDRR=FFFFH,使端口B为输出口, 且输出高电平控制LED发亮。,2010,四、 I/O应用配置,端口作为输出74HC273用于驱动个发光二极管,CLR接TMS320LF2407的复位引脚,使

9、在复位时74HC273输出为低电平,不点亮发光二极管IOPF2接CLK作为74HC273的控制信号,用端口IOPB来控制发光二极管的亮灭,(查芯片的几个网站: http:/ ,http:/对应其功能表分析上图的工作原理),2010,8.4 I/O应用配置,端口作为输入与输出,通过查询方式读取键值,当K1键按下时,就点亮发光二极管K1键对应的输入I/O引脚为IOF3,在IOF3作为一般I/O输入的情况下,如K1键按下则端口数据和方向控制寄存器(PFDATDIR)的第3位为0经过延时消抖动后如PFDATDIR.3仍为0表示K1键按下程序中如K1键按下,就点亮发光二极管,2010,8.4 I/O应用

10、配置,端口作为输入与输出,软件设计头文件:定义映射寄存器地址和变量I/O配置、应用程序:配置复用控制寄存器MCRA、MCRC使B口、F口为I/O口,且配置数据和方向寄存器PBDATDIR、PFDATDIR使B为输出口、F为输入口;按键控制LED发亮的功能程序。,2010,#ifndef TMS320LF2407_H #define TMS320LF2407_H /*C2xx 内核寄存*/ volatile unsigned int *IMR = (volatile unsigned int *) 0x0004; /*中断屏蔽寄存器*/ volatile unsigned int* IFR =

11、(volatile unsigned int *) 0x0006; /*中断标志寄存器*/ ioport unsigned portFFFF; #define WSGR portFFFF . /* 数字 I/O 控制寄存器*/ volatile unsigned int * MCRA = (volatile unsigned int *) 0x7090; /* I/O 复用控制寄存器A*/ volatile unsigned int * MCRB = (volatile unsigned int *) 0x7092; /* I/O 复用控制寄存器B*/ volatile unsigned in

12、t * MCRC = (volatile unsigned int *) 0x7094; /* I/O 复用控制寄存器C*/,2010,volatile unsigned int * PADATDIR = (volatile unsigned int *) 0x7098; /* I/O 端口 A 数据和方向控制寄存器*/ volatile unsigned int * PBDATDIR= (volatile unsigned int *) 0x709A; /* I/O 端口 B 数据和方向控制寄存器*/ volatile unsigned int * PCDATDIR= (volatile u

13、nsigned int *) 0x709C; /* I/O 端口 C 数据和方向控制寄存器*/ volatile unsigned int * PDDATDIR= (volatile unsigned int *) 0x709E; /* I/O 端口 D 数据和方向控制寄存器*/ volatile unsigned int * PEDATDIR= (volatile unsigned int *) 0x7095; /* I/O 端口 E 数据和方向控制寄存器*/ volatile unsigned int * PFDATDIR= (volatile unsigned int *) 0x7096

14、; /* I/O 端口 F 数据和方向控制寄存器*/,2010,IO端口B的4-7连接4个led,当相应端口输出高电平时亮。,PBDATDIR的高8位是方向设置,初始化后一般不再改变,低8位是IO数据,使用了.7-4位,为使led循环点亮,需要改变其值。,在程序中设置了一个全局变量led,其高8位为0,低8位的.7-4位控制led的点亮,.3-0为0,C语言控制led轮流点亮的主要语句为:,led=led1; /控制数据右移1位 PBDATDIR=PBDATDIR /*输出点亮led的控制值*/,2010,I/O配置初始化程序 /*IOPort_Initializing(),将IOPB设置为输

15、出方式*/ void IOPort_Initializing() MCRA=0x0FFF; /*设置IOPB.7-4为I/O端口 MCRA.15-.8对应IOPB.7-.0, MACR.7-.0对应IOPA.7-.0*/PBDATDIR=0x0F000; /*设置IOPB.7-4为输出端口, PBDATDIR.15-.8为输入/输出控制,1-输出,0-输入,PBDATDIR.7-.0为输入/输出的数据*/ ,软件设计,2010,F2407初始化程序 void DSP2407_Initializing() asm(“ setc INTM“); /关总中断,INTM=1asm(“ setc SIM

16、“); /符号扩展asm(“ clrc OVM“); /不作溢出处理asm(“ clrc CNF“); /DARAM B0映射在数据空间SCSR1=0x00FC; /工作频率CLKOUT=4xCLKIN /*0000000011111100b,软件设计,2010,/*0000000011111100b0-保留0-选择CLKOUT输出时钟信号00-CPU低功耗模式为IDLE1000-倍频系数为4111111-使能相关功能模块0-保留0-无效地址检测位*/ WDCR=0x0068; /关软件看门狗 IMR=0x003F; /开放所有CPU级中断,低6位对应INT6-1 IFR=0x003F; /清除所有中断请求,低6位对应INT6-1 ,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号