好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

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

23页
  • 卖家[上传人]:woxinch****an2018
  • 文档编号:56921598
  • 上传时间:2018-10-17
  • 文档格式:PPT
  • 文档大小:305.50KB
  • / 23 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 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个通用、双向的数字量I/0引脚(分成A-F 6组),与外设之间实现电平的输入和输出大部分具有复用特性,既可以用于通用I/O口,又可以用于特殊功能数字I/O脚的功能通过9个16位控制寄存器来控制控制寄存器分为两类:(重点)(1)I/O复用控制寄存器(3个:MCR(A~C)):来选择I/O脚是外设功能还是I/O功能2)数据方向控制寄存器(6个:P(A-F)DATDIR):控制双向I/O脚的数据和数据方向2010,二、数字量I/0端口寄存器I/O复用引脚如下图所示,2010,41个I/O口分成A~F 6组端口,2010,3个I/O端口复用控制寄存器,MCRA(7090h)、MCRB(7092h)、MCRC(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为IOPB21) 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 ;写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为IOPA01) 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 ;写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为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为CLKOUT ;写0为IOPE0 3)MCRC功能配置(控制8个E组、7个F组端口的使用),[.14-8]位为F组,低8位为E组,2010,三、 数据和方向控制寄存器,PxDATDIR(x为A~F)共有6个,只有当I/O端口被设置为通用I/O功能时,数据和方向控制寄存器才起作用6个寄存器的格式基本相同,其高8位表示对应的低8位的数据输入输出方向,低8位表示相应的I/O口的有效逻辑电平1)A组端口PADATDIR,当AxDIR=1时,IOPAx位对应的引脚为输出方式;当AxDIR=0时,IOPAx位对应的引脚为输入方式位IOPAx的值表示输入或输出的状态,0表示低电平,1表示高电平例如,当AxDIR=1时,若IOPAx=0,表示相应引脚输出低电平;若IOPAx=1,表示相应引脚输出高电平,2010,6.4/5 I/O应用配置,软件设计头文件:定义映射寄存器地址和变量I/O配置、应用程序:配置复用控制寄存器MCRA使位【15~8】为0,使B口为I/O口;配置数据和方向寄存器PBDATDRR使端口B为输出口;从B口输出控制LED的发亮。

      MCRA=0000H,使[.15-8]=0; PBDATDRR=FFFFH,使端口B为输出口, 且输出高电平控制LED发亮2010,四、 I/O应用配置,I/O端口作为输出74HC273用于驱动8个发光二极管,CLR接TMS320LF2407的复位引脚,使在复位时74HC273输出为低电平,不点亮发光二极管.IOPF2接CLK作为74HC273的控制信号,用端口IOPB来控制发光二极管的亮灭.,(查芯片的几个网站: ,对应其功能表分析上图的工作原理),2010,8.4 I/O应用配置,I/O端口作为输入与输出,通过查询方式读取键值,当K1键按下时,就点亮发光二极管.K1键对应的输入I/O引脚为IOF3,在IOF3作为一般I/O输入的情况下,如K1键按下则端口F数据和方向控制寄存器(PFDATDIR)的第3位为0.经过延时消抖动后如PFDATDIR.3仍为0表示K1键按下.程序中如K1键按下,就点亮发光二极管.,2010,8.4 I/O应用配置,I/O端口作为输入与输出,软件设计头文件:定义映射寄存器地址和变量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 = (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 int * 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 unsigned 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; /* 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=led>>1; //控制数据右移1位 PBDATDIR=PBDATDIR /*输出点亮led的控制值*/,2010,I/O配置初始化程序 /*IOPort_Initializing(),将IOPB设置为输出方式*/ 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“); //符号扩展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 },。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.