DSP代码分析报告--中南大学.docx_第1页
DSP代码分析报告--中南大学.docx_第2页
DSP代码分析报告--中南大学.docx_第3页
DSP代码分析报告--中南大学.docx_第4页
DSP代码分析报告--中南大学.docx_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

DSP原理及应用代码分析报告院 系: 专业班级: 学生姓名: 学 号: 指导老师: 应用DSP2407开发板实现LED的定时器控制一 基本原理概述DSP的IO口没有单片机的IO口的驱动能力强,不能直接接LED。所以在核心板中采用的是三极管驱动电路,如图所示:定时器是片内减一计数器,用于周期性地产生CPU中断。片内定时器是可编程的,TMS320C54x系列芯片有3个存储器映像寄存器,DSP2407开发板与之相比大同小异。定时器由定时寄存器TIM、定时周期寄存器PRD、定时控制寄存器TCR及相应的逻辑控制电路组成,分辨率是器件的时钟输出CLKOUT频率。其逻辑框图如下:定时器的定时周期为: CLKOUT(TDDR+1)(PRD+1) 其中,CLKOUT为时钟周期,TDDR和PRD分别为定时器的分频系数和时间常数。在正常工作情况下,当TIM减到0后,PRD中的时间常数自动地加载到TIM。当系统复位或者定时器单独复位时,PRD中的时间常数重新加载到TIM。同样地,每当复位或PSC减到0后,定时器分频系数TDDR自动地加载到PSC。PSC在CLKOUT作用下,作减1计数。当PSC减到0时,产生一个借位信号,令TIM作减l计数。TIM减到0后,产生定时中断信号TINT,传送至CPU和定时器输出引脚TOUT,从而控制LED灯的亮与灭。二(C语言)主要程序分析/*Main.c,LED与定时器程序*/#include global.c void SystemInit();void Timer1Init(); void KickDog();int numled=200;main() SystemInit(); /*系统初始化*/ MCRA=MCRA & 0xC0FF; /IOPB0-6设为IO口模式 PBDATDIR=0xFFC2; /所有LED=0 PBDATDIR=PBDATDIR |0x003D; /所有LED=1 Timer1Init(); /*定时器初始化*/ asm( CLRC INTM ); while(1); void SystemInit() asm( SETCINTM );/* 关闭总中断 */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分频 */ KickDog(); /* 初始化看门狗 */ IFR=0xFFFF;/* 清除中断标志 */ IMR=0x0002;/* 打开中断2*/ void 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 INTM );return;T1CNT=0;numled-;if(numled=0)numled=200;if(PBDATDIR& 0x0001)=0x0001) PBDATDIR=PBDATDIR & 0xFFFE; /IOPB0=0;LED灭 elsePBDATDIR=PBDATDIR |0x0101; /IOPB0=1;LED亮 EVAIFRA=0x80; asm( CLRCINTM ); void KickDog()/*踢除看门狗 */WDKEY=0x5555;WDKEY=0xAAAA;三算法分析从主程序main函数可以看出,程序主要时按照顺序结构编写的,主要包括DSP系统初始化、定时器初始化和中断服务子程序。其算法流程图如下:等待中断产生开始DSP系统初始化定时器初始化中断向量初始化图1. 主程序流程图关中断初始化IO口和时钟初始化看门狗关中断图2. DSP系统初始化定时器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,_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,_CANMCR,_CANBCR2,_CANBCR1,_CANESR,_CANGSR.global _CANCEC,_CANIFR,_CANIMR,_CANLAM0H,_CANLAM0L.global _CANID0L,_CANID0H,_CANCTRL0,_CANBX0A,_CANBX0B,_CANBX0C,_CANBX0D.global _CANID1L,_CANID1H,_CANCTRL1,_CANBX1A,_CANBX1B,_CANBX1C,_CANBX1D.global _CANID2L,_CANID2H,_CANCTRL2,_CANBX2A,_CANBX2B,_CANBX2C,_CANBX2D.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,_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 BPHANTOMINT2 B _c_int2INT3 B PHANTOMINT4BPHANTOMINT5 BPHANTOMINT6B PHANTOM;中断子向量入口定义 .text PHANTOM: KICK_DOGRET.end子函数lf2407a.h用于CPU内核定义,各部分初始化如下: ;/*/_IMR.set00004H;中断屏蔽寄存器_IFR.set00006H;中断标志寄存器;/*/;/* 系统控制/状态寄存器*/;/*/_SCSR1.set07018H;系统控制/状态寄存器1 _SCSR2.set07019H;系统控制/状态寄存器2 _PIVR.set0701EH;外部中断向量寄存器;/*/;/* 外部中断控制寄存器*/;/*/_XINT1CR.set07070H;外部中断1控制寄存器 _XINT2CR.set07071H;外部中断2控制寄存器;/*/;/*数字I/O接口 */;/*/_MCRA.set07090H;PA口的控制寄存器_MCRB.set07092H;PB口的控制寄存器_MCRC.set07094H;PE口和PF口的控制寄存器_PADATDIR.set07098H;PA口的方向数据寄存器_PBDATDIR.set0709AH;PB口的方向数据寄存器_PCDATDIR.set0709CH;PC口的方向数据寄存器_PEDATDIR.set07095H;PE口的方向数据寄存器_PFDATDIR.set 07096h;I/O port F Data & Direction reg.;/*/ ;/*看门狗定时器 */;/*/_WDCNTR.set07023H;WD计数器_WDKEY.set07025H;WD键值_WDCR.set07029H;WD控制寄存器;/*/;/* SCI 通讯初始化 */;/*/_SCICCR.set07050H;SCI通信控制寄存器_SCICTL1.set07051H;SCI控制寄存器1_SCIHBAUD.set07052H;SCI波特率寄存器(高位)_SCILBAUD.set07053H;SCI波特率寄存器(低位)_SCICTL2.set07054H;SCI控制寄存器2_SCIRXST.set07055H;SCI接收状态寄存器_SCIRXEMU.set 07056H;SCI仿真数据缓冲寄存器_SCIRXBUF.set07057H;SCI接收数据缓冲寄存器_SCITXBUF.set07059H;SCI发送数据缓冲寄存器_SCIPRI.set0705FH;SCI中断优先级控制寄存器;/*/ ;/*ADC 初始化 */;/*/_ADCTRL1.set070A0H;ADC控制寄存器1_ADCTRL2.set070A1H;ADC控制寄存器2_MAXCONV.set070A2H;最大转换通道寄存器_CHSELSEQ1.set070A3H;通道选择时序控制寄存器1_CHSELSEQ2.set070A4H;通道选择时序控制寄存器2_CHSELSEQ3.set070A5H;通道选择时序控制寄存器3_CHSELSEQ4.set070A6H;通道选择时序控制寄存器4_AUTO_SEQ_SR .set070A7H;自动时序状态寄存器_RESULT0.set070A8H;转换结果寄存器0_RESULT1.set070A9H;转换结果寄存器1_RESULT2.set070AAH;转换结果寄存器2_RESULT3.set070ABH;转换结果寄存器3_RESULT4.set070ACH;转换结果寄存器4_RESULT8.set070B0H;转换结果寄存器8_RESULT9.set070B1H;转换结果寄存器9;/*/;/*CAN 总线初始化 */;/*/_CANMDER.set07100H;缓冲使能/通信方向_CANTCR.set07101H;发送控制_CANRCR.set07102H;接收控制_CANMCR.set07103H;主控_CANBCR2.set07104H;位配置2_CANBCR1.set07105H;位配置1_CANESR.set07106H;错误状态_CANGSR.set07107H;全局状态_CANCEC.set07108H;发送/接收错误计数_CANIFR.set07109H;中断标志_CANIMR.set0710AH;中断屏蔽_CANLAM0H.set0710BH;接收屏蔽:mbox0/1_CANLAM0L.set0710CH;接收屏蔽:mbox0/1_CANLAM1H.set0710DH;接收屏蔽:mbox2/3_CANLAM1L.set0710EH;接收屏蔽:mbox2/3DP_CANBOX .set0E4H_CANID0L.set07200H;ID for mbox 0(lower)_CANID0H.set07201H;ID for mbox 0(upper)_CANCTRL0 .set07202H;RTR and DLC_CANBX0A.set07204H_CANBX0B.set07205H_CANBX0C.set07206H_CANBX0D.set07207H_CANID1L.set07208H;ID for mbox 1(lower)_CANID1H.set07209H;ID for mbox 1(upper)_CANCTRL1.set0720AH;RTR and DLC_CANBX1A.set0720CH_CANBX1B.set0720DH_CANBX1C.set0720EH_CANBX1D.set0720FH_CANID2L.set07210H;ID for mbox 2(lower)_CANID2H.set07211H;ID for mbox 2(upper)_CANCTRL2.set07212H;RTR and DLC_CANBX2A.set07214H_CANBX2B.set07215H_CANBX2C.set07216H_CANBX2D.set07217H_CANID3L.set07218H;ID for mbox 3(lower)_CANID3H.set07219H;ID for mbox 3(upper)_CANCTRL3.set0721AH;RTR and DLC_CANBX3A.set0721CH_CANBX3B.set0721DH_CANBX3C.set0721EH_CANBX3D.set0721FH_CANID4L.set07220H;ID for mbox 4(lower)_CANID4H.set07221H;ID for mbox 4(upper)_CANCTRL4.set07222H;RTR and DLC_CANBX4A.set07224H_CANBX4B.set07225H_CANBX4C.set07226H_CANBX4D.set07227H _CANID5L.set07228H;ID for mbox 5(lower)_CANID5H.set07229H;ID for mbox 5(upper)_CANCTRL5.set0722AH;RTR and DLC_CANBX5A.set0722CH_CANBX5B.set0722DH_CANBX5C.set0722EH_CANBX5D.set0722FH;/*/;/*EVA 控制初始化 */;/*/_GPTCONA.set07400H;全局通用定时器控制寄存器_T1CNT .set07401H ;T1计数寄存器_T1PR .set 07403H ;通用定时器的周期寄存器_T1CON .set 07404H ;定时器控制寄存器_T2CNT .set07405H;T2计数寄存器_T2PR .set07407H;T2的周期寄存器_T2CON .set 07408H;T2的控制寄存器 _ACTRA .set 07413H_DBTCONA .set07415H_CMPR1.set07417H _COMCONA .set 07411H_EVAIMRA.set 0742CH_EVAIMRB.set 0742DH_EVAIFRA.set 0742FH_EVAIFRB.set 07430H_GPTCONB .set 07500H_T3CNT .set 07501H_T3CMPR .set 07502H_T3PR .set 07503H_T3CON .set 07504H_EVBIMRA .set0752CH_EVBIFRA .set0752FH ;/*/;/*I/O space mapped registers */;/*/_WSGR.set0FFFFH;Wait-state Generator Control register 子函数F2407REGS.H用来定义全局变量寄存器和CPU中断寄存器:;IMR .set 0004h ;中断屏蔽寄存器IFR .set 0006h ;中断标志寄存器;System Registers;PIRQR0 .set 07010h ;外设中断请求寄存器0PIRQR1 .set 07011h ;外设中断请求寄存器1 PIRQR2 .set 07012h ;外设中断请求寄存器2PIACKR0 .set 07014h ;外设中断应答寄存器0PIACKR1 .set 07015h ;外设中断应答寄存器1PIACKR2 .set 07016h ;外设中断应答寄存器2SCSR1 .set 07018h ;系统控制和状态寄存器1SCSR2 .set 07019h ;系统控制和状态寄存器2DINR .set 0701Ch ;PIVR .set 0701Eh ;外设中断向量寄存器;WD 程序监视控制寄存器;WDCNTR .set07023h;WD 计数器寄存器WDKEY.set07025h;WDKey 寄存器WDCR.set07029h;WD 控制寄存器;串行外围接口 (SPI) 寄存器;SPICCR.set07040h;SPI 配置控制寄存器SPICTL.set07041h;SPI 操作控制寄存器SPISTS.set07042h;SPI 状态寄存器SPIBRR.set07044h;SPI 波特率寄存器SPIEMU .set07046h;SPI 仿真缓冲寄存器SPIRXBUF .set07047h;SPI 串行输入缓冲寄存器SPITXBUF .set07048h;SPI 串行输入缓冲寄存器SPIDAT .set07049h;SPI 串行数据寄存器SPIPRI .set0704Fh;SPI 中断优先级控制寄存器;串行通讯接口 (SCI) 寄存器;SCICCR.set07050h;SCI 通讯控制寄存器SCICTL1.set07051h;SCI 控制寄存器 1SCIHBAUD.set07052h;SCI 波特率寄存器高位SCILBAUD.set07053h;SCI 波特率寄存器低位SCICTL2.set07054h;SCI 控制寄存器 2SCIRXST.set07055h;SCI 接受状态寄存器SCIRXEMU.set07056h;SCI 仿真数据缓冲寄存器SCIRXBUF.set07057h;SCI 接受数据缓冲寄存器SCITXBUF.set07059h;SCI 发送数据缓冲寄存器SCIPRI .set0705Fh;SCI 中断优先级控制寄存器;外部中断寄存器;XINT1CR.set07070h;中断 1 控制寄存器XINT2CR .set07071h;中断 2 控制寄存器;数据 I/O 控制寄存器;MCRA.set07090h;Output Control Reg AMCRB.set07092h;Output Control Reg BMCRC.set07094h;Output Control Reg CPEDATDIR.set07095h;I/O port E Data & Direction reg.PFDATDIR.set07096h;I/O port F Data & Direction reg.PADATDIR.set07098h;I/O port A Data & Direction reg.PBDATDIR.set0709Ah;I/O port B Data & Direction reg.PCDATDIR.set0709Ch;I/O port C Data & Direction reg.PDDATDIR.set0709Eh;I/O port D Data & Direction reg.;模数转换(ADC) 寄存器;ADCTRL1.set070A0h;ADC 控制寄存器 1ADCTRL2.set070A1h;ADC 控制寄存器 2MAXCONV.set070A2hCHSELSEQ1.set070A3hCHSELSEQ2.set070A4hCHSELSEQ3.set070A5hCHSELSEQ4.set070A6hAUTO_SEQ_SR.set070A7hRESULT0.set070A8h;A/D转换结果寄存器0RESULT1.set070A9h;A/D转换结果寄存器1RESULT2.set070AAh;A/D转换结果寄存器2RESULT3.set070ABh;A/D转换结果寄存器3RESULT4.set070ACh;A/D转换结果寄存器4RESULT5.set070ADh;A/D转换结果寄存器5RESULT6.set070AEh;A/D转换结果寄存器6RESULT7.set070AFh;A/D转换结果寄存器7RESULT8.set070B0h;A/D转换结果寄存器8RESULT9.set070B1h;A/D转换结果寄存器9RESULT10.set070B2h;A/D转换结果寄存器10RESULT11.set070B3h;A/D转换结果寄存器11RESULT12.set070B4h;A/D转换结果寄存器12RESULT13.set070B5h;A/D转换结果寄存器13RESULT14.set070B6h;A/D转换结果寄存器14RESULT15.set070B7h;A/D转换结果寄存器15CALIBRATION.set070B8h;CAN 配置控制寄存器;MDER.set07100hTCR.set07101hRCR.set07102hMCR.set07103hBCR2.set07104hBCR1.set07105hESR.set07106hGSR.set07107hCEC.set07108hCAN_IFR.set 07109hCAN_IMR.set 0710AhLAM0_H.set0710BhLAM0_L.set0710ChLAM1_H.set0710DhLAM1_L.set0710Eh;邮包#0MSGID0L.set07200hMSGID0H.set07201hMSGCTRL0.set07202hMBX0A.set07204hMBX0B.set07205hMBX0C.set07206hMBX0D.set07207h;邮包#1MSGID1L.set07208hMSGID1H.set07209hMSGCTRL1.set0720AhMBX1A.set0720ChMBX1B.set0720DhMBX1C.set0720EhMBX1D.set0720Fh;邮包#2MSGID2L.set07210hMSGID2H.set07211hMSGCTRL2.set07212hMBX2A.set07214hMBX2B.set07215hMBX2C.set07216hMBX2D.set07217h;邮包#3MSGID3L.set07218hMSGID3H.set07219hMSGCTRL3.set0721AhMBX3A.set0721ChMBX3B.set0721DhMBX3C.set0721EhMBX3D.set0721Fh;邮包#4MSGID4L.set07220hMSGID4H.set07221hMSGCTRL4.set07222hMBX4A.set07224hMBX4B.set07225hMBX4C.set07226hMBX4D.set07227h;邮包#5MSGID5L.set07228hMSGID5H.set07229hMSGCTRL5.set0722AhMBX5A.set0722ChMBX5B.set0722DhMBX5C.set0722EhMBX5D.set0722Fh;通用定时器 - 事件管理器A (EVA);GPTCONA.set07400h;通用定时控制寄存器T1CNT.set07401h;通用定时器 1 计数寄存器T1CMPR.set07402h;通用定时器 1 比较寄存器T1PR.set07403h;通用定时器 1 周期寄存器T1CON.set07404h;通用定时器 1 控制寄存器T2CNT.set07405h;通用定时器 2 计数寄存器T2CMPR.set07406h;通用定时器 2 比较寄存器T2PR.set07407h;通用定时器 2 周期寄存器T2CON.set07408h;通用定时器 2 控制寄存器;Full & Simple Compare Unit Registers -事件管理器A (EVA);COMCONA.set07411h;比较控制寄存器 AACTRA.set07413h;全比较动作控制寄存器 ADBTCONA.set07415h;死区时间控制寄存器 ACMPR1.set07417h;全比较单元 1 比较寄存器CMPR2.set07418h;全比较单元 2 比较寄存器CMPR3.set07419h;全比较单元 3 比较寄存器;捕捉和正交编码寄存器事件管理器(EVA);CAPCONA.set07420h;捕捉控制寄存器 ACAPFIFOA.set07422h;捕捉FIFO 状态寄存器 ACAP1FIFO.set07423h;捕捉 1 二级 FIFO 寄存器CAP2FIFO.set07424h;捕捉 2 二级 FIFO 寄存器CAP3FIFO.set07425h;捕捉 3 二级 FIFO 寄存器CAP1FBOT.set07427hCAP2FBOT.set07428hCAP3FBOT.set07429h;事件管理器 (EVA) 中断控制寄存器;EVAIMRA.set0742Ch;事件管理器中断屏蔽寄存器 AEVAIMRB.set0742Dh;事件管理器中断屏蔽寄存器 BEVAIMRC.set0742Eh;事件管理器中断屏蔽寄存器 CEVAIFRA.set0742Fh;事件管理器中断标志寄存器 AEVAIFRB.set07430h;事件管理器中断标志寄存器 BEVAIFRC.set07431h;事件管理器中断标志寄存器 C;通用(GP)定时器配置控制寄存器-EVB;GPTCONB.set07500hT3CNT.set07501hT3CMPR.set07502hT3PR.set07503HT3CON.set07504hT4CNT.set07505hT4CMPR.set07506hT4PR.set07507HT4CON.set07508h;比较单元寄存器-EVB;COMCONB.set07511hACTRB.set07513hDBTCONB.set07515hCMPR4.set07517hCMPR5.set07518hCMPR6.set07519h;捕捉单元寄存器-EVB;CAPCONB.set07520hCAPFIFOB.set07522hCAP4FIFO.set07523hCAP5FIFO.set07524hCAP6FIFO.set07525hCAP4FBOT.set07527hCAP5FBOT.set07528hCAP6FBOT.set07529h;事件管理器 (EVB) 中断控制寄存器;EVBIMRA.set0752Ch;事件管理器中断屏蔽寄存器 AEVBIMRB.set0752Dh;事件管理器中断屏蔽寄存器 BEVBIMRC.set0752Eh;事件管理器中断屏蔽寄存器 CEVBIFRA.set0752Fh;事件管理器中断标志寄存器 AEVBIFRB.set07530h;事件管理器中断标志寄存器 BEVBIFRC.set07531h;事件管理器中断标志寄存器 C;程序存储器空间 -Flash 寄存器;PMPC.set0h;Flash 段控制寄存器;CTRL.set01h;WADDR.set2h;Flash 写地址寄存器;WDATA.set3h;Flash 写数据寄存器;TCR.set4h;ENAB.set5h;SETC.set6h;I/O 存储空间FCMR.set0FF0Fh;等待状态产生寄存器 (映射到 I/O 空间);WSGR.set0FFFFh;等待状态产生寄存器;数据存储器块地址;B0_SADDR.set00200h;块 B0 开始地址B0_EADDR.se

温馨提示

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

评论

0/150

提交评论