《dsp代码分析报告--中南大学》由会员分享,可在线阅读,更多相关《dsp代码分析报告--中南大学(19页珍藏版)》请在金锄头文库上搜索。
1、DSP 原理及应用代码分析报告院 系: 专业班级: 学生姓名: 学 号: 指导老师: 2应用 DSP2407 开发板实现 LED 的定时器控制一 基本原理概述DSP的IO口没有单片机的IO口的驱动能力强,不能直接接LED。所以在核心板中采用的是三极管驱动电路,如图所示:定时器是片内减一计数器,用于周期性地产生 CPU 中断。片内定时器是可编程的,TMS320C54x 系列芯片有 3 个存储器映像寄存器,DSP2407 开发板与之相比大同小异。定时器由定时寄存器 TIM、定时周期寄存器 PRD、定时控制寄存器 TCR 及相应的逻辑控制电路组成,分辨率是器件的时钟输出 CLKOUT 频率。其逻辑框
2、图如下:定时器的定时周期为:CLKOUT(TDDR+1)(PRD+1) 其中,CLKOUT 为时钟周期,TDDR 和 PRD 分别为定时器的分频系数和时间常数。在正常工作情况下,当 TIM 减到 0 后,PRD 中的时间常数自动地加载到 TIM。当系统复位或者定时器单独复位时,PRD 中的时间常数重新加载到 TIM。同样地,每当复位或 PSC3减到 0 后,定时器分频系数 TDDR 自动地加载到 PSC。PSC 在 CLKOUT 作用下,作减 1 计数。当 PSC 减到 0 时,产生一个借位信号,令 TIM 作减 l 计数。TIM 减到 0 后,产生定时中断信号 TINT,传送至 CPU 和定
3、时器输出引脚 TOUT,从而控制 LED 灯的亮与灭。二(C 语言)主要程序分析/*Main.c,LED 与定时器程序*/#include global.c void SystemInit();void Timer1Init(); void KickDog();int numled=200;main() SystemInit(); /*系统初始化*/MCRA=MCRA /IOPB0-6 设为 IO 口模式PBDATDIR=0xFFC2; /所有 LED=0 PBDATDIR=PBDATDIR |0x003D; /所有 LED=1 Timer1Init(); /*定时器初始化*/asm( CLR
4、C INTM );while(1); void SystemInit() asm( SETC INTM ); /* 关闭总中断 */asm( CLRC SXM ); /* 禁止符号位扩展 */ asm( CLRC CNF ); /* B0 块映射为 on-chip DARAM*/asm( CLRC OVM ); /* 累加器结果正常溢出*/SCSR1=0x83FE; /* 系统时钟 CLKOUT=20*2=40M */* 打开 ADC,EVA,EVB,CAN 和 SCI 的时钟,系统 CLKOUT=40M */WDCR=0x006F; /* 禁止看门狗,看门狗时钟 64 分频 */ KickD
5、og(); /* 初始化看门狗 */ IFR=0xFFFF; /* 清除中断标志 */IMR=0x0002; /* 打开中断 2*/ 4void Timer1Init() EVAIMRA=0x0080; /定时器 1 周期中断使能 EVAIFRA=0xFFFF; /清除中断标志 GPTCONA=0x0000;T1PR=2500; /定时器 1 初值,定时 0.4us*2500=1ms T1CNT=0;T1CON=0x144E; /增模式, TPS 系数 40M/16=2.5M,T1 使能void c_int2() /*定时器 1 中断服务程序*/if(PIVR!=0x27) asm( CLRC
6、 INTM );return;T1CNT=0;numled-;if(numled=0)numled=200;if(PBDATDIR& 0x0001)=0x0001) PBDATDIR=PBDATDIR LED 灭 elsePBDATDIR=PBDATDIR |0x0101; /IOPB0=1;LED 亮 EVAIFRA=0x80; asm( CLRC INTM ); void KickDog() /*踢除看门狗 */WDKEY=0x5555;WDKEY=0xAAAA;三算法分析从主程序 main 函数可以看出,程序主要时按照顺序结构编写的,主要包括 DSP 系统5初始化、定时器初始化和中断服务
7、子程序。其算法流程图如下:开始DSP 系统初始化定时器初始化中断向量初始化图 1. 主程序流程图关中断初始化 IO 口和时钟初始化看门狗关中断图 2. DSP 系统初始化等待中断产生6定时器 1 周期中断使能清除中断标志定时器 1 赋初值增模式, TPS 系数 40M/16=2.5M图 3. 定时器初始化中断打开改变 LED 灯状态中断结束图 4. 中断服务子程序四.头文件和变量声明分析.include lf2407a.h .include F2407REGS.H .global _c_int0,_c_int1,_c_int2 .global _IMR,_IFR.global _SCSR1,_
8、SCSR2,_XINT1CR,_XINT2CR.global _WDCNTR,_WDKEY,_WDCR.global_MCRA,_MCRB,_MCRC,_PADATDIR,_PBDATDIR,_PCDATDIR,_PEDATDIR,_PFDATDIR.global_ADCTRL1,_ADCTRL2,_MAXCONV,_CHSELSEQ1,_CHSELSEQ2,_CHSELSEQ3,_CHSELSEQ4.global _AUTO_SEQ_SR,_RESULT0,_RESULT1,_RESULT2,_RESULT8,_RESULT9.global _CANMDER,_CANTCR,_CANRCR,
9、_CANMCR,_CANBCR2,_CANBCR1,_CANESR,_CANGSR.global _CANCEC,_CANIFR,_CANIMR,_CANLAM0H,_CANLAM0L.global _CANID0L,_CANID0H,_CANCTRL0,_CANBX0A,_CANBX0B,_CANBX0C,_CANBX0D7.global _CANID1L,_CANID1H,_CANCTRL1,_CANBX1A,_CANBX1B,_CANBX1C,_CANBX1D.global _CANID2L,_CANID2H,_CANCTRL2,_CANBX2A,_CANBX2B,_CANBX2C,_C
10、ANBX2D.global _CANID3L,_CANID3H,_CANCTRL3,_CANBX3A,_CANBX3B,_CANBX3C,_CANBX3D.global _CANID4L,_CANID4H,_CANCTRL4,_CANBX4A,_CANBX4B,_CANBX4C,_CANBX4D.global _CANID5L,_CANID5H,_CANCTRL5,_CANBX5A,_CANBX5B,_CANBX5C,_CANBX5D.global _GPTCONA,_T1CNT,_T1PR,_T1CON,_T2CNT,_T2PR,_T2CON.global _EVAIMRA,_EVAIMRB
11、,_EVAIFRA,_EVAIFRB,_PIVR.global_GPTCONB,_T3CNT,_T3CMPR,_T3PR,_T3CON,_COMCONA,_ACTRA,_DBTCONA,_CMPR1,_EVBIMRA,_EVBIFRA .global _WSGR .sect .data;建立中断向量表 .sect .vectors RSVECT B _c_int0INT1 B PHANTOMINT2 B _c_int2INT3 B PHANTOMINT4 B PHANTOMINT5 B PHANTOMINT6 B PHANTOM;中断子向量入口定义 .text PHANTOM:KICK_DOG
12、RET.end子函数lf2407a.h用于 CPU 内核定义,各部分初始化如下: ;/*/_IMR .set 00004H ;中断屏蔽寄存器_IFR .set 00006H ;中断标志寄存器;/*/;/* 系统控制/ 状态寄存器*/;/*/_SCSR1 .set 07018H ;系统控制/ 状态寄存器 1 _SCSR2 .set 07019H ;系统控制/ 状态寄存器 2 _PIVR .set 0701EH ;外部中断向量寄存器;/*/;/* 外部中断控制寄存器*/;/*/_XINT1CR .set 07070H ;外部中断 1 控制寄存器 _XINT2CR .set 07071H ;外部中断
13、 2 控制寄存器8;/*/;/*数字 I/O 接口 */;/*/_MCRA .set 07090H ;PA 口的控制寄存器_MCRB .set 07092H ;PB 口的控制寄存器_MCRC .set 07094H ;PE 口和 PF 口的控制寄存器_PADATDIR .set 07098H ;PA 口的方向数据寄存器_PBDATDIR .set 0709AH ;PB 口的方向数据寄存器_PCDATDIR .set 0709CH ;PC 口的方向数据寄存器_PEDATDIR .set 07095H ;PE 口的方向数据寄存器_PFDATDIR .set 07096h ;I/O port F Data & Direction reg.;/*/ ;/*看门狗定时器 */;/*/_WDCNTR .set 07023H ;WD 计数器_WDKEY .set 07025H ;WD 键值_WDCR .set 07029H ;WD 控制寄存器;/*