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

下载本文档

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

文档简介

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

2、IR=PFDATDIR&0 xFFF7; /*IOPF3=0,允许电机8*/ pwm7(300); /*电机2正转*/ 系统进入主程序后第1个调用的函数是Disable( ),对状态寄存器ST0的INTM位置位,其作用是关闭总中断,在系统进行正确的初始化之前,不允许响应任何可屏蔽中断,否则软件可能发生不可预料的动作。 函数定义 /*/ / 屏蔽中断子程序 /*/ void inline Disable() asm( setc INTM); 主程序第2步调用了DSP模块初始化子程序,完成系统及各个模块的初始化工作,正确配置整个系统。TMS320LF2407A的系统初始化包括状态寄存器配置

3、、系统配置、中断配置、引脚配置及看门狗配置等。这些工作通常在系统复位后首先完成,然后再执行各模块程序。 /*/ / 2407 DSP模块初始化子程序 /*/ void Dsp24Initial() SysInitial();TimerInitial();IOInitial();CANInitial();SCIInitial(); /*/ 系统初始化子程序/*/void SysInitial() asm(“ setc SXM”); /*符号位扩展有效,数据通过定标移位器传送到累加器时 将产生符号扩展*/ asm( clrc OVM); /*累加器中结果正常溢出*/ asm( clrc CNF);

4、 /* B0被配置为数据存储空间*/ SCSR1 = 0 x02FD; /* CLki_1N=20M,CLKOUT=2*CLki_1N=40M*/ WDCR = 0 x00E8; /* 不使能看门狗,因为SCSR2中的WDOVERRIDE,WD保护位 复位后的缺省值为1,故可以用软件禁止看门狗*/ WSGR = 0 x0000; /* 不使能等待状态*/ IFR = 0 xFFFF; /* 清除中断标志位*/ IMR = 0 x0000; /* 禁止所有中断*/用汇编语言对状态寄存器进行的设置 状态寄存器ST0和ST1 ST0和ST1的各位标识了处理器模式,寻址指针值等CPU的各种状态和控制位

5、。在子程序调用和进入中断时,ST0和ST1保存CPU的各种状态。这两个寄存器的值可以被读取并保存起来,也可以由软件将数据写入ST0和ST1。用SETC指令和CLRC指令可以对这两个寄存器进行位操作,用加载状态寄存器指令LST可以将数据写入ST0和ST1,但LST指令操作不影响INTM位,用保存状态寄存器指令SST读取ST0和ST1的内容并保存。 状态寄存器状态寄存器ST0ST0和和ST1ST1 15 13 12 11 10 9 8 0 ST0 ARP OV OVM 1 INTM DP 15 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ST1 ARB CNF TC SXM C

6、 1 1 1 1 XF 1 1 PM 状态寄存器状态寄存器ST0ST0和和ST1ST1的字段定义的字段定义 符号 功 能 ARP 辅助寄存器指针:在选择间接寻址时,ARP 指向当前的辅助寄存器(AR);加载 ARP 时,原有的ARP值被复制到ARB中; 间接寻址时, ARP可以由存储器相关指令修改, 也可以由LARP、MAR 和 LST 指令修改;当通过 LST#1 指令加载 ARB 时,把相同的 ARB 值复制到 ARP OV 溢出标志位:该位保存一个被锁存的值,用以显示 CALU 中是否发生溢出,一旦发生溢出,OV 位保持为 1 直到下列情况中的某一个发生时才能被清除为 0:复位(Rese

7、t)、溢出时条件转移、无溢出时条件转移指令或 LST 指令 OVM 溢出方式位:当 OVM=0 时,累加器结果正常溢出;当 OVM=1 时,根据溢出的情况,累加器被设定为它的最大正值或最大负值。SETC 指令和 CLRC 指令分别对 OVM 置位和复位;也可用 LST 指令对该位进行修改 INTM 中断模式位:当 INTM 置为 0 时,所有的未屏蔽中断有效,当该位被置为 1 时,所有的可屏蔽中断被禁止。可通过 SETC INTM 指令和 CLRC INTM 指令将该位置 1 或清 0。RS中断也可设置 INTM,INTM 对不可屏蔽中断RS和 NMI 中断没有影响; 注意:INTM 位不受

8、LST 指令的影响,复位时该位置 1,在处理可屏蔽中断时,该位被置 1 DP 数据存储器页面指针:9 位的 DP 与一个指令字的低 7 位一起形成一个 16 位的直接寻址地址;可通过 LST 指令和 LDP 指令对其修改 ARB 辅助寄存器指针缓冲器:当 ARP 被加载到 ST0,除了使用 LST 指令外,原有的 ARP 值被复制到 ARB 中;当通过 LST#1 指令加载 ARB 时,把相同的 ARB 值复制到 ARP CNF 片内 DARAM 配置位:如果 CNF=0,可配置的双端口 RAM 区被映射到数据存储空间,如果CNF=1, 可配置的双端口 RAM 区被映射到程序存储空间。 CNF

9、 可通过 SETC CNF、 CLRC CNF和 LST 指令来修改,复位时 CNF 置 0 TC 测试/控制标志位:在下列情况之一时,TC 将被置 1:由 BIT 或 BITT 指令测试的位为 1,当利用 NORM 指令测试时,累加器的两个最高有效位“异或”功能为真;条件转移、调用和返回指令可根据 TC 的条件来执行;BIT、BITT、CMPR、LST 和 NORM 指令会影响 TC SXM 符号扩展方式位: 当 SXM=1 时, 数据通过定标移位器传送到累加器时将产生符号扩展, SXM=0时,将抑制符号扩展。SXM 对某些指令没有影响,例如 ADDS C 进位标志位:此位在加法结果产生进位

10、时被置 1,或在减法结果产生借位时被清 0;否则除了执行带有16 位移位的ADD或 SUB指令外, C 在加法后被清除或在减法后被设置; 在执行ADD或 SUB 指令时,ADD 仅对进位标志位进行设置,而 SUB 仅可对进位位进行清除,而不会对进位标志位产生其他影响;移 1 位和循环指令也可影响进位位 C,以及 SETC、CLRC 和 LST指令也可影响 C;条件转移、调用和返回指令可以根据 C 的状态进行执行;复位时 C 被置 1 PM乘积移位方式:PM=00,乘法器的32位乘积结果不移位,直接装入CALUPM=01,PREG输出左移1位后装入CALU,最低位(LSB)以0填充PM=10,P

11、REG输出左移4位后装入CALU,最低位(LSB)以0填充PM=11,PREG输出进行符号扩展右移6位注意:PREG的内容是一直保持不变的,当把PREG中的内容传送到CALU单元中,发生移位操作,PM可由SPM指令和LST#1指令加载,复位时PM位清0系统配置寄存器 系统控制和状态寄存器系统控制和状态寄存器 1(SCSR1)地址地址 7018h 15 14 13 12 11 10 9 8 保留位 CLKSRC LPM1 LPM0 CLKPS2 CLKPS1 CLKPS0 保留位 R_0 RW_0 RW_0 RW_0 RW_1 RW_1 RW_1 R_0 7 6 5 4 3 2 1 0 ADC

12、CLKEN SCI CLKEN SPI CLKEN CAN CLKEN EVB CLKEN EVA CLKEN 保留位 ILLADR RW_0 RW_0 RW_0 RW_0 RW_0 RW_0 R_0 RC_0 注:R=可读 , W=可写 , C=清除 _0=复位值。 位 15 保留位 位 14 CLKSRC,CLROUT 引脚源选择位 0 CLKOUT 引脚输出 CPU 时钟 1 CLKOUT 引脚输出 WDCLK 时钟 位 1312 LPM(1,0) 。低功耗模式选择位,这两位声明了 CPU 在执行 IDLE 指令时进入哪一种低功耗方式。 CPU 进入 IDLE1(LPM0)模式 00 C

13、PU 进入 IDLE2(LPM1)模式 1x CPU 进入 HALT (LPM2)模式 位 119 PLL 时钟预定标选择位,这三位对输入时钟选择 PLL 倍频系数,见下表 PLL 时钟预定选择位对系统时钟频率的选择 CLKPS2 CLKPS1 CLKPS0 系统时钟频率 0 0 0 4fin 0 0 1 2fin 0 1 0 1.33fin 0 1 1 1fin 1 0 0 0.8fin 1 0 1 0.66fin 1 1 0 0.57fin 1 1 1 0.5fin 注:fin 为输入时钟频率 位 8 保留位 位 7 ADC CLKEN。ADC 模块时钟使能控制位。 0 禁止 ADC 模块

14、的时钟(即:关断 ADC 模块以节约能量) 1 使能 ADC 模块的时钟,且正常运行 位 6 SCI CLKEN。SCI 模块时钟使能控制位。 0 禁止 SCI 模块的时钟(即:关断 SCI 模块以节约能量) 1 使能 SCI 模块的时钟,且正常运行 位 5 SPI CLKEN。SPI 模块时钟使能控制位。 0 禁止 SPI 模块的时钟(即:关断 SPI 模块以节约能量) 1 使能 SPI 模块的时钟,且正常运行 位 4 CAN CLKEN。CAN 模块时钟使能控制位。 位 4 CAN CLKEN。CAN 模块时钟使能控制位。 0 禁止 CAN 模块的时钟(即:关断 CAN 模块以节约能量)

15、1 使能 CAN 模块的时钟,且正常运行 位 3 EVB CLKEN。EVB 模块时钟使能控制位。 0 禁止 EVB 模块的时钟(即:关断 EVB 模块以节约能量) 1 使能 EVB 模块的时钟,且正常运行 位 2 EVA CLKEN。EVA 模块时钟使能控制位。 0 禁止 EVA 模块的时钟(即:关断 EVA 模块以节约能量) 1 使能 EVA 模块的时钟,且正常运行 注意, 必须通过向相应的位写 1 来使能到外设的时钟, 才能修改或者读取任何外设寄存器的内容。 位 1 保留位。 位 0 ILLADR 位。无效地址检测位。 注意,在检测到一个无效的地址时,该位被置 1。被置 1 后该位需要用

16、户软件清 0。向这一位写 1 可将其清 0。在初始化程序中将该位清 0。 注:无效的地址将会导致非屏蔽中断 NMI 发生。 系统控制和状态寄存器系统控制和状态寄存器2 2(SCSR2SCSR2)地址地址7019h7019h 158 保留位 RW_0 7 6 5 4 3 2 1 0 保留位 I/P QUAL WD OVERRIDE XMIF HI-Z BOOT EN MP/MC DON PON RW_0 RC_1 RW_0 RW-BOOT EN引脚 RW-MP/MC引脚 RW_1 RW_1 位1517 保留位。这些位的读出值不确定,而写入则无影响。 位6 I/P QUAL。输入时钟限定器。它限定

17、输入到LF240 x器件的CAP16,XINT12,ADCSOC以及PDPINTA/B引脚上的信号。如果这些引脚作I/O功能使用时不会使用输入时钟限定电路,当这些引脚使用特殊功能时,这一位规定了输入到这些引脚上的信号被正确锁存时需要的最少脉冲宽度。脉冲只有达到这个宽度之后内部的输入状态才会改变。 0 输入限定器锁存脉冲至少5个时钟周期长 1 输入限定器锁存脉冲至少11个时钟周期长注意,虽然CLKOUT和内部时钟的频率一样,但两者并不完全相同。位5 WD OVERRIDE。WD保护位。复位后的缺省值为1,从而使用户可以通过用软件将WDCR寄存器中的WDDIS 位置1来禁止WD工作,这一位是一个只

18、能清0的位,通过向这一位写入1来对其清0。 0 使用户不能通过软件来禁止WD,这一位是一个只能清0位,不能通过软件来置1 1 复位时的缺省值,使用户能够通过软件来禁止WD工作位4 XMIF HI-Z XMIF高阻控制位。这一位控制外部外部存储器接口信号(XMIF) 0 所有XMIF信号处于正常驱动模式(即非高阻态) 1 所有XMIF信号处于高阻态位 3 BOOT EN,BOOT 使能位,这一位反映了BOOT EN/XF 引脚在复位时的状态,该位可被软件改变 0 使能引导 ROM,地址空间 0000h00FFh 被片内引导 ROM 块占用。这种方式下,禁止使用 FLASH 存储器。 注意,在 R

19、OM 器件中没有片内引导 ROM 1 禁止引导 ROM, 对 TMS320LF2407和 TMS320LF2406A 片内 FLASH 程序存储器映射地址范围为 0000h7FFFh,对于 TMS320LF2402A,地址范围是0000h1FFFh 位 2 MP/MC。 微处理器微控制器选择位。 这一位反映了期间复位时 MP/MC引脚上的状态,复位之后,可以通过软件来改变这一位以动态映射存储器到片内或片外。 0 器件设置为微控制器方式, 程序地址范围从 0000h7FFFh 被映射到片内 1 器件设置为微处理器方式, 程序地址范围从 0000h7FFFh 被映射到片外(即用户必须自己提供外部存

20、储器件) 位10 SARAM程序/数据空间选择位 DON PON SARAM状态 0 0 地址空间不被映射,该空间被分配到外部存储器 0 1 SARAM被映射到片内程序空间 1 0 SARAM被映射到片内数据空间 1 1 SARAM即被映射到片内程序空间又被映射到片内数据空间在程序中SCSR1被赋值0 x02FD,即二进制的0000 0010 1111 1101,从寄存器各位的定义说明可知: CLKOUT引脚输出CPU时钟; CPU进入IDLE1(LPM0)模式; PLL时钟预定标选择位001,系统时钟频率2fin,由于本系统中晶振频率为10M,所以系统时钟频率为20M;使能ADC模块、SCI

21、模块、SPI模块、CAN模块、EVB模块和EVA模块的时钟且正常运行。 程序并未对SCSR2进行设置,意味着SCSR2各位的值为复位后的缺省值,其中WD OVERRIDE为WD保护位。复位后的缺省值为1,从而使用户可以通过用软件将WDCR寄存器中的WDDIS 位置1来禁止WD工作,这一位是一个只能清0的位,通过向这一位写入1来对其清0,这正是程序下一句的内容:WDCR = 0 x00E8;/用软件禁止看门狗 程序的第7句和第8句配置中断屏蔽寄存器和中断标志寄存器,禁止所有可屏蔽中断并清除所有中断标志,防止外界干扰信号引发错误响应。 根据程序员的习惯不同,有的程序员还喜欢将引脚功能的定义也放到系

22、统初始化的函数中,但另一些程序员则喜欢将这项工作放在各个模块的初始化工作中。中断配置与响应DSP2407将中断系统分为2个层次 内核级中断GISR(General Interrupt Service Routine); 外设级中断SISR(Specific Interrupt Service Routine); 38个可引发中断的事件分成6组(group),每组使用一个内核级中断; 6个内核级中断有6个内核级中断向量,使6个内核级中断转向6个内核级中断服务程序中去; 进入内核级中断服务程序后,细分和判断是组内那个外设事件引发的,进而转向专为此编写的服务程序。240 xA240 xA内核级中断优

23、先级和中断向量表内核级中断优先级和中断向量表中断向量表中断名称优先级功能00HRSN1硬件上电复位中断,不可屏蔽12HINT141号可屏蔽中断24HINT252号可屏蔽中断36HINT363号可屏蔽中断48HINT474号可屏蔽中断5AHINT585号可屏蔽中断6CHINT696号可屏蔽中断7EH保留分析中断810H20HINT8INT16用户自定义软件中断924HNMI31028HINT20INT31用户自定义软件中断可屏蔽中断和不可屏蔽中断 不可屏蔽中断:任何状态下都不能被屏蔽(如DSP硬件上电复位中断)的中断; 可屏蔽中断:可以通过软件设置中的中断控制寄存器来屏蔽或开放中断;中断向量 每

24、个外设中断请求有效时,都会产生一个唯一的外设中断向量,这个外设中断向量被装载到外设中断向量寄存器(PIVR); CPU响应外设中断时,从PIVR中读取相应的中断向量,转到相关的中断服务程序入口。中断向量表DSP2407 有两个向量表(1) CPU向量表用来获取响应CPU中断请求的一级通用中断服务子程序(GISR)。(2) 外设向量表用来获取响应某一特定外设事件的特定中断服务子程序(SISR)240 xA中断源优先级和中断向量表中断名称优先级CPU中断和向量地址外围中断向量(PIV)能否被屏蔽外围中断源模块描述Reset1RSN0000hN/ANRS pin看门狗来自引脚的复位信号,看门狗溢出保

25、留位20026hN/ANCPU用于仿真NMI3NMI0024hN/AN不可屏蔽中断不可屏蔽中断只能是软件中断PDPINTA4INT10002h0020hYEVA功率驱动保护引脚中断PDPINTB50019hYEVBADCINT60014hYADC高优先级模式的ADC中断XINT170001hY外部中断逻辑高优先级模式的外部引脚中断XINT280011hYSPIINT90005hYSPI高优先级模式的SPI中断RXINT100006hYSCI高优先级模式的SCI接收中断TXINT110007hYSCI高优先级模式的SCI发送中断CANMBINT120040hYCAN高优先级模式的CAN邮箱中断C

26、ANERINT13INT20004h0041hYCAN高优先级模式的CAN错误中断CMP1INT140021hYEVACompare1中断CMP2INT150022hYEVACompare2中断CMP3INT160023hYEVACompare3中断T1PINT170027hYEVATimer1周期中断T1CINT180028hYEVATimer1比较中断T1UFINT190029hYEVATimer1下溢中断T1OFINT20002AhYEVATimer1上溢中断CMP4INT210024hYEVBCompare4中断CMP5INT220025hYEVBCompare5中断CMP6INT23

27、0026hYEVBCompare6中断T3PINT24002FhYEVBTimer3周期中断T3CINT250030hYEVBTimer3比较中断T3UFINT260031hYEVBTimer3下溢中断T3OFINT270032hYEVBTimer3上溢中断T2PINT28INT30006h002BhYEVATimer2周期中断T2CINT29002ChYEVATimer2比较中断T2UFINT30002DhYEVATimer2下溢中断T2OFINT31002EhYEVATimer2上溢中断T4PINT320039hYEVBTimer4周期中断T4CINT33003AhYEVBTimer4比较

28、中断T4UFINT34INT40008h003BhYEVBTimer4下溢中断T4OFINT35003ChYEVBTimer4上溢中断CAP1INT360033hYEVACapture1中断CAP2INT370034hYEVACapture2中断CAP3INT380035hYEVACapture3中断CAP4INT390036hYEVBCapture4中断CAP5INT400037hYEVBCapture5中断CAP6INT410038hYEVBCapture6中断SPIINT42INT5000Ah0005hYSPI低优先级模式的SPI中断RXINT430006hYSCI低优先级模式的SCI接

29、收中断TXINT440007hYSCI低优先级模式的SCI发送中断CANMBINT450040hYCAN低优先级模式的CAN邮箱中断CANEBINT460041hYCAN低优先级模式的CAN错误中断ADCINT47INT6000Ch0004hYADC低优先级模式的ADC中断XINT1480001hY外部中断逻辑低优先级模式的外部引脚中断XINT2490011hY外部中断逻辑保留位000EhN/AYCPU分析中断TRAPN/A0022hN/AN/ACPUTRA指令假中断向量N/AN/A0000hN/ACPU假中断向量INT8INT160010h-0020hN/AN/ACPU软件中断向量INT20

30、INT310028h-003FhN/AN/ACPU软件结构 与两级中断层次相适应,中断服务子程序也有两级,通用中断服务子程序GISR和特定中断服务子程序SISR; 在GISR中保存必要的上下文,并从外设中断向量寄存器PIVR中读取外设中断向量,这个向量用来判断引起中断请求的外设类型,产生转移到SISR的地址入口,对每一个从外设来的中断都编写一个SISR处理程序来具体执行该外设时间的响应。CPU中断寄存器中断标志寄存器(中断标志寄存器(IFRIFR)地址地址0006h0006h 中断标志寄存器(IFR)用于识别和清除挂起的中断,IFR包含6个可屏蔽中断的标志位; CPU响应中断,则程序跳至中断服

31、务程序入口,同时清除IFR的相应位; 读取IFR可以识别挂起的中断,而写IFR则将清除已挂起的中断,为了清除一个中断请求,只能向相应的IFR位写1,而不是写0。IFR位156 保留位。这些位读出时始终为0。位5 INT6 flag中断6标志位。该位用作连至第6级中断INT6 的所有中断标志。0无INT6级的中断挂起1至少一个INT6级的中断挂起,向该位写1可将该位清除为0,即清除中断请求位4 INT5 flag中断5标志位。该位用作连至第5级中断INT5的所有中断标志。0无INT5级的中断挂起1至少一个INT5级的中断挂起,向该位写1可将该位清除为0,即清除中断请求位3 INT4 flag中断4标志位。该位用作连至第4级中断INT4的所有中断标志。0无INT4级的中断挂起1至少一个INT4级的中断挂起,向该位写1可将该位清除为0,即清除中断请求位2 INT3 flag中断3标志位。该位用作连至第3级中断INT3的所有中断标志。0无INT3级的中断挂起1至少一个INT3级的中断挂起,向该位

温馨提示

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

评论

0/150

提交评论