您好,欢迎访问三七文档
DSP实习报告学院:电气信息工程学院专业:自动化姓名:李远芳班级学号:自动化10-4班9号指导教师:吴老师时间:2013-12-16~2013-12-201目录一:开发板实验部分…………………………………………………….21:实习目的…………………………………………………………….22:实习要求……………………………………………………………23:实验内容……………………………………………………………21)CPU定时器0实验……………………………………………….22)CPU定时器2实验…………………………………………….....43)EVTimer1实验……………………………………………………64)数码管显示实验…………………………………………………..85)外部RAM实验………………………………………………….106)直流电动机开环系统实验………………………………………13二:基于DSP的直流电动机闭环调速系统的设计…………………151:系统硬件设计整体框图……………………………………….....153:驱动电路设计………………………………………………….....164:控制电路设计…………………………………………………….165:采样电路设计…………………………………………………….176:显示电路设计…………………………………………………….187:保护电路设计…………………………………………………….18三:实习心得………………………………………………………….19四:参考文献………………………………………………………….192一:开发板实验部分1:实习目的1.1、熟悉DSP编译环境,会使用开发板1.2、掌握DSP程序的编写以及调试过程2:实习要求2.1、掌握CCS2.0以及USB口仿真器的设置2.2、能够编写指定功能的程序3:实验内容3.1、CPU定时器0实验3.1.1实验要求采用定时器0将八个LED灯循环点亮。3.1.2编程思路编程首先得考虑硬件电路,否则,无从下手,从开发板手册中可以知道LED灯电路。图1:8个LED灯电路从电路中可以看出,要想将LED灯,必须是低电平才可以,根据开发板的CPLD外围扩展电路和芯片引脚图,就可以确定LED灯的地址为0x4100。3图2:8个LED灯与主控芯片链接图等待这些都搞清楚之后,分析程序功能。八个LED灯循环点亮,可以将对应的代码放在一个数组内,依次循环八次即可,为了保证人能看到闪烁的效果,可采用定时器来实现。3.1.3具体程序/**********************************************************************实验目的:学习DSP内部定时器0的使用**实验说明:本实验是通过使用DSP内部的定时器0来实现对LED灯的控制**实验结果:可看到板上8个发光二极管依次点亮********************************************************************/#includeDSP28_Device.hunsignedint*Led8=(unsignedint*)0x4100;//8个LED灯的地址,由CPLD得知unsignedintLedCount;//用于循环计数的Uint16LedCode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//LED灯循环代码interruptvoidISRTimer0(void);voidmain(void){/*初始化系统*/InitSysCtrl();/*关中断*/DINT;IER=0x0000;IFR=0x0000;//清中断LedCount=0;/*初始化PIE*/InitPieCtrl();4/*初始化PIE中断矢量表*/InitPieVectTable();/*初始化定时器0*/InitCpuTimers();/*初始化外设*/InitPeripherals();/*受EALLOW保护的定时器0中断矢量*/EALLOW;//允许访问EALLOW保护的寄存器PieVectTable.TINT0=&ISRTimer0;//指向中断服务寄存器定时器0的地址EDIS;//重新EALLOW保护/*设置CPU,配置定时器0多长时间中断一次,这里的配置可参见课本P61*/ConfigCpuTimer(&CpuTimer0,10,1000000);CpuTimer0Regs.TCR.bit.TSS=0;///开启CPU定时器0//StartCpuTimer0();/*开中断,查看中断向量表可知CPU定时器0位于INT1.7,见课本P82*/IER|=M_INT1;PieCtrl.PIEIER1.bit.INTx7=1;EINT;//开放全局中断,EnableGlobalinterruptINTMERTM;//开放全局实时中断,EnableGlobalrealtimeinterruptDBGMfor(;;);}interruptvoidISRTimer0(void){//响应中断寄存器清除,写1清0,进而才能接收下一外围中断PieCtrl.PIEACK.bit.ACK7=1;//向CPLD控制的LED灯地址写数据,进而实现对灯的控制*Led8=LedCode[LedCount];LedCount++;if(LedCount=8)LedCount=0;}3.2、CPU定时器2实验3.2.1实验要求采用定时器2将LED灯循环奇数个循环点亮,偶数个全灭。3.2.2编程思路由上个实现可知,LED灯地址和有效电平,这里不再详细说明。采用定时器2将LED灯循环奇数个循环点亮,偶数个全灭。只需要将LED的灯的代码修改即可,由于是奇数个,所以循环次也要修改。由于使用的是CPU定时器2,所以,定时器也要修改。53.2.3具体程序/**********************************************************************实验目的:学习DSP内部定时器0的使用**实验说明:本实验是通过使用DSP内部的定时器0来实现对LED灯的控制**实验结果:可看到板上8个发光二极管奇数号LED与偶数号LED交替闪烁********************************************************************/#includeDSP28_Device.hunsignedint*Led8=(unsignedint*)0x4100;//8个LED灯的地址,由CPLD得知unsignedintLedCount;//用于循环计数的Uint16LedCode[]={0xfe,0xfb,0xef,0xbf};//LED灯循环代码interruptvoidISRTimer0(void);voidmain(void){/*初始化系统*/InitSysCtrl();/*关中断*/DINT;IER=0x0000;IFR=0x0000;//清中断LedCount=0;/*初始化PIE*/InitPieCtrl();/*初始化PIE中断矢量表*/InitPieVectTable();/*初始化定时器0*/InitCpuTimers();/*初始化外设*/InitPeripherals();/*受EALLOW保护的定时器2中断矢量*/EALLOW;//允许访问EALLOW保护的寄存器PieVectTable.TINT0=&ISRTimer2;//指向中断服务寄存器定时器0的地址EDIS;//重新EALLOW保护/*设置CPU,配置定时器2多长时间中断一次,这里的配置可参见课本P61*/ConfigCpuTimer(&CpuTimer2,10,1000000);CpuTimer0Regs.TCR.bit.TSS=0;///开启CPU定时器0//StartCpuTimer0();/*开中断,查看中断向量表可知CPU定时器0位于INT1.7,见课本P82*/IER|=M_INT1;PieCtrl.PIEIER1.bit.INTx7=1;EINT;//开放全局中断,EnableGlobalinterruptINTMERTM;//开放全局实时中断,EnableGlobalrealtimeinterruptDBGMfor(;;);}6interruptvoidISRTimer2(void){//响应中断寄存器清除,写1清0,进而才能接收下一外围中断PieCtrl.PIEACK.bit.ACK7=1;//向CPLD控制的LED灯地址写数据,进而实现对灯的控制*Led8=LedCode[LedCount];LedCount++;if(LedCount=4)LedCount=0;}3.3、EVTimer1定时器实验3.3.1实验要求采用EVTimer1定时器最左侧两个灯一直亮,最右侧的两个灯一直灭,中间4个依次循环点亮。3.3.2编程思路由上个实现可知,LED灯地址和有效电平,这里不再详细说明。采用EVTimer1定时器最左侧两个灯一直亮,最右侧的两个灯一直灭,中间4个依次循环点亮。只需要将LED的灯的代码修改即可,由于是中间4个,所以循环次也要修改。由于使用的是EVTimer1定时器,所以定时器也要修改。3.3.3具体程序/***********************************************************************实验目的:了解事件管理器的定时器的应用,**实验说明:这里我们只使用了EvaTimer1来控制LED灯的亮灭,通过它来了**解EV的定时器工作原理,对以后做电机之类的控制时可以引用部分函数**实验结果:最左侧两个灯一直亮,最右侧的两个灯一直灭,中间4个依次循**环点亮。*******************************************************************/#includeDSP28_Device.h#includeDSP28_Globalprototypes.hunsignedint*Led8=(unsignedint*)0x4100;//LED控制寄存器constUint16LedCode[]={0x1F,0x2F,0x37,0x3b};//中间4个//Prototypestatementsforfunctionsfoundwithinthisfile.interruptvoideva_timer1_isr(void);//GlobalcountsusedinthisexampleUint32EvaTimer1InterruptCount;Uint16LedCount=0;voidmain(void){/*初始化系统*/InitSysCtrl();7/*关中断*/DINT;IER=0x0000;IFR=0x0000;/*初始化PIE*/InitPieCtrl();/*初始化PIE中断矢量表*/InitPieVectTable();/*初始化外设*/InitPeripherals();/*初始化GPIO*/InitGpio();InitXIntrupt();EALLOW;//ThisisneededtowritetoEALLOWprotectedregistersPieVectTable.T1PINT=&eva_timer1_isr;EDIS;//ThisisneededtodisablewritetoEALLOWprotectedregisters//EnablePIEgroup2interrupt4forT1PINTPieCtrl.PIEIER2.all=M_INT4;//EnablePIEgroup3interrupt1forT2PINTPieCtrl.PIEIER3.all=M_INT1;//EnablePIEgroup4interrupt4forT3PINT
本文标题:DSP实习报告
链接地址:https://www.777doc.com/doc-3538530 .html