第6章 DSP系统初始化及中断_第1页
第6章 DSP系统初始化及中断_第2页
第6章 DSP系统初始化及中断_第3页
第6章 DSP系统初始化及中断_第4页
第6章 DSP系统初始化及中断_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

第三章DSP系统初始化及中断

DSP系统在上电或复位之后,控制主程序首先完成的工作就是系统初始化一个典型的DSP运动控制基本应用程序范例main(){ Disable(); /*禁止总中断*/ Dsp24Initial(); /*系统初始化*/ Enable(); /*开总中断*/ OpenSerial(SRL_Rec); while(1) IMR|=0x0010; IFR|=0x0010; SetTimer(1); while(1) { ········ } PBDATDIR=PBDATDIR&0xFFDF; /*IOPB5=0,允许电机9转*/ pwm1(300); /*电机1正转*/ PFDATDIR=PFDATDIR&0xFFF7; /*IOPF3=0,允许电机8*/ pwm7(300); /*电机2正转*/}

系统进入主程序后第1个调用的函数是Disable(),对状态寄存器ST0的INTM位置位,其作用是关闭总中断,在系统进行正确的初始化之前,不允许响应任何可屏蔽中断,否则软件可能发生不可预料的动作。

函数定义/****************************///屏蔽中断子程序/****************************/voidinlineDisable(){asm("setcINTM");}主程序第2步调用了DSP模块初始化子程序,完成系统及各个模块的初始化工作,正确配置整个系统。TMS320LF2407A的系统初始化包括状态寄存器配置、系统配置、中断配置、引脚配置及看门狗配置等。这些工作通常在系统复位后首先完成,然后再执行各模块程序。/************************************///2407DSP模块初始化子程序/*************************************/voidDsp24Initial(){ SysInitial(); TimerInitial(); IOInitial(); CANInitial(); SCIInitial();}/************************************///系统初始化子程序/*************************************/voidSysInitial(){asm(“setcSXM”);/*符号位扩展有效,数据通过定标移位器传送到累加器时将产生符号扩展*/asm("clrcOVM"); /*累加器中结果正常溢出*/asm("clrcCNF"); /*B0被配置为数据存储空间*/ SCSR1=0x02FD; /*CLki_1N=20M,CLKOUT=2*CLki_1N=40M*/ WDCR=0x00E8; /*不使能看门狗,因为SCSR2中的WDOVERRIDE,WD保护位 复位后的缺省值为1,故可以用软件禁止看门狗*/WSGR=0x0000;/*不使能等待状态*/IFR=0xFFFF;/*清除中断标志位*/IMR=0x0000;/*禁止所有中断*/}用汇编语言对状态寄存器进行的设置

状态寄存器ST0和ST1ST0和ST1的各位标识了处理器模式,寻址指针值等CPU的各种状态和控制位。在子程序调用和进入中断时,ST0和ST1保存CPU的各种状态。这两个寄存器的值可以被读取并保存起来,也可以由软件将数据写入ST0和ST1。用SETC指令和CLRC指令可以对这两个寄存器进行位操作,用加载状态寄存器指令LST可以将数据写入ST0和ST1,但LST指令操作不影响INTM位,用保存状态寄存器指令SST读取ST0和ST1的内容并保存。状态寄存器ST0和ST1

状态寄存器ST0和ST1的字段定义

PM乘积移位方式:PM=00,乘法器的32位乘积结果不移位,直接装入CALUPM=01,PREG输出左移1位后装入CALU,最低位(LSB)以0填充PM=10,PREG输出左移4位后装入CALU,最低位(LSB)以0填充PM=11,PREG输出进行符号扩展右移6位注意:PREG的内容是一直保持不变的,当把PREG中的内容传送到CALU单元中,发生移位操作,PM可由SPM指令和LST#1指令加载,复位时PM位清0系统配置寄存器系统控制和状态寄存器2(SCSR2)——地址7019h位15~17保留位。这些位的读出值不确定,而写入则无影响。位6I/PQUAL。输入时钟限定器。它限定输入到LF240x器件的CAP1~6,XINT1~2,ADC~SOC以及PDPINTA/B引脚上的信号。如果这些引脚作I/O功能使用时不会使用输入时钟限定电路,当这些引脚使用特殊功能时,这一位规定了输入到这些引脚上的信号被正确锁存时需要的最少脉冲宽度。脉冲只有达到这个宽度之后内部的输入状态才会改变。0输入限定器锁存脉冲至少5个时钟周期长1输入限定器锁存脉冲至少11个时钟周期长注意,虽然CLKOUT和内部时钟的频率一样,但两者并不完全相同。位5WDOVERRIDE。WD保护位。复位后的缺省值为1,从而使用户可以通过用软件将WDCR寄存器中的WDDIS位置1来禁止WD工作,这一位是一个只能清0的位,通过向这一位写入1来对其清0。0使用户不能通过软件来禁止WD,这一位是一个只能清0位,不能通过软件来置11复位时的缺省值,使用户能够通过软件来禁止WD工作位4XMIFHI-ZXMIF高阻控制位。这一位控制外部外部存储器接口信号(XMIF)0所有XMIF信号处于正常驱动模式(即非高阻态)1所有XMIF信号处于高阻态位1~0SARAM程序/数据空间选择位

DONPONSARAM状态

00地址空间不被映射,该空间被分配到外部存储器

01SARAM被映射到片内程序空间

10SARAM被映射到片内数据空间

11SARAM即被映射到片内程序空间又被映射到片内数据空间在程序中SCSR1被赋值0x02FD,即二进制的0000001011111101,从寄存器各位的定义说明可知:CLKOUT引脚输出CPU时钟;CPU进入IDLE1(LPM0)模式;PLL时钟预定标选择位001,系统时钟频率2×fin,由于本系统中晶振频率为10M,所以系统时钟频率为20M;使能ADC模块、SCI模块、SPI模块、CAN模块、EVB模块和EVA模块的时钟且正常运行。

程序并未对SCSR2进行设置,意味着SCSR2各位的值为复位后的缺省值,其中WDOVERRIDE为WD保护位。复位后的缺省值为1,从而使用户可以通过用软件将WDCR寄存器中的WDDIS位置1来禁止WD工作,这一位是一个只能清0的位,通过向这一位写入1来对其清0,这正是程序下一句的内容:WDCR=0x00E8; //用软件禁止看门狗程序的第7句和第8句配置中断屏蔽寄存器和中断标志寄存器,禁止所有可屏蔽中断并清除所有中断标志,防止外界干扰信号引发错误响应。根据程序员的习惯不同,有的程序员还喜欢将引脚功能的定义也放到系统初始化的函数中,但另一些程序员则喜欢将这项工作放在各个模块的初始化工作中。中断配置与响应DSP2407将中断系统分为2个层次内核级中断GISR(GeneralInterruptServiceRoutine);外设级中断SISR(SpecificInterruptServiceRoutine);38个可引发中断的事件分成6组(group),每组使用一个内核级中断;6个内核级中断有6个内核级中断向量,使6个内核级中断转向6个内核级中断服务程序中去;进入内核级中断服务程序后,细分和判断是组内那个外设事件引发的,进而转向专为此编写的服务程序。240xA内核级中断优先级和中断向量表中断向量表中断名称优先级功能00HRSN1硬件上电复位中断,不可屏蔽12HINT141号可屏蔽中断24HINT252号可屏蔽中断36HINT363号可屏蔽中断48HINT474号可屏蔽中断5AHINT585号可屏蔽中断6CHINT696号可屏蔽中断7EH保留分析中断810H~20HINT8~INT16用户自定义软件中断924HNMI31028H~INT20~INT31用户自定义软件中断可屏蔽中断和不可屏蔽中断不可屏蔽中断:任何状态下都不能被屏蔽(如DSP硬件上电复位中断)的中断;可屏蔽中断:可以通过软件设置中的中断控制寄存器来屏蔽或开放中断;中断向量每个外设中断请求有效时,都会产生一个唯一的外设中断向量,这个外设中断向量被装载到外设中断向量寄存器(PIVR);CPU响应外设中断时,从PIVR中读取相应的中断向量,转到相关的中断服务程序入口。中断向量表DSP2407有两个向量表(1)CPU向量表用来获取响应CPU中断请求的一级通用中断服务子程序(GISR)。(2)外设向量表用来获取响应某一特定外设事件的特定中断服务子程序(SISR)240xA中断源优先级和中断向量表中断名称优先级CPU中断和向量地址外围中断向量(PIV)能否被屏蔽外围中断源模块描述Reset1RSN0000hN/ANRSpin看门狗来自引脚的复位信号,看门狗溢出保留位2—0026hN/ANCPU用于仿真NMI3NMI0024hN/AN不可屏蔽中断不可屏蔽中断只能是软件中断PDPINTA4INT10002h0020hYEVA功率驱动保护引脚中断PDPINTB50019hYEVBADCINT60014hYADC高优先级模式的ADC中断XINT170001hY外部中断逻辑高优先级模式的外部引脚中断XINT280011hYSPIINT90005hYSPI高优先级模式的SPI中断RXINT100006hYSCI高优先级模式的SCI接收中断TXINT110007hYSCI高优先级模式的SCI发送中断CANMBINT120040hYCAN高优先级模式的CAN邮箱中断CANERINT13INT20004h0041hYCAN高优先级模式的CAN错误中断CMP1INT140021hYEVACompare1中断CMP2INT150022hYEVACompare2中断CMP3INT160023hYEVACompare3中断T1PINT170027hYEVATimer1周期中断T1CINT180028hYEVATimer1比较中断T1UFINT190029hYEVATimer1下溢中断T1OFINT20002AhYEVATimer1上溢中断CMP4INT210024hYEVBCompare4中断CMP5INT220025hYEVBCompare5中断CMP6INT230026hYEVBCompare6中断T3PINT24002FhYEVBTimer3周期中断T3CINT250030hYEVBTimer3比较中断T3UFINT260031hYEVBTimer3下溢中断T3OFINT270032hYEVBTimer3上溢中断T2PINT28INT30006h002BhYEVATimer2周期中断T2CINT29002ChYEVATimer2比较中断T2UFINT30002DhYEVATimer2下溢中断T2OFINT31002EhYEVATimer2上溢中断T4PINT320039hYEVBTimer4周期中断T4CINT33003AhYEVBTimer4比较中断T4UFINT34INT40008h003BhYEVBTimer4下溢中断T4OFINT35003ChYEVBTimer4上溢中断CAP1INT360033hYEVACapture1中断CAP2INT370034hYEVACapture2中断CAP3INT380035hYEVACapture3中断CAP4INT390036hYEVBCapture4中断CAP5INT400037hYEVBCapture5中断CAP6INT410038hYEVBCapture6中断SPIINT42INT5000Ah0005hYSPI低优先级模式的SPI中断RXINT430006hYSCI低优先级模式的SCI接收中断TXINT440007hYSCI低优先级模式的SCI发送中断CANMBINT450040hYCAN低优先级模式的CAN邮箱中断CANEBINT460041hYCAN低优先级模式的CAN错误中断ADCINT47INT6000Ch0004hYADC低优先级模式的ADC中断XINT1480001hY外部中断逻辑低优先级模式的外部引脚中断XINT2490011hY外部中断逻辑保留位000EhN/AYCPU分析中断TRAPN/A0022hN/AN/ACPUTRA指令假中断向量N/AN/A0000hN/ACPU假中断向量INT8~INT160010h-0020hN/AN/ACPU软件中断向量INT20~INT310028h-003FhN/AN/ACPU软件结构与两级中断层次相适应,中断服务子程序也有两级,通用中断服务子程序GISR和特定中断服务子程序SISR;在GISR中保存必要的上下文,并从外设中断向量寄存器PIVR中读取外设中断向量,这个向量用来判断引起中断请求的外设类型,产生转移到SISR的地址入口,对每一个从外设来的中断都编写一个SISR处理程序来具体执行该外设时间的响应。CPU中断寄存器中断标志寄存器(IFR)——地址0006h中断标志寄存器(IFR)用于识别和清除挂起的中断,IFR包含6个可屏蔽中断的标志位;CPU响应中断,则程序跳至中断服务程序入口,同时清除IFR的相应位;读取IFR可以识别挂起的中断,而写IFR则将清除已挂起的中断,为了清除一个中断请求,只能向相应的IFR位写1,而不是写0。IFR位15~6保留位。这些位读出时始终为0。位5INT6flag中断6标志位。该位用作连至第6级中断INT6

的所有中断标志。 0 无INT6级的中断挂起 1 至少一个INT6级的中断挂起,向该位写1可将

该位清除为0,即清除中断请求位4INT5flag中断5标志位。该位用作连至第5级中断INT5的所有中断标志。 0 无INT5级的中断挂起 1 至少一个INT5级的中断挂起,向该位写1可将该位清除为0,即清除中断请求位3INT4flag中断4标志位。该位用作连至第4级中断INT4的所有中断标志。 0 无INT4级的中断挂起 1 至少一个INT4级的中断挂起,向该位写1可将该位清除为0,即清除中断请求位2INT3flag中断3标志位。该位用作连至第3级中断INT3的所有中断标志。 0 无INT3级的中断挂起 1 至少一个INT3级的中断挂起,向该位写1可将该位清除为0,即清除中断请求.位1INT2flag中断2标志位。该位用作连至第2级中断INT2的所有中断标志。 0 无INT2级的中断挂起 1 至少一个INT2级的中断挂起,向该位写1可将该位清除为0,即清除中断请求位0INT1flag中断1标志位。该位用作连至第1级中断INT1的所有中断标志。 0 无INT1级的中断挂起 1 至少一个INT1级的中断挂起,向该位写1可将该位清除为0,即清除中断请求中断屏蔽寄存器(IMR)——地址0004h包含所有可屏蔽中断级(INT1~INT6)的屏蔽位。IMR不包含NMI和RS,因此不影响这两个引脚;IMR寄存器可读可写,读IMR可以识别出已屏蔽或使能的中断级,写IMR可屏蔽或使能中断级,如果要使能某

温馨提示

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

评论

0/150

提交评论