DSP课件第九章TMS320LF240x片内外设.ppt

上传人:牧羊曲112 文档编号:5428171 上传时间:2023-07-05 格式:PPT 页数:123 大小:1.58MB
返回 下载 相关 举报
DSP课件第九章TMS320LF240x片内外设.ppt_第1页
第1页 / 共123页
DSP课件第九章TMS320LF240x片内外设.ppt_第2页
第2页 / 共123页
DSP课件第九章TMS320LF240x片内外设.ppt_第3页
第3页 / 共123页
DSP课件第九章TMS320LF240x片内外设.ppt_第4页
第4页 / 共123页
DSP课件第九章TMS320LF240x片内外设.ppt_第5页
第5页 / 共123页
点击查看更多>>
资源描述

《DSP课件第九章TMS320LF240x片内外设.ppt》由会员分享,可在线阅读,更多相关《DSP课件第九章TMS320LF240x片内外设.ppt(123页珍藏版)》请在三一办公上搜索。

1、第9章 TMS320LF240 x片内外设,9.1 看门狗(WD)定时器模块,看门狗(WD)定时器模块用来监视软件和硬件操作,在软件进入一个不正确的循环或者CPU出现暂时性异常时,WD定时器溢出以产生一个系统复位。大多数芯片的异常操作和CPU非正常工作的情况都能通过看门狗的功能清除和复位。因此看门狗的监视功能可增强CPU的可靠性,以确保系统运行的安全和稳定。,1、看门狗(WD)定时器模块的结构,看门狗(WD)定时器模块的结构如下图所示。WD模块的所有寄存器都是8位长,该模块与CPU的16位外设总线的低8位相连。看门狗定时器的时钟(WDCLK)是一个低频时钟,由CPU的CLKOUT产生。当CPU

2、处于低功耗模式IDLE1和IDLE2时,仍能保证看门狗继续计数。仅当看门狗使能时,WDCLK才有效。WDCLK的频率由下式计算:WDCLK=(CLKOUT)512 当CLKOUT=40MHz时,WDCLK=78125Hz是一个典型值。除HALT低功耗模式外,无论片内任一寄存器的状态如何。WDCLK都将使能WD定时器功能。,WD模块的结构框图,WD模块有3个控制寄存器对其进行控制和管理:(1)WD计数寄存器(WDCNTR)地址7023h 8位WD计数寄存器存放WD计数器的当前值D7D0。WDCNTR是一个只读寄存器,复位后为0,写寄存器无效。由预定标器的输出提供计数时钟。(2)WD复位关键字寄存

3、器(WDKEY)地址7025h 当55h及紧接其后的AAh(复位关键字)写入WDKEY时,将清除WDCNTR。其他任何值的结合写入或写入任何值都不能清除WDCNTR。8位WDKEY是一个可读写寄存器,复位后为0。读该寄存器WDKEY并不返回最近的关键字值,而是返回WDCR的内容。(3)WD定时器控制寄存器(WDCR)地址7029h 8位WDCR用来存放看门狗配置的控制位。,2、看门狗(WD)定时器的操作,(1)、WD计数器(WDCNTR)溢出或向WD复位关键字寄存器(WDKEY)写入一个不正确的值 当系统正常工作时,WD计数器WDCNTR以WD控制寄存器所选的速率进行增计数,在WDCNTR溢出

4、前,只要给复位关键字寄存器WDKEY写入一个正确值(先写入55h,紧接着写入AAh)就可以使WDCNTR清0,即从0开始计数而不会产生溢出。当系统不正常时,也就不能给WDKEY写入正确值使WDCNTR清0,则WDCNTR将计满溢出,并在一个WDCLK(或用WDCLK除以预定标因子)时钟后发生系统复位操作。任何其他次序的写入55h和AAh值或写入其他值都不能使WDCNTR清0,从而使系统复位。,(2)、使用WD检查位 WD定时器控制寄存器(WDCR)的检查位(WDCHK2WDCHK0)一直和一个二进制常量101相比较。如果WD检查位与这个值不匹配,就会产生一个系统复位。所以一旦软件执行了错误的W

5、DCR写操作或一个外部激励干扰(例如电压尖峰或其他干扰源)破坏了WDCR的内容,即除101以外的任何值写到WDCR的D5D3位都会产生一个系统复位。注意,向WDCR写入值时必须包括写到D5D3的值101。当系统上电复位时,看门狗就被使能。WD定时器被缺省为最快的WD速率。一旦复位由内部释放,CPU就开始执行程序,同时WD定时器就开始计数。因此为了避免过早发生复位,应在程序刚开始时就对WD进行配置。,9.2 数字输入/输出(I/O)模块,LF240 x采用哈佛结构,有3个独立的空间:程序空间、数据空间和I/O空间。3个空间对外共用一个16位地址总线和一个16位数据总线,并以3个片选线、和区分不同

6、空间。其中,I/O空间可接外部设备,是LF240 x与外部设备联系的接口。数字I/O模块也具有连接外部设备的功能,是LF240 x除I/O空间外另一个与外部设备联系的接口。LF240 x有41个数字I/O口,其中绝大多数具有另一功能,“另一功能”都是SCI、SPI等片内外设模块的功能引脚。数字I/O口是第二功能。,LF240 x有41个数字I/O口,所有这些共享引脚的功能可通过数字I/O模块中的9个16位控制寄存器来控制。控制寄存器可以分为两类。(1)I/O复用控制寄存器(MCRx,x=A,B,C)控制两种功能的选择。(2)数据和方向控制寄存器(PxDATDIR,x=A,B,C,D,E,F)当

7、引脚作为通用I/O时,用来控制选择各I/O引脚的数据方向(输入还是输出)和当前引脚对应的电平(高或低)。读通用I/O引脚的电平或向引脚输出电平,实际上是对相应的寄存器(PxDATDIR)进行读写操作。,I/0复用控制寄存器用来控制多路选择器,选择功能复用引脚是作为特殊功能(MCRx.n=1)还是通用I/0功能(MCRx.n=0)。,1、I/O复用控制寄存器,2、数据和方向控制寄存器,1、端口A数据和方向控制寄存器(PADATDIR)地址7098h D15D8 AnDIR定义IOPAn(n:70)引脚的方向和电平。0 定义对应的引脚IOPA7IOPA0为输入。1 定义对应的引脚IOPA7IOPA

8、0为输出。D7D0 IOPAnI/O引脚名(n:70)。如果AnDIR=0即引脚IOPAn(n:70)为输入时,0 对应的I/O引脚输入的值为低电平。1 对应的I/O引脚输入的值为高电平。如果AnDIR=1即引脚IOPAn(n:70)为输出时,0 设置相应的引脚使其输出为低电平。1 设置相应的引脚使其输出为高电平。,3、程序举例,.title“240 xAGPIO”.data;装载到数据区300hb0.word 0FFFEh;通用I/O端口的DO位为0b1.word0FFFDh;通用I/O端口的D1位为0b2.word0FFFBh;通用I/O端口的D2位为0b3.word0FFF7h;通用I/

9、O端口的D3位为0b4.word0FFEFh;通用I/O端口的D4位为0b5.word0FFDFh;通用I/O端口的D5位为0b6.word 0FFBFh;通用I/O端口的D6位为0b7.word 0FF7Fh;通用I/O端口的D7位为0GPR0.word 0;通用目的寄存器.include 240 xA.h.def _c_into.text_c_into:LDP#0h;设置DP=0SETCINTM;禁止中断,(1)IOPx0 IOPx7(x=A、B、C、E、F)轮流设置低电平输出,SETCCNFSPLK#0000h,IMR;屏蔽所有中断LACCIFR;读中断标志SACLIFR;清所有中断标志

10、LDP#00E0hSPLK#0000h,SCSR1SPLK#006Fh,WDCR;禁止WDLDP#6h;设置DP=6h,则地址为300h37FhSPLK#0h,GPR0;为外部地址空间设置等待状态OUTGPR0,WSGRLDP#00E1h;设置DP=E1h,则地址为7080h70FFhSPLK#00000h,MCRA;定义IOPAn和IOPBn作为通用I/O引脚SPLK#0FF00h,MCRB;定义IOPCn作为通用I/O引脚SPLK#00000h,MCRC;定义IOPEn和IOPFn作为通用I/O引脚SPLK#0FFFFh,PADATDIR;所有引脚均配置为输出并置为高电平SPLK#0FFF

11、Fh,PBDATDIRSPLK#0FFFFh,PCDATDIRSPLK#0FFFFh,PEDATDIRSPLK#0FFFFh,PFDATDIR,MAIN:LDP#0LARAR0,#300h;300h单元的内容(位模式:FFFEh)送;AR0LARAR1,#7;ARl是计数器LOOP:MAR*,AR0;下次辅助寄存器为AR0LACC*+,AR2;装载位模式到累加器,AR0=301h,下次;辅助寄存器为AR2LDP#00E1hSACLPADATDIR;输出同样的位模式到所有的通用I/O口SACL PBDATDIRSACL PCDATDIRSACL PEDATDIRSACL PFDATDIRCALL

12、DELAY;在每个模式间延时MAR*,AR1;检查是否所有的8个位模式己被输出引脚;轮流被置为低),若没有则继续BANZLOOPBMAIN;循环输出,DELAY:LARAR2,#0FFFFh;延时子程序D_LOOP:RPT#0FFhNOPBANZD_LOOPRETPHANTOMKICK_DOG;复位WD计数器BPHANTOM.end,void sys_ini()asm(setc INTM);asm(clrc SXM);asm(clrc OVM);*WDCR=0 x00E8;*SCSR1=0 x0000;,void IOPort_Initializing()*MCRA=0 x0FFF;*PBDA

13、TAIR=PBDATAIR|0 x0F000;,(2)IOPB端口4个LED循环显示,#include“exp4_2407.h”unsigned int led;void main(void)unsigned int i;unsigned int k;sys_ini();IOPort_Initializing()led=0 x0080;while(1)for(i=0;i1 if(led=0 x0008)led=0 x0080;,9.3 事件管理器(EV)模块,TMS320LF240 xA提供了两个事件管理器EVA和EVB模块,用于运动控制和电机控制。每个事件管理器模块都含有:(1)两个16位通

14、用可编程定时器GPtimer1,GPtimer2。(2)3个全比较单元和与之对应的脉宽调制电路PWM。(3)3个捕获单元CAP。(4)正交编码脉冲(QEP)电路。(5)中断逻辑。,9.3.1 通用定时器,DSP事件管理器EVA和EVB内部均有两个通用定时器(GPT),EVA中为通用定时器1(GPT1)和通用定时器2(GPT2);EVB中为通用定时器3(GPT3)和通用定时器4(GPT4),计数范围为065535。每个通用定时器可以各自独立工作,也可以相互同步工作。16位的全局通用定时器控制寄存器GPTCONA(EVA中)和GPTCONB(EVB中)用来规定这4个通用定时器在不同定时器事件中所采

15、取的操作,并记录它们的计数方向。,每个通用定时器包括:(1)一个16位可读写的定时器计数器TxCNT(x=1,2,3,4)。(2)一个16位可读/写的定时器比较寄存器TxCMPR(x=1,2,3,4)。(3)一个16位可读/写的定时器周期寄存器TxPR(x=1,2,3,4)。(4)一个16位可读写的定时器控制寄存器TxCON(x=1,2,3,4)。(5)一个通用定时器比较输出引脚TxCMP/TxPWM(x=1,2,3,4)。(6)用于内部或外部时钟输入的可编程定标器。(7)控制和中断逻辑。,1、通用定时器中的寄存器(1)全局通用定时器控制寄存器A/B(GPTCONA/B)映射地址7400h/7

16、500h D15Reserved保留位。D14T2STAT/T4STAT通用定时器2/4的计数状态,只能读。0 减计数。1 增计数。D13T1STAT/T3STAT通用定时器1/3的计数状态,只能读。0 减计数。1 增计数。D12D11 Reserved保留位。D10D9T2TOADC/T4TOADC设置通用定时器2/4启动模数转换事件。00 不启动模数转换。01 下溢中断标志启动。10 周期中断标志启动。11 比较中断标志启动。,D8D7T1TOADC/T3TOADC-设置通用定时器1/3启动模数转换事件。00 不启动模数转换。01 下溢中断标志启动。10 周期中断标志启动。11 比较中断标

17、志启动。D6TCOMPOE比较输出允许,电源驱动保护中断PDPINTA/B有效时,向该位写0。0 禁止所有通用定时器比较输出(比较输出都置成高阻态)。1 使能所有通用定时器比较输出。D5D4Reserved保留位。D3D2T2PIN/T4PIN设置通用定时器2/4比较输出极性。00 强制为低电平。01 低电平有效。10 高电平有效。11 强制为高电平。D1D0T1PIN/T3PIN设置通用定时器1/3比较输出极性。00 强制为低电平。01 低电平有效。10 高电平有效。11 强制为高电平。,(2)通用定时器控制寄存器TxCON(x=1,2,3,4)D15D14 FREE,SOFT仿真控制位。0

18、0 仿真悬挂时立即停止。01 仿真悬挂时在当前定时器周期结束后停止。1x 操作不受仿真悬挂的影响。D13 Reserved保留位。D12D11 TMODE计数模式选择。00 停止/保持。01 连续增/减计数模式。10 连续增计数模式。11 定向增/减计数模式。D10D8 TPS输入时钟预定标系数。(设x=CPU时钟频率)000 x/1 001 x/2 010 x/4 011 x/8 100 x/16 101 x/32 110 x/64 111 x/128D7 T2SWTl/T4SWTl通用定时器2(EVA)或定时器4(EVB)使能选择位。0 使用自己的寄存器使能位。1 使用SELT1PR(EV

19、A)或SELT3PR(EVB)作为周期寄存器,而忽略自身 的周期寄存器。,(3)通用定时器计数器TxCNT(x=1,2,3,4)每个通用定时器都有一个计数器,其映射地址为:T1CNT7401h,T2CNT7405h,T3CNT7501h,T4CNT7505h。计数器的初值可以是0000hFFFFh中的任意值。通用定时器中的计数器用来存放开始计数时的初值,当进行计数时存放当前计数值。计数器可以进行增1或减1计数,由控制寄存器TxCON的D12D11确定其计数模式。,(4)比较寄存器TxCMPR(x=1,2,3,4)每个通用定时器都有一个比较寄存器,其映射地址为:T1CMPR7402h,T2CMP

20、R7406h,T3CMPR7502h,T4CMPR7506h。通用定时器中的比较寄存器TxCMPR存放着与计数器TxCNT进行比较的值。如果设置控制寄存器TxCON中的D1位为1,即允许比较操作,则当计数器的值计到与比较寄存器值相等时产生比较匹配,从而将有以下事件发生:(1)EVA/EVB中断标志寄存器中相应的比较中断标志位在匹配后的一个CPU时钟周期后被置位。(2)在匹配后的一个CPU时钟周期后,根据全局通用定时器控制器GPTCONA/B中的D3D2或D1D0位的配置,相应地比较输出TxPWM引脚将发生跳变。(3)当全局通用定时器控制寄存器GPTCONA/B的D10D9或D8D7位设置为由周

21、期中断标志启动模数转换ADC时,模数转换被启动。(4)如果比较中断未被屏蔽,则产生一个外设中断请求。,(5)周期寄存器TxPR(x=1,2,3,4)每个通用定时器都对应一个周期寄存器,其映射地址为:T1PR7403h,T2PR一一7407h,T3PR7503h,T4PR7507h。周期寄存器的值决定了定时器的周期,当定时器的计数值与周期寄存器的值相等时产生周期匹配,此时通用定时器停止操作并保持当前计数值,然后根据计数器的计数方式执行复位操作或递减计数。每个比较寄存器和周期寄存器都有一个暂存单元(称为影子寄存器)存放它们的新值,任何时刻都可对比较寄存器和周期寄存器写入新的比较值或周期值,这些新值

22、被存放在影子寄存器中。对比较寄存器,仅当由控制寄存器TxCON规定的定时事件发生时,才能装入新值;对周期寄存器,仅当计数寄存器TxCNT为0时,才能装入新值。之后,被装载新值的寄存器按新的设置工作,从而改变了下一个周期的定时器周期和PWM脉冲宽度。,2、通用定时器的中断和仿真中断 通用定时器在模块EVA和EVB的中断标志寄存器EVAIFRA,EVAIFRB,EVBIFRA,EVBIFRB中有16个中断标志。每个通用定时器可根据以下4种事件产生中断:上溢定时计数器的值达到FFFFh时,产生上溢事件中断。此时标志寄 存器中的TxOFINF位(x=l,2,3,4)置1。下溢定时计数器的值达到0000

23、h时,产生下溢事件中断。此时标志寄 存器中的TxUFINF位(x=1,2,3,4)置1。比较匹配当通用定时计数器的值与比较寄存器的值相等时,产生定时 器比较匹配事件中断。此时标志寄存器中的TxCINT位(x=1,2,3,4)置1。周期匹配当通用定时计数器的值与周期寄存器的值相等时,产生定时 器周期匹配事件中断。此时标志寄存器中的TxPINT位(x=1,2,3,4)置1。,(1)停止保持模式 通用定时器的操作停止,定时器的计数器、比较输出和预定标计数器均保持当前状态。,3、通用定时器的计数操作,如果设定计数器的初值(0000hFFFFh中的任意值)大于周期寄存器的值,则计数器进行加1计数至FFF

24、Fh后置上溢中断标志:再加1计满为0后,从0开始继续计数直到等于周期寄存器的值,此时产生周期匹配,并设置周期中断标志和下溢中断标志,且计数器复位为0;然后再从0开始继续计数(好像初值为0一样),直到等于周期寄存器的值,重复上述操作。如果设定计数器的初值小于周期寄存器的值,则计数器从初值开始加1计数直到等于周期寄存器的值,然后复位为0,再从0开始计数,同时设置周期中断和下溢中断标志,重复上述操作。,(2)连续增计数模式,例7.3 连续增计数模式的初始化编程。设置通用定时器1在该模式下工作,其计数器初始值为0,周期寄存器值为3。(计数器波形为图7.18中点划线的右半部分)LDP#DP_EVA;装入

25、数据页面指针,指向7400h7480h单元 SPLK#01h,GPTCONA;允许定时器比较输出且低电平有效 SPLK#3h,T1PR;设置周期寄存器的值为3 SPLK#2h,T1CMPR;设置比较寄存器的值为2 SPLK#0h,T1CNT;设置计数初值为0 SPLK#174Eh,T1CON;设置连续增计数模式,输入时钟为CPU;时钟的128分频,定时器计数使能,输入;时钟为内部CPU时钟,定时器比较使能,通用定时器在定标的输入时钟上升沿开始计数,计数方向由输入引脚TDIRMB确定:引脚为高时,进行增计数,增计数与连续增计数模式完全相同:引脚为低时,进行减计数,从初值(0000hFFFFh中的

26、任何值)开始减计数直到计数值为0,此时如果TDIRA/B引脚仍保持为低,定时器的计数器将重新装入周期寄存器的值,开始新的减计数。读GPTCONA/B寄存器中的D14和D13位,可以监测定时器的计数方向。周期下溢和上溢中断的产生方式与连续增计数模式相同,定向增减计数模式的初始化编程与连续增计数模式方法相同。仅TxCON寄存器的TMODE为11。,(3)定向增/减计数模式,(4)连续增/减计数模式,连续增/减计数模式与定向增/减计数模式基本相同。区别是:计数方向不受引脚TDIRA/B的状态影响,而是在计数值达到周期寄存器的值时或FFFFh(初值大于周期寄存器的值)时,才从增计数变为减计数;在计数值

27、为0时,从减计数变为增计数。,4、通用定时器的输入和输出信号,(1)时钟输入,通用定时器的时钟源可采用内部时钟或外部时钟输入TCLKINA/B,或正交编码器脉冲电路QEP,由每个通用定时器的控制寄存器TxCON的D5D4位选择决定,并通过D10D8位选择8种输入时钟的预定标系数。当使用外部时钟时,要求其最大频率是CPU时钟频率的1/4。在定向增/减计数器模式下,EVA模块中的通用定时器2和EVB中的 通用定时器4可用于正交编码脉冲(QEP)电路,此时正交编码脉冲电路不仅为定时器2/4提供时钟,而且还提供输入方向。,(2)方向输入,当通用定时器处于定向增/减计数模式时,输入引脚TDIRA/B决定

28、了计数的方向:TDIRA/B为高电平时,规定为增计数;为低电平时,规定为减计数。读全局控制寄存器GPTCONA/B的TxSTAT位可检查通用定时器的计数方向状态。,(3)比较输出,每个通用定时器都可以独立地提供一个PWM输出通道。所以通用定时器可提供4个PWM输出TxPWM(或称比较输出TxCMP,x=1,2,3,4)。比较输出引脚TxPWM由全局通用定时器控制寄存器GPTCONA/B的D3D2位和D1D0位规定为强制高、强制低、高有效或低有效。强制高/低若GPTCONA/B的相应位规定PWM输出为强制高/低后,输出引脚TxPWM立即变为高电平/低电平。高有效/低有效若GPTCONA/B的相应

29、位规定PWM输出为高有效/低有效后,则可以产生非对称或对称波形:,当通用定时器工作在连续增/减计数模式时,产生对称波形;当通用定时器工作在连续增计数模式时,产生非对称波形。PWM输出在以下事件的影响下发生变化:(1)计数操作开始前,输出引脚TxPWM保持无效状态。(2)当第一次比较匹配发生时,输出引脚TxPWM跳变为有效状态,同时产生触发。(3)如果通用定时器工作在连续增/减计数模式,则在第二次比较匹配时TxPWM变为无效状态,并一直保持到下一个周期的第一次比较匹配发生。如下图所示,该波形称为对称波形。,连续增/减计数模式下的比较输出(TxPWM),如果通用定时器工作在连续增计数模式,则在周期

30、匹配时TxPWM变为无效状态,并一直保持到下一个周期的比较匹配发生。如下图所示,该波形称为非对称波形。,连续增计数模式下的比较输出(TxPWM),(4)如果比较值在一个周期开始时为0,则在整个周期PWM输出为有效状态;如果下一周期比较值仍为0,则PWM输出将不再改变,继续保持有效状态;如果比较值大于或等于周期值,则在整个周期PWM输出为无效状态,直到比较值小于周期值并发生比较匹配时,PWM输出才发生跳变。在连续增/减计数模式下的比较输出图中,比较寄存器在增计数和减计数模式下可以有不同的值,所以TxPWM输出的有效相位长度Ta可由下式计算:Ta=(TxPR)-(TxCMPR)up+(TxPR)-

31、(TxCMPR)dn*Tc,在连续增计数模式下的比较输出图中,TxPWM输出的有效相位长度Ta和无效相位长度Ti由下式计算:Ta=(TxPR)-(TxCMPR)+1*TcTi=(TxCMPR)*Tc 式中,TxPR为周期寄存器的值;(TxCMPR)为连续增/减计数模式下增计数的比较值(TxCMPR)dn为连续增/减计数模式下减计数的比较值;(TxCMPR)为连续增计数模式下的比较值;Tc为定标输入时钟周期。可见,输出信号的跳变时间由比较寄存器的值决定,改变比较寄存器中的值就可以改变TxPWM输出脉冲的宽度。,同一模块的通用定时器可以实现同步。即EVA模块中定时器2和1可以同步:EVB模块中定时

32、器4和3可以实现同步。方法如下:(1)置T1CON(EVA模块)或T3CON(EVB模块)寄存器中的TENABLE位为1,且置T2CON(EVA)中的T2SWT1或T4CON(EVB)寄存器中的T4SWT3位为1,此时将同时启动本模块中的两个计数器。(2)在启动同步操作前,可将本模块的两个计数器初始化成不同的值。(3)置T2CON/T4CON寄存器中的SELT1PR/SELT3PR位为10使通用定时器1/3的周期寄存器也作为通用定时器2/4的周期寄存器(而忽略2/4自身的周期寄存器)。,5、通用定时器的同步,该程序检查EVA中定时器1的操作。定时器的模式为连续增/减计数,x/128。输出对应于

33、上溢、下溢、比较、周期中断进入相应的中断服务程序SISR2x中,使通用I/O引脚IOPB0(上溢时),IOPB1(下溢时),IOPB2(比较匹配发生时),IOPB3(周期匹配发生时)相继输出高电平。,6、通用定时器程序举例(程序名为EV _T1INT.asm),.include“240 xA.h”;变量和寄存器说明.include“240 xA vector.h”;矢量标志说明.def_c_into.text_c_into:LDP#0h;设置DP=0SETCINTM;禁止中断SPLK#0000h,IMR;屏蔽所有核心中断LACCIFR;读中断标志SACLIFR;清所有中断标志LDP#00E0h

34、;设置DP=E0h,外设页面SPLK#0004h,SCSR1;为EVA模块打开时钟SPLK#006Fh,WDCR;禁止看门狗MAR*,AR0LDP#0E1h;外设页面SPLK#0FF00h,PBDATDIR;设置IOPBn引脚为输出低电平;装入通用定时器1LDP#00E8h;设置DP=E0h,则地址为7400h747FhSPLK#0000h,GPTCONA,SPLK#0000h,T1CNT;将定时器1计数清零 SPLK#0F42h,T1CON;使能增/减计数,x/128,内部时钟,使 能比较,计数器为0时重装比较寄存器,使用自己的周期寄存器。SPLK#0FFFh,T1PRSPLK#00FFh,

35、T1CMPRSPLK#0780h,EVAIMRA;使能定时器1的上溢、下溢、比较、周期中断SPLK#0FFFFh,EVAIFRA;清中断LDP#0SPLK#0002h,IMR;使能INT2CLRCINTMWAIT:NOP;循环等待中断NOPBWAITGISR2:;Int2通用中断服务程序GISR2LDP#00E0h;设置外设页面LACLPIVR;将外设中断矢量PIVR值装入累加器,XOR#002Ah;GPT1上溢中断矢量BCND SISR2A,EQ;如果相等转上溢中断服务程序LACLPIVRXOR#0029h;GPTl下溢中断矢量BCNDSISR29,EQ;如果相等转下溢中断服务程序LACLP

36、IVRXOR#0028h;GPT1比较中断矢量BCNDSISR28,EQ;如果相等转比较中断服务程序LACLPIVRXOR#0027h;GPTl周期中断矢量BCNDSISR27,EQ;如果相等转周期中断服务程序RETSISR2A:;GPTl上溢中断服务程序LDP#0E1h;设置外部页面SPLK#0FF01h,PBDATDIR;设置IOPB0引脚输出高电平CALLDELAYLDP#0E8h;外设页面LACC#0400h;清上溢中断标志SACLEVAIFRA;在EVAIFRA内CLRCINTM;使能所有标志RET,SISR29:GPT1;下溢中断服务程序LDP#0E1h;外设页面SPLK#0FF0

37、2h,PBDATDIR;设置IOPB1引脚输出高电平CALLDELAYLDP#0E8h;外设页面LACC#0200h;清下溢中断标志SACLEVAIFRA;在EVAIFRA内CLRCINTM;使能所有标志RETSISR28:GPT1L;中断服务程序LDP#0E1h外设页面SPLK#0FF04h,PBDATDIR;设置101,B2引脚输出高电平CALLDELAYLDP#0E8h;外设页面LACC#0100h;清比较中断标志SACLEVAIFRA;在EVAIFRA内CLRCINTM;使能所有中断RET,SISR27:;GPT1周期中断服务程序LDP#0E1h;外设页面SPLK#0FF08h,PBD

38、ATDIR;设置IOPB3引脚输出高电平CALLDELAYLDP#0E8h;外设页面LACC#0080h;清周期中断标志SACLEVAIFRA;在EVAIFRA内CLRCINTM;使能所有标志RETDELAY:LARAR0,#01h;通用目的延时D_LOOP:RPT#01h;修改RPT值可改变延时时间NOPBANZD_LOOPRETGISR1:RETGISR3:RETGISR4:RETGISR5:RETGISR6:RETPHANTOM RET.end,9.3.2 全比较单元和脉宽调制电路PWM,事件管理器(EVA)模块中有3个全比较单元(全比较单元1,2和3),对应于3个16位的全比较寄存器(

39、CMPR1、CMPR2和CMPR3);事件管理器模块(EVB)中有3个全比较单元(全比较单元4,5和6),对应于3个16位的全比较寄存器(CMPR4、CMPR5和CMPR6)。每个EV模块中与比较单元相关的PWM电路带有可编程死区和输出极性控制,以产生独立的3对(即6路)PWM输出。每个全比较单元(或全比较寄存器)对应于两个PWM输出,即全比较单元1,2,3(EVA)对应于PWMy(y=l,2,3,4,5,6),全比较单元4,5,6(EVB)对应于PWMz(z=7,8,9,10,11,12)。每个EV模块有一个16位可读写的比较控制寄存器COMCONA/B,一个16位的比较方式控制寄存器ACT

40、RA/B(各带一个可读/写的影子寄存器)。比较单元的时基由通用定时器1(EVA模块)和通用定时器3(EVB模块)提供。,1、全比较单元,全比较单元中的16位比较寄存器(CMPR1CMPR6)各带一个可读/写的影子寄存器,它们用于存放与通用定时器1/3相比较的值,比较寄存器的地址分别为:CMPR17417h,CMPR27418h,CMPR37419h,CMPR47517h,CMPR57518h,CMPR67519h。比较控制寄存器COMCONA/B控制全比较单元的操作;比较方式控制寄存器TCTRA/B控制12个PWM输出引脚的输出方式。,(1)比较控制寄存器A/B(COMCONA/B)地址741

41、1h/7511h D15CENABLE比较使能位。0 禁止比较操作。1 使能比较操作。D14D13CLD1CLD0比较寄存器CMPRx重装条件。00 当T1CNT/T3CNT=0时(即下溢)。11 T1CNT/T3CNT=0或T1CNT/T3CNT=T1PR/T3PR(即下溢或周 期 匹配)时 10 立即重装 11 保留,结果不可预测。D12SVENABLE空间矢量PWM模式矢量位。0 禁止空间矢量PWM模式。1 使能空间矢量PWM模式。,D11D10 ACTRLD1/ACTRLD0方式控制寄存器重装条件。00 当T1CNT/T3CNT=0时(即下溢)。01 当T1CNT/T3CNT=0或 T

42、1CNT/T3CNT=T1PR/T3PR(即下溢或周期 匹配)时。10 立即重装。11 保留,结果不可预测。D9FCOMPOE比较输出使能位,有效的PDPINTA/PDPINTB将该位清0。0 PWM输出引脚为高阻态,即禁止。1 PWM输出引脚使能。D8PDPINTA/PDPINTBSTATUS该位反映了当前PDPINTA/PDPINTB引脚 的状态(该位只在240 xA系列中应用,在240 x系列中为保留位)。D7D0 Reserved保留位。,(2)比较方式控制寄存器(ACTRA/ACTRB)地址7413h/7513h D15SVRDIR空间矢量PWM旋转方向位,仅用于空间矢量PWM输出的

43、 产生。0 正向(CCW)。1 反向(CW)。D14D12D2D0基本的空间矢量位,仅用于空间矢量PWM输出的产生。D11D10CMP6ACT/CMP12ACT比较输出引脚CMP6/CMP12的输出方式。00 强制低。01 低有效。10 高有效。11 强制高。D9D8CMP5ACT/CMP11ACT比较输出引脚CMP5/CMP11的输出方式。00 强制低。01 低有效。10 高有效。11 强制高。,D7D6 CMP4ACT/CMP10ACT比较输出引脚CMP4/CMP10的输出方式。00 强制低。01 低有效。10 高有效。11 强制高。D5D4 CMP3ACT/CMP9ACT比较输出引脚CM

44、P3/CMP9的输出方式。00 强制低。01 低有效。10 高有效。11 强制高。D3D2 CMP2ACT/CMP8ACT比较输出引脚CMP2/CMP8的输出方式。00 强制低。01 低有效。10 高有效。11 强制高。D1D0 CMPlACT/CMP7ACT比较输出引脚CMP1/CMP7的输出方式。00 强制低。01 低有效。10 高有效。11 强制高。,2、PWM电路,在数字控制系统中,通常需要将数字信号转换成模拟信号以控制外设对象。这种转换过程最常用的方法就是采用脉宽调制(PWM)技术。调制技术的核心就是产生周期不变但脉宽可变的信号。也就是说一个PWM信号是一串宽度变化的脉冲序列,这些脉

45、冲平均分布在一段定长的周期中;在每个周期中有一个脉冲。这个定长的周期被称为PWM(载波)周期,其倒数被称为PWM(载波)频率。,在一个电机控制系统中,通过功率器件(大部分是开关型器件)将所需的电流和能量送到电机线圈绕组中,这些相电流的形状、频率及能量的大小控制着电机所需的速度和扭矩,而脉宽调制信号PWM就是用来控制功率器件的开启和关断时间的。在具体应用中,常将两个功率器件(一个正相导通,另一个负相导通)串联到一个功率转换器的引脚上,为了避免击穿,要求这两个器件的开启时间不能相同。死区就是为了使这两个器件的开启存在一定的时间间隔,即死区时间。,通用定时器的周期匹配可以保证PWM波形的周期不变,通

46、用定时器比较匹配可以产生不同的PWM脉宽,因此,根据调制频率来设置通用定时器周期寄存器的值。根据已得到的脉宽变化规律在每个周期内修改通用定时器比较寄存器的值,以得到不同的脉宽。通过设置死区控制寄存器可选择死区时间。综上所述,与比较单元相关的PWM电路中PWM波形的产生由以下寄存器控制:通用定时器计数器T1CON/T3CON,比较控制寄存器COMCONA/B,比较方式控制寄存器ACTRA/B和死区控制寄存器DBTCONA/B。,(1)可编程的死区单元,死区单元主要用于控制每个比较单元相关的2路PWM输出不在同时间内发生,从而保证了所控制的一对正向和负向设备在任何情况下不同时导通。事件管理模块EV

47、A和EVB都有各自的可编程死区单元,每个可编程死区单元都有一个16位的死区控制寄存器DBTCONA/B(可读写):一个输入时钟预分频器(x/1,x/2,x/4,x/8,x/16,x/32。x为器件CPU的时钟输入);3个4位的减计数器和控制逻辑。死区单元的操作方式由死区控制寄存器DBTCONA/B来控制。DBTCONA和DBTCONB各位的定义完全相同。不同之处用“/”符号区分。,死区控制寄存器A/B(DBTCONA/DBTCONB)地址7415h/7515h D15D12 Reserved保留位。D11D8 DBT3DBT0死区定时器周期,这4位定义了3个死区定时器的周 期值(m)。D7 E

48、DBT3死区定时器3使能位(对应比较单元3的引脚PWM5/PWM11 和PWM6/PWM12)。0 禁止。1 使能。D6 EDBT2死区定时器2使能位(对应比较单元2的引脚PWM3/PWM9 和PWM4/10)。0 禁止。1 使能。,D5 EDBT1死区定时器1使能位(对应比较单元1的引脚PWM1/PWM7 和PWM2/PWM8)。0 禁止。1 使能。D4D2 DBTPS2一DBTPS0死区定时器的预分频器(x=CPU的时钟频率)。000 x/1 001 x/2010 x/4 011 x/8100 x/16 101 x/32110 x/32 111 x/32D1D0 Reserved保留位。,

49、死区的输入是PH1、PH2和PH3,分别由比较单元1,2和3对称/非对称波形发生器产生,与其相对应的死区单元的输出是DTPH1,DTPH1_:DTPH2,DTPH2_:DTPH3,DTPH3_,经过输出逻辑,DTPH1和DTPH1_对应于PWM输出PWM1和PWM2(EVB为PWM7和PWM8),DTPH2和DTPH2_对应于PWM3和PWM4(EVB为PWM9和PWM10),DTPH3和DTPH3_对应于PWM5和PWM6(EVB为PWM11和PWM12)。上述每两个信号的跳变沿有一段时间间隔,该时间间隔称为死区,死区的值由DBTCONA/B寄存器中的相应位决定:假如DBTCONA/B的D1

50、1D8位定义的值为m,D4D2位中的值对应的预分频因子为x/p(x为CPU时钟周期),则死区值为(p*m)个CPU时钟周期。,(2)比较单元和PWM电路中的PWM波形产生 比较单元的输出逻辑电路决定了比较发生匹配时,输出引脚PWM112上的输出极性和方式。通过设置ACTRA/B寄存器中的相应位可使输出方式为低有效,高有效,强制低,强制高。产生PWM输出需要对事件管理器中相关的寄存器进行配置,步骤如下:a.设置和装载ACTRx寄存器,以确定输出方式和极性。b.如果使用死区单元,则设置和装载DBTCONx寄存器。c.设置和装载通用定时器周期寄存器T1PR或T3PR以确定PWM周期。d.初始化比较寄

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号