DSP控制器原理与应用 张小鸣 第六章片内外设.ppt_第1页
DSP控制器原理与应用 张小鸣 第六章片内外设.ppt_第2页
DSP控制器原理与应用 张小鸣 第六章片内外设.ppt_第3页
DSP控制器原理与应用 张小鸣 第六章片内外设.ppt_第4页
DSP控制器原理与应用 张小鸣 第六章片内外设.ppt_第5页
已阅读5页,还剩112页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第六章 TMS320LF240x的片内外设,6.1 数字I/O端口,6.1.1 概述,数字I/O端口是芯片与外界联系的一种接口,它实现的是电平信号的输入和输出。DSP芯片的I/O端口都具有双重的功能(即功能复用),或用于一般的输入输出功能,或用于一些特殊的功能,究竟是哪一种功能,可通过设置复用控制寄存器来实现。当I/O口已设定为一般的输入输出功能时,其数据输入输出的方向可利用数据和方向控制寄存器来设置。因此,对I/O端口的操作对应着两类寄存器:I/O端口复用控制寄存器和数据和方向控制寄存器,前者决定I/O端口的功能,后者决定一般功能引脚的数据方向和当前输入或输出的有效电平。,TMS320LF2407芯片的I/O端口分为A、B、C、D、E、F共6组,对应的I/O端口复用控制寄存器和数据和方向控制寄存器共9个。,退出,退出,6.1.2 I/O端口的复用控制寄存器,1、MCRA功能配置,位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。,位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为IOPA0。,2、MCRB功能配置,位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。,3、MCRC功能配置,位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 。,位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 。,退出,6.1.3 I/O端口的数据和方向控制寄存器,数据和方向控制寄存器PxDATDIR(x为AF)共有6个,只有当I/O端口被设置成一般的I/O功能时,数据和方向控制寄存器才起作用。,6个数据和方向控制寄存器的格式基本相同,其高8位表示对应的低8位的数据输入输出方向,低8位表示相应的I/O口的有效逻辑电平。,(1)A组端口PADATDIR,退出,表中,位AxDIR(x为70)决定对应位IOPAx(x为70)引脚的输入或输出方向。当AxDIR1时,IOPAx位对应的引脚为输出方式;当AxDIR0时,IOPAx位对应的引脚为输入方式。位IOPAx的电平表示输入或输出的状态,0表示低电平,1表示高电平。例如,当AxDIR=1时,若IOPAx=0,表示相应引脚输出低电平;若IOPAx1,表示相应引脚输出高电平,退出,(2)B组端口的PBDATDIR,(3)C组端口的PCDATDIR,退出,(4)D组端口的PDDATDIR,(5)E组端口的PEDATDIR,退出,(6)F组端口的PFDATDIR,退出,6.1.4 I/O端口应用,图示一个TMS320LF2407与发光二极管的接口电路。该电路所实现的功能是循环点亮发光二极管,每个发光二极管亮0.5秒。,74HC273是8位数据/地址锁存器,D0D7为数据输入端;Q0-Q7为数据输出端;CLR为主清除端,低电平触发,将锁存数据清零;CLK是触发端,上升沿触发,即当CLK从低到高电平时,D0-D7的数据通过芯片输出到Q0-Q7,为0时将数据锁存。,(1)主程序 IOSFT_REG .usect “.data0,1”;显示数据寄存器 .include “F2407REGS.H” ;引用头文件 .def _c_int0 .text _c_int0: ;主程序入口 CALL SYSINIT ;调系统初始化程序 LDP #225 ;指向7080h-70FFh LACL MCRA ;MCRA装载ACC AND #000FFh ;IOPB配置为一般I/O功能 SACL MCRA ;ACC送MCRA LACL MCRC ;MCRC装载ACC AND #0FBFFh ;IOPF2口配置为一般I/O功能 SACL MCRC ;ACC送MCRC LACL PBDATDIR ;PBDATDIR装载ACC OR #0FF00h ;IOPB口设置为输出方式,退出,SACL PBDATDIR ;ACC送PBDATDIR LDP #5 ;指向0280h-02FFh SPLK #01h,IOSFT_REG;给显示的数据赋初值 LOOP: LDP #225 LACL PFDATDIR ;PFDATDIR装载ACC OR #0404h ;IOPF2设置为输出方式,输出高电平 SACL PFDATDIR ;ACC送PFDATDIR LDP #5 LACL IOSFT_REG ;显示数据装载ACC LDP #225 SACL PBDATDIR ;送显示数据到IOPB口 LACL PFDATDIR AND #0FFFBh ;IOPF2=0 SCAL PFDATDIR ;关74HC273片选信号,退出,CALL DELAY ;调延时子程序 LDP #5 LACL IOSFT_REG ;送显示数据到ACC SFL ;左移1位 SACL IOSFT_REG BIT IOSFT_REG,BIT7 ;判断是否循环完一次 BCND LOOP1,TC ;TC=1转LOOP1,即循环完一次 B WAIT ;否则,转WAIT LOOP1: LDP #5 SPLK #01h,IOSFT_REG ;如循环完一次则显示数据赋初值WAIT: NOP B LOOP ;如没循环完则转LOOP,退出,(2)系统初始化程序,SYSINIT: SETC INTM ;中断禁止 CLRC SXM ;抑制符号扩展 CLRC OVM ;ACC正常溢出 CLRC CNF ;B0配置为数据存储空间 LDP #224 ;DP=224 SPLK #81FEh,SCSR1 ;CLKIN=6M,CLKOUT=24M SPLK #0E8h,WDCR ;不使能WDT LDP #0 ;DP=0 SPLK #0000h,IMR ;禁止中断 SPLK #0FFFFh,IFR ;清全部中断标志 RET,退出,(3)软件延时子程序 ;延时0.5秒,DELAY: MAR *,AR4 ;ARP=4 LAR AR4,#0FFFEh ;AR4装数据 LAR AR0,#00h ;AR0装数据 DELAY1: SBRK #1 ;AR4减1 RPT #181 NOP CMPR 0 ;AR4是否等于AR0的数据 BCND DELAY1,NTC ;若AR4没减到0则转DELAY1 RET .END,退出,6.2 事件管理模块(EV),6.2.1 概述,TMS320LF240x芯片内含有两个事件管理器模块EVA和EVB,用于运动控制和电机控制。每个事件管理器模块又包含通用定时器(GP)、比较单元、捕获单元以及正交编码(QEP)脉冲电路。EVA和EVB的定时器、比较单元以及捕获单元的结构功能相同,只是单元的名称有所区别。,退出,退出,EVA和EVB的结构图见教材P261262 引脚说明,1、EVA模块中的寄存器(起始地址是7400h ),EVA定时寄存器地址,退出,EVA比较控制寄存器地址,退出,EVA捕获控制寄存器地址,退出,EVA中断寄存器地址,退出,EVB定时寄存器地址,退出,EVB比较控制寄存器地址,退出,EVB捕获控制寄存器地址,退出,EVB中断寄存器地址,退出,6.2.2 事件管理器的中断管理,1中断组,PDPINTA,EVA,退出,EVB,退出,2中断产生,当事件管理器模块产生一个中断时,则其对应的中断标志寄存器的相应标志位就被置1。如果此时相应的中断未被屏蔽,则外设中断扩展控制器(PIE)就产生了一个外设中断请求。,3中断向量,当中断请求被CPU接受时,和最高优先级相对应的那个中断向量被装载到PIVR中,在中断服务程序(ISR)中可读取该中断向量。在这里需注意的是,一旦发生中断,在中断服务程序中应通过向中断标志寄存器的相应位置1的方法来清除中断标志,否则,该中断以后将不再产生中断请求。,4中断过程,当事件管理器中断请求被接受后,必须将外设中断向量寄存器(PIVR)中的内容左移1位后装载到ACC中,然后再将外设中断向量段的起始地址加至ACC,用BACC指令跳转到相应的中断入口地址,从而执行相应的中断服务子程序。,退出,5EVA的中断寄存器,(1) EVA中断标志寄存器,1) EVA中断标志寄存器A(EVAIFRA),当各有效位读出值为1时,表示对应的中断发出申请;读出值为0时,表示对应的中断没有申请。对各有效位写入0无效,写1清除该位的中断标志。,退出,2) EVA中断标志寄存器B(EVAIFRB),3)EVA中断标志寄存器C(EVAIFRC),退出,(2) EVA中断屏蔽寄存器,1) EVA中断屏蔽寄存器A(EVAIMRA),向某一有效位写0,表示屏蔽(禁止)该位对应的中断发生;写1表示使能(允许)该位对应的中断。,退出,2) EVA中断屏蔽寄存器B(EVAIMRB),3) EVA中断屏蔽寄存器C(EVAIMRC),退出,6EVB的中断寄存器,(1) EVB中断标志寄存器,1)EVB中断标志寄存器A(EVBIFRA),当各有效位读出值为1时,表示对应的中断发出申请;读出值为0时,表示对应的中断没有申请。对各有效位写入0无效,写1清除该位的中断标志。,退出,2) EVB中断标志寄存器B(EVBIFRB),3) EVB中断标志寄存器C(EVBIFRC),退出,(2) EVB中断屏蔽寄存器,1)EVB中断屏蔽寄存器A(EVBIMRA),向某一有效位写0,表示屏蔽(禁止)该位对应的中断发生;写1表示使能(允许)该位对应的中断。,退出,2) EVB中断屏蔽寄存器B(EVBIMRB),3) EVB中断屏蔽寄存器C(EVBIMRC),退出,6.2.3 通用定时器,1通用定时器的概述,定时器是计算机的一个非常重要的内置部件。 TMS320LF2407芯片内含有4个通用定时器,每个通用定时器都采用16位计数器,因此,它们的计数范围是065535个脉冲。 计数脉冲可由内部时钟经分频产生,也可以由外部引脚来提供。计数方向可以是增计数,也可以是减计数。 在定时器的内部设有周期寄存器和比较寄存器。定时器除了产生上溢、下溢事件外,当计数值与周期寄存器或比较寄存器的值相等时,还会产生周期匹配和比较匹配两种事件。如果开启了比较输出功能,这些事件还将引起输出引脚的电平变化。所以,DSP控制器的通用定时器为控制系统的各种应用提供了设计上的便利。,通用定时器的功能结构框图如图所示。,可读写的16位加/减计数寄存器TxCNT。,可读写的16位带有缓冲和影子寄存器的比较寄存器TxCMPR,可读写的16位带有缓冲和影子寄存器的周期寄存器TxPR,可读写的16位定时控制寄存器TxCON,可选择的内部或外部输入时钟,用于内部或外部时钟输入的可编程的预定标器,控制和中断逻辑用于4个可屏蔽的中断,可选择方向的输入引脚TDIRx,退出,2通用定时器功能模块,各个通用定时器之间可以彼此独立工作或相互同步工作。,与每个定时器有关的比较寄存器可用作比较功能或PWM波形发生。,对于每个定时器在增/减计数方式中,有3种连续的工作方式。,每个定时器的内部或外部的输入时钟都可以进行可编程的预定标。,定时器1对所有的比较和PWM电路提供时基,定时器2或1对捕获单元和正交脉冲计数操作提供时基。,周期寄存器和比较寄存器双缓冲允许根据需要编程改变(PWM)周期和脉冲宽度。,控制寄存器GPTCONA/B规定了通用定时器针对不同的定时器事件所采取的操作,并指明了所有4个通用定时器的计数方向。,退出,(1)通用定时器的输入,内部CPU时钟,外部时钟TCLKINA/B,最大频率是CPU时钟频率1/4,方向输入TDIRA/B,复位信号RESET,正交编码脉冲电路可产生定时器的时钟和计数方向,(2) 通用定时器的输出,通用定时器比较输出TxCMP(x=1,2,3,4),到ADC模块的模数转换启动信号,比较逻辑和比较单元的下上溢、匹配和周期匹配信号,计数方向指示位,退出,(3)通用定时器的控制寄存器,1)单个通用定时器控制寄存器TxCON(x=1,2,3,4)。 TxCON决定着定时器的操作模式,位12-11:用于选择计数模式。为00时,停止/保持模式;为01时,连续增/减计数模式;为10时,连续增计数模式;为11时,定向增/减模式。,位10-8:确定输入时钟预定标系数。为000时,输入时钟为fCPU/1;为001,为fCPU/2;为010,为fCPU/4;为011,为fCPU/8;为100,为fCPU/16;为101,为fCPU/32;为110,为fCPU/64;为111,为fCPU/128。,位7:为定时器2、4的使能选择位(仅在定时器2、4中有效)。为0时,定时器2、4使用自身的使能位;为1时,使用T1CON、T3CON中的使能位来使能或禁止定时器2、4的相应操作,从而忽略了自身的定时器使能位,位6:为定时器使能位。为0时,禁止定时器操作,即定时器被置于保持状态且预定标器被复位;为1时,使能定时器的操作 。,位54用于时钟的选择。为00时,选择内部CPU时钟;为01时,选择外部时钟;为10时保留;为11时选择正交编码脉冲(仅适用于定时器2和4,在SELT1PR=0时有效)。,位32:决定比较寄存器的重装载条件。为00时,当计数值是0时重装载;为01时,当计数值是0或等于周期寄存器值时重装载;为10时,立即重装载;为11时保留。,位1:为定时器的比较使能位。为0时禁止定时器的比较操作;为1时使能定时器的比较操作。,位0:为周期寄存器的选择位(仅在定时器2和4中有效)。为0时,使用自身周期寄存器;为1时,使用T1PR或T3PR作为周期寄存器。,退出,2)全局通用定时器控制寄存器GPTCONA/B。 GPTCONA/B规定了通用定时器针对不同定时器事件所采取的操作,并指明了它们的计数方向。,GPTCONA,位14:是通用定时器2的只读状态位,用于仿真观察。当为0时作减计数;为1时作加计数。,位13:是通用定时器1的只读状态位,用于仿真观察。当为0时作减计数;为1时作加计数。,位10-9:用于定时器2启动ADC事件。为00时,无事件启动ADC;为01时,设置由下溢中断启动ADC;为10时,设置由周期中断启动ADC;为11时,设置由比较中断启动ADC。,位8-7:用于定时器1启动ADC事件。为00时,无事件启动ADC;为01时,设置由下溢中断启动ADC;为10时,设置由周期中断启动ADC;为11时,设置由比较中断启动ADC。,位6:是比较输出使能位。为0时,禁止所有通用定时器的比较输出(高阻状态);为1时,使能(允许)所有通用定时器的比较输出。,位3-2:是通用定时器2的比较输出极性选择位。为00时,输出强制低电平;为01时,输出低电平有效;为10时,输出高电平有效;为11时,输出强制高电平。,位1-0:是通用定时器1的比较输出极性选择位。为00时,输出强制低电平;为01时,输出低电平有效;为10时,输出高电平有效;为11时,输出强制高电平。,退出,GPTCONB,全局通用定时器GTPCONB各位的含义可参照GTPCONA,所不同的是把定时1、2改为定时器3、4,,退出,3通用定时器的计数操作,(1)停止/保持模式,在该种模式下,通用定时器停止操作并保持当前状态,计数寄存器、比较输出和分频系数都保持不变。,(2)连续增计数模式,定时器按照预定标时钟进行计数,并与周期寄存器(TxPR)进行比较,直到计数值与周期寄存器中数值匹配为止,在匹配之后的下一个输入时钟的上升沿复位计数器的数值为0,并重新开始下一个计数周期的计数操作。在发生匹配的两个CPU周期之后,周期中断标志位被清除。,显然,如果定时计数器的初始数值为0,定时器的周期为TxPR+1个定标的时钟输入周期。,退出,通用定时器连续增计数模式的工作过程:,在该计数模式下,若外设中断没有被屏蔽,则一旦发生匹配就对相应的周期中断标志进行置位,并产生外设中断请求。如果该中断已经设置为用来启动ADC,则在中断标志被置位的同时,将启动一次ADC。,定时器的初始值可在0000hFFFFh范围内选。当初始值大于周期寄存器数值时,定时器将计数到FFFFh,上溢中断标志位置位,计数值复位为0后再进入正常的操作;当初始值等于周期寄存器数值时,定时器将置位周期中断标志,计数器复位为0,并产生下溢中断标志进入正常操作。,退出,【例6-1】 本例给出了通用定时器1在连续增计数模式下的初始化程序。,LDP #DP_EVA ;指向7400h-747Fh单元 SPLK #41h,GPTCONA ;TCOMPOE=1允许定时器比较输出 SPLK #5h,T1PR ;设置周期寄存器 SPLK #3h,T1CMPR ;设置比较寄存器 SPLK #0h,T1CNT ;设置计数寄存器 SPLK #0174Eh,T1CON ;TMODE=10连续增计数, ;TPS=111预分频为128 ;TENABLE=1定时器计数使能 ;TCLKS=00内部时钟 ;TECMPR=1定时器1比较使能,退出,(3)定向增/减计数模式,定时器根据预定标时钟信号和TDIRA/B引脚的输入进行连续加或减计数操作。当引脚TDIRA/B为高电平时,定时器将加计数一直到等于周期寄存器的数值,然后定时计数器复位为0,并继续进行加计数操作;当引脚TDIRA/B为低电平时,定时器将进行减计数操作,一直到0,然后定时器重新装载周期寄存器的数值,并继续进行减计数操作。,退出,初始值可以为0000h-FFFFh之间的任何值。当计数初始值大于周期寄存器的值时,如果引脚TDIRA/B为高电平,定时器复位到0,并继续加计数到周期寄存器的值;如果引脚TDIRA/B为低电平,则计数器减计数到周期寄存器的值后,再减计数到0,然后重新装入周期寄存器的值,并开始新的减计数操作。,从引脚TDIRA/B的变化到计数方向变化之间的延迟是当前计数结束后的两个CPU时钟周期,即当前预定标的计数周期结束后的两个CPU周期。 在该种计数模式下,无论是通过TCLKINA/B输入的外部时钟信号,还是来自内部的CPU时钟,都可作为该模式下的计数输入。,周期、下溢、上溢中断的标志位及中断和相关的事件都由各自的匹配产生,其产生方式与连续增计数模式相同。 通用定时器定向增/减计数模式可用于正交编码脉冲电路,在这种情况下,正交编码脉冲电路为定时器2和4提供计数时钟和计数方向。,退出,(4)连续增/减计数模式,计数过程与定向增/减模式工作过程类似,只是在该模式下,引脚TDIRA/B不影响计数方向。计数方向只是在计数值达到周期寄存器的值,才从加计数转变为减计数,或者在计数值为0时,才从减计数变为加计数。,退出,该计数模式的计数初始值不同,第一个周期的计数方向和周期也不同。当计数初始值在0和周期寄存器的值之间时,计数器将加计数到周期寄存器的值,然后进入正常计数操作;当计数初始值等于周期寄存器的值时,计数器将减计数到0,然后开始正常的计数操作;当计数初始值大于周期寄存器的值时,定时器将加计数到FFFFh,然后复位为0,开始正常的连续增/减计数操作。,该种模式的计数周期为2(TxPR)个输入时钟周期。 无论是从引脚TCLKINA/B输入的外部时钟信号,还是来自内部的CPU时钟都可以作为该模式下的定时计数输入。,周期、下溢、上溢中断的标志位、以及中断和相关的事件都由各自的匹配产生,其产生方式与连续增计数模式下相同。,退出,4通用定时器的比较操作,每个通用定时器都有一个相关的比较寄存器TxCMPR和一个PWM输出引脚TxPWM。当计数值与比较寄存器的值相等时,就会发生比较匹配。如果比较操作被使能(TxCON.1位被置1),当产生比较匹配时将发生下列事件:,1)在匹配发生一个CPU时钟周期后,比较中断寄存器标志位被置位。如果比较中断标志位已通过设置GPTCONA/B寄存器中的相应位去启动ADC,则当比较中断标志位被置位的同时也将产生ADC的启动信号;,2)在匹配发生一个CPU时钟周期后,根据GPTCONA/B寄存器相应位的配置情况,相关的PWM输出发生跳变;,3)如果比较中断未被屏蔽,则将产生一个外设中断请求。,退出,(1)PWM输出跳变,对于PWM输出的跳变由非对称和对称波形发生器及相关的输出逻辑控制,并且取决于以下条件:,1)GPTCONA/B寄存器中相应位的定义;,2)定时器所处的计数模式;,3)在连续增/减计数模式下的计数方向。,退出,(2)非对称波形发生,如果计数操作开始前输出为0,则保持不变直到比较匹配的发生,匹配时产生触发,输出发生跳变。如果在下一周期的新比较值不是0,则发生周期匹配的那个周期结束后输出复位为0。,如果在一个周期开始时比较值为0,则在整个周期输出将是1;如果下一个周期的新比较值也是0,则输出将不复位为0,这意味着可以产生0100%的脉冲宽度调节。,如果比较值大于周期寄存器的值,则整个周期输出为0。如果比较值等于周期寄存器的值,则输出为1将保持一个定标后的时钟输入周期。,比较寄存器值的改变只影响PWM脉冲的单边,这是非对称PWM波形的一个特点。,退出,(3)对称波形发生,当通用定时器处于连续增/减计数模式时产生对称波形。,若计数开始前输出为0,则输出保持不变直到第一次比较匹配,输出发生跳变,然后输出保持不变直到第二次比较匹配,输出再次发生跳变直到周期结束。 如果没有第二次匹配且下一个周期的新比较值不为0,则在周期结束后复位为0。,若比较值在周期开始时为0,则输出为1直到第二次比较匹配发生。如果比较值在周期的后半部为0,则输出将保持为1直到周期结束。在这种情况下,如果新比较值仍为0,输出将不会复位为0。,如果前半周期中的比较值大于或等于周期寄存器的值,则第一次跳变将不会发生,但是当后半周期发生匹配时,输出仍会跳变。这种输出错误的跳变经常是由于应用程序计算不正确引起的,它将在周期结束时被纠正。,退出,(4)输出逻辑,输出逻辑可通过配置GPTCONA/B寄存器中的相应位来规定高有效、低有效、强制低或强制高。当PWM的输出定义为高有效时,它的极性与相关的波形发生器的极性相同;当PWM的输出定义为低有效时,它的极性与相关波形发生器的极性相反;当通过GPTCONA/B寄存器中的控制位将PWM的输出定义为强制低或高时,PWM的输出立即变为0或1。,当出现下列任何一种情况时,所有的通用定时器PWM输出都置为高阻态:,1)软件将GPTCONA/B6置为0;,2)PDPINTx引脚上的电平被拉低并且未被屏蔽;,3)任何一个复位事件发生;,4)软件将TxCON1置为0。,退出,5通用定时器的PWM输出,每个通用定时器都可以独立地提供一个PWM输出通道,因此,通用定时器最多可提供4个PWM输出。,可按如下方法来设置通用定时器的PWM输出:,1)根据预定的PWM载波频率来设置周期寄存器TxPR的值;,2)设置TxCON确定计数模式和时钟源输入,并启动PWM输出;,3)将所计算出的PWM占空比数值装载到TxCMPR中。,当选用连续增计数模式来产生非对称PWM 波形时,将预定的PWM周期除以定时器输入时钟的周期并减1就得到了周期寄存器的周期值;当选用连续增/减计数模式产生对称PWM波形时,将预定的PWM周期除以两倍的输入时钟周期就得到了周期寄存器的周期值。,当要产生的PWM波形占空比不同时,只需在线计算出相对于占空比的宽度值,并加载到比较寄存器中即可。,退出,6通用定时器的复位,发生复位事件时,GPTCONA/B寄存器中除计数方向指示位外的所有与通用定时器有关的位都被清0,故所有定时器的操作都被禁止;所有的定时器中断标志位都被复位为0;所有定时器中断屏蔽位都被复位为0,即所有与定时器有关的中断都被禁止;所有的定时器比较输出都被置成高阻状态。,7通用定时器的中断实现,下面是通用定时器1产生1ms的定时中断服务程序。假设外部输入时钟为6MHz,经DSP内部锁相环4倍频后得24MHz,通用定时器1预分频因子为64。INT2的中断向量为0004h,T1PINT的外设中断向量为0027h。,.include “F2407REGS.H” ;引用头文件 .def _c_int0 ;定义程序的入口地址,退出,;(1)建立中断向量表 .sect “.vectors” ;定义主向量段 RSVECT B _c_int0 ;复位向量,地址0000h INT1 B PHANTOM ;中断优先级1,地址0002h INT2 B GISR2 ;中断优先级2,地址0004h INT3 B PHANTOM ;中断优先级3,地址0006h ;中断子向量入口 .sect “.pvecs” ;定义子向量段 PVECTORS B PHANTOM ; 中断子向量地址偏移量0000h B PHANTOM ;高优先级模式的外部引脚中断, ;地址0001h B T1PINT_ISR ;定时器1周期中断, ;子向量地址偏移量0027h ,退出,;(2)主程序 .text ;程序段开始 _c_int0: SETC INTM ;禁止中断 CLRC SXM ;抑制符号扩展 CLRC OVM ;ACC结果正常溢出 CLRC CNF ;B0区被配置为数据空间 LDP #0E0h ;指向7000h707Fh SPLK #81FEh,SCSR1 ;时钟4倍频, ;CLKIN=6MHz,CLKOUT=24MHz SPLK #0E8h,WDCR ;不使能看门狗 LDP #0 SPLK #02h,IMR ;使能中断优先级INT2 SPLK #0FFFFh,IFR ;清中断标志 LDP #0E8h ;指向7400h747Fh SPLK #80h,EVAIMRA ;使能T1PINT中断 SPLK #0FFFFh,EVAIFRA ;清EVA中断标志,退出,SPLK #0,GPTCONA ;设置通用控制寄存器 SPLK #177h,T1PR ;装载定时器1周期寄存器 SPLK #0,T1CNT ;装载计数寄存器 SPLK #0164Ch,T1CON ;TMODE=10连续增计数模式 ;TPS=110预分频64;TENABLE=1定 ;时器计数使能,TCLKS=00内部时钟 ;TECMPR=1定时器1比较使能,SELT1PR=0 CLRC INTM ;开总中断 WAIT: NOP B WAIT ;等待中断,退出,;(3)中断程序 GISR2: ;保护现场 LDP #0E0h ;指向7000h-7080h LACC PIVR,1 ;读外设中断向量寄存器,并左移1位 ADD #PVECTORS ;加上外设中断入口地址 BACC ;跳到相应的中断服务子程序 T1PINT_ISR: ;通用定时器1中断入口 LDP #DP_EVA ;指向7400h-7480h SPLK #0,T1CNT ;恢复计数寄存器初始值 GISR2_RET: ;中断返回 ;恢复现场 CLRC INTM ;开总中断 RET ;返回主程序,退出,;(4)假中断程序 PHANTOM: LDP #DP_PF1 SPLK #055h,WDKEY ;复位看门狗 SPLK #0AAh,WDKEY RET .END,退出,6.2.4 比较单元,每个事件管理器模块中都有3个全比较单元,EVA模块为比较单元1、2和3,EVB模块为比较单元4、5和6。EVA模块的比较单元操作的时基由定时器1提供,EVB模块的比较单元操作的时基由定时器3提供。每个比较单元都有两个相关的PWM输出。,退出,(1)比较的输入和输出,比较单元的输入包括来自控制寄存器的控制信号、通用定时器1和3(T1CNT和T3CNT)及它们的下溢和周期匹配信号、复位信号。,比较单元的输出是一个比较匹配信号。如果比较操作使能,该匹配信号将置中断标志位,并使和比较单元相关的两个输出引脚发生跳变。,(2)比较操作模式,对EVA(或EVB)而言,通用定时器1(或3)的计数值不断与比较寄存器的值进行比较,当发生匹配时,比较单元的两个引脚的输出电平按照方式控制寄存器ACTRA(或ACTRB)控制的位进行跳变。,匹配时,若比较被使能,则比较匹配中断标志位被置位,这时若中断没有被屏蔽,则会产生外设中断请求。输出跳变的时序、中断请求的产生与通用定时器的比较操作相同。输出逻辑、死区单元及空间矢量PWM逻辑可改变比较单元的输出。,退出,(3)比较单元操作的寄存器配置,比较单元操作的寄存器配置步骤如下表所示。,退出,(4)比较单元寄存器,比较操作由比较控制寄存器控制,若其第15位使能了比较操作,则当比较匹配事件发生时, 6个比较输出引脚就按比较方式控制寄存器设定的方式跳变。,1)比较控制寄存器A(COMCONA) :地址是7411h,位15:是比较使能位。为0禁止比较操作;为1使能比较操作。,位14-13:确定比较寄存器CMPRx的重载条件。为00时为T1CNT=0(即下溢);为01时为T1CNT=0或T1CNT=T1PR(即下溢或周期匹配);为10时为立即重载;为11时为保留位。,位12:为空间矢量PWM模式使能位。为0时禁止空间矢量PWM模式;为1时使能空间矢量PWM模式。,位1110:确定方式控制寄存器ACTRA的重载条件。为00时条件为T1CNT=0(即下溢);为01时条件为T1CNT=0或T1CNT=T1PR(即下溢或周期匹配);为10时条件为立即重载;为11时为保留位。,位9:是比较输出使能位。为0时禁止PWM引脚输出,输出为高阻态;为1时PWM输出引脚处于使能状态。,位8:反映了当前引脚PDPINTA的状态。,退出,2)比较控制寄存器B(COMCONB) :地址是7511h,各位的定义参照比较控制寄存器A,所不同的是该比较控制寄存器的重载条件使用的是定时器3。,退出,3)比较方式控制寄存器A(ACTRA):地址7413h,位15:确定空间矢量PWM的旋转方向。为0时正向;为1时反向,位14-12:为基本的空间矢量,仅用于空间矢量PWM输出的产生,位11-10:用于选择引脚PWM6/IOPB3的比较输出方式。为00输出强制低;为01输出低电平有效;为10输出高电平有效;为11输出强制高。,位9-8:用于选择引脚PWM5/IOPB2的比较输出方式。为00输出强制低;为01输出低电平有效;为10输出高电平有效;为11输出强制高。,位7-6:用于选择引脚PWM4/IOPB1的比较输出方式。为00输出强制低;为01输出低电平有效;为10输出高电平有效;为11输出强制高。,位5-4:用于选择引脚PWM3/IOPB0的比较输出方式。为00输出强制低;为01输出低电平有效;为10输出高电平有效;为11输出强制高。,位3-2:用于选择引脚PWM2/IOPA7的比较输出方式。为00输出强制低;为01输出低电平有效;为10输出高电平有效;为11输出强制高。,位1-0:用于选择引脚PWM1/IOPA6的比较输出方式。为00输出强制低;为01输出低电平有效;为10输出高电平有效;为11输出强制高。,退出,4) 比较方式控制寄存器B(ACTRB):地址7513h,表中各位的定义参照比较方式控制寄存器A。,退出,6.2.5 脉宽调制电路PWM,每个事件管理器都具有3对0-16s的可编程死区控制PWM波形输出的功能。在电动机控制中,采用基于DSP硬件的PWM发生电路可大大减小用户编程的工作量和CPU时间的开销。,脉宽调制(PWM)的核心就是产生周期不变但脉宽可变的信号,即PWM信号是一串宽度变化的脉冲序列,这些脉冲平均分分布在一段定长的周期中,在每个周期中只有一个脉冲。这个定长的周期被称为PWM载波周期,其倒数被称为PWM载波频率。,在EV中,通用定时器的周期匹配可以保证PWM波形的周期不变,通用定时器的比较匹配可以产生不同的PWM脉宽。因此,根据调制频率来设置通用定时器周期寄存器的值,根据已知的脉宽变化规律在每个周期内修改通用定时器比较寄存器的值,用于得到不同的脉宽。通过设置死区控制寄存器可选择死区时间。,退出,1PWM的特性,1)具有16位的死区控制寄存器;,2)有从0到16s的可编程死区发生器控制PWM输出;,3)最小的死区宽度为1个CPU时钟周期;,4)可根据需要改变PWM的载波频率;,5)在每个PWM周期内可根据需要改变PWM脉冲的宽度;,6)具有外部可屏蔽的功率驱动保护中断;,7)脉冲形成发生器电路用于可编程的对称、非对称以及4个空间矢量PWM波形产生;,8)具有自动重装载的比较和周期寄存器使CPU的负担最小。,退出,2与比较单元相关的PWM电路,对于每个事件管理器,都具有6路带有可编程的死区和输出极性控制的PWM输出。,退出,(1)死区单元,EVA和EVB具有各自独立的可编程死区单元,每个死区单元由一个可读/写的16位死区控制寄存器DBTCONA/B、一个输入时钟预分频器(x/1、x/2、x/4、x/8、x/16、x/32)、内部CPU时钟输入、3个4位减计数定时器和控制逻辑组成。,1)死区控制寄存器A(DBTCONA) :地址7415h,位11-8:用于定义死区定时器周期。这些位规定了3个4位死区定时器的周期值,位7:为死区定时器3的使能位(对应比较单元3的引脚PWM5、PWM6)。该位为0表示禁止;为1表示使能。,位6:为死区定时器2的使能位(对应比较单元2的引脚PWM3、PWM4)。该位为0表示禁止;为1表示使能。,位5:为死区定时器1的使能位(对应比较单元1的引脚PWM1、PWM2)。该位为0表示禁止;为1表示使能。,位4-2:确定死区定时器的预分频因子。为000时x/1;为001时x/2;为010时x/4;为011时x/8;为100时x/16;为101-111时x/32。,退出,2) 死区控制寄存器B(DBTCONB):地址为7515h,各位的含义参照死区控制寄存器A(DBTCONA)。,退出,(2)死区的产生,对每一PHx,有两个对应的输出信号DTPHx、DTPHx_。当死区被禁止时,死输入和输出信号相同;当死区被允许时,这两个信号的转换边沿就会被死区间隔分开。死区间隔的大小由DBTCONA/B决定,如DBTCONA11-8是m,则当预定标因子DBTCONA4-2对应为x/p时,死区数值为(mp)个TCPU。,退出,带有死区的PWM波形图 如下,退出,(3)输出逻辑,在比较发生匹配时,输出引脚PWM1PWM12上的输出极性和方式是由输出逻辑电路决定的。与每个比较单元相关的输出方式可分为低有效、高有效、强制低和强制高,PWM输出极性和方式可通过ACTRA/B寄存器中相应的位来配置。,退出,当发生以下任一情况时,所有的PWM输出引脚都置成高阻态:,1)软件将COMCONA/B9清0;,2)当PDPINTA/B未被屏蔽时,由硬件将PDPINTA/B引脚上的电平拉低;,3)发生任何复位事件;,退出,3比较单元和PWM电路中的PWM波形产生,(1)产生PWM的寄存器设置,1)首先设置和装载ACTRA/B寄存器,以决定PWM输出的极性;,2)如果死区使能,则设置和装载DBTCONA/B寄存器,以决定死区的大小;,3)设置和装载T1PR或T3PR寄存器,以决定PWM波形的周期;,4)初始化CMPRx寄存器,设置和装载COMCONA/B寄存器;,5)设置和装载TlCON或T3CON寄存器,来启动比较操作;,6)更新CMPRx寄存器的值,使输出的PWM波形的占空比发生变化。,退出,(2)非对称PWM波形的产生,为了产生非对称PWM波形,通用定时器1应设置为连续增计数模式,并且周期寄存器用相应的PWM载波周期的数值装载。COMCONA/B配置成使能比较操作模式,并使能PWM输出引脚。如果死区功能被使能,将所需的死区时间值装载寄存器DBTCONA/B的11-8位。通过软件适当地配置寄存器ACRTA/B。,退出,(3)对称PWM波形的产生,利用比较单元和PWM电路产生对称PWM波形的方法与非对称PWM波形的产生类似,不同的只是要将定时器1或3的连接增计数模式改为连续增/减计数模式。对称PWM波形比非对称PWM波形的优越之处在于它存在有两个相同长度的非激活区(无效区),这两个区分别位于PWM波形的起始和结束处。,退出,(4)PWM输出的占空比计算,假设PWM的引脚输出为高电平有效,比较寄存器的值为TxCMPR,周期寄存器的值为TxPR,正常时有0TxCMPRTxPR,通用定时器的工作模式为连续增/减方式。波形的发生过程如下:,1)计数器从0开始增计数,在未达到比较寄存器的值之前,引脚输出为无效的低电平。,2)当计数值与比较寄存器的值相等时,产生第一次比较匹配事件,PWM引脚输出有效高电平。,3)计数器继续增计数到周期值,发生周期匹配事件。计数器减计数操作,当再次与比较值相等时,发生第二次比较匹配事件,对应的PWM引脚输出低电平。之后,定时计数器继续减计数到0为止,产生一次下溢事件,完成一个周期。,4)如果下一个周期比较寄存器的值仍然大于0且小于周期寄存器的值,则又重复以上步骤。,退出,由于在一个周期内会发生两次比较匹配事件,如果两次比较值相同,则会产生对称的PWM波形。如果在一个周期内两次比较匹配值不同,则会产生非对称的PWM波形。当然,也可以根据需要来改变周期寄存器的值以调整调制信号的频率。,由于连续增/减计数模式的脉冲周期为T=2TxPR,而有效电平时间为t1=(TxPR-TxCMPRup)+(TxPR-TxCMPRdown)个计数脉冲,其中,TxCMPRup为第一次比较匹配值,TxCMPRdown为第二次比较匹配值,故PWM输出波形的占空比为 q=t1/T=(2TxPR-TxCMPRup- TxCMPRdown)/( 2TxPR),在两次比较匹配值相等时(即TxCMPRup= TxCMPRdown时),PWM输出的占空比为 q= t1/T=(TxPR-TxCMPR)/TxPR,当比较寄存器的值为0时,PWM输出波形的占空比为 q= t1/T=100%,退出,当比较寄存器的值等于周期寄存器的值时(即TxPR=TxCMPR时),PWM输出波形的占空比为 q= t1/T=0%,退出,5PWM波形产生举例,TMS320LF240x总共有12路PWM输出,这里使用EVB模块,在PWM7-PWM12上输出6路占空比不同的PWM波形。,设PWM7、PWM9和PWM11引脚的输出为高有效,PWM8、PWM10和PWM12引脚的输出为低有效。采用EVB模块中的通用定时器3产生比较值。,.include “F2407REGS.H” ;引用头文件 .def _c_int0 ;定义程序的入口地址 ;(1)建立中断向量表 .sect “.vectors” ;定义主向量段 RSVECT B _c_int0 ;复位向量,地址0000h INT1 B PHANTOM ;中断优先级1,地址0002h INT2 B GISR2 ;中断优先级2,地址0004h ,退出,;中断子向量入口 .sect “.pvecs” ;定义子向量段 PVECTORS B T3GP_ISR ;T3PINT中断,子向量地址偏移量002Fh ;(2)主程序 .text ;程序段开始 _c_int0: CALL SYSINIT ;调系统初始化程序 CALL PWM_INIT ;调EVB模块PWM初始化程序 WAIT: NOP B WAIT ;等待中断,退出,;(3)系统初始化程序 SYSINIT: SETC INTM ;禁止中断 CLRC SXM ;抑制符号扩展 CLRC OVM ;ACC结果正常溢出 CLRC CNF ;B0区被配置为数据空间 LDP #0E0h ;指向7000h-707Fh SPLK #81FEh,SCSR1 ;时钟4倍频, ;CLKIN=6MHz,CLKOUT=24MHz SPLK #0E8h,WDCR ;不使能看门狗 LDP #0 SPLK #0002h,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论