DSP课件第九章TMS320LF240x片内外设.ppt
《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中的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 课件 第九 TMS320LF240x 内外
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5428171.html