DSP课程设计DSP原理及应用实验报告.docx
《DSP课程设计DSP原理及应用实验报告.docx》由会员分享,可在线阅读,更多相关《DSP课程设计DSP原理及应用实验报告.docx(28页珍藏版)》请在冰豆网上搜索。
DSP课程设计DSP原理及应用实验报告
电子通信工程系
DSP原理及应用实验报告
学号:
姓名:
专业:
指导老师:
实验一CCS的安装与设置
1.实验目的
掌握CCS2(‘2000)集成开发环境的安装;掌握软件仿真环境的设置方法;熟悉CCS集成开发环境的应用界面。
2.实验设备
PC机、CCS2(‘2000)IDE软件、EXP-IVDSP实验箱
3.实验要求
●熟悉安装CCS2(‘2000)IDE软件的步骤
●根据DSP芯片的型号正确设置软件仿真环境
●了解CCS集成开发环境应用界面的各项内容
4.实验内容
(1)CCS2(‘2000)IDE软件的安装步骤
1.CCS的安装
1.1退出病毒防火墙及杀毒软件
1.2解压CCS20002.2.rar文件并运行setup.exe安装程序文件。
1.3选择安装界面中“CodeCmposterStudio”选项。
如下图(1-1)所示
图(1-1)
1.4完成上述步骤后只需点“Next”继续。
在出现提示确认没有运行病毒检测软件的提示窗口时点“确定”。
如下图(1-2)所示
图(1-2)
1.5选择“Yes”同意CCS的安装协议。
如下图(1-3)所示
图(1-3)
1.6选择默认安装组件,点“Next”。
如下图(1-4)所示
图(1-4)
1.7选择默认安装路径“C:
\ti”点“Next”。
如下图(1-5)所示
图(1-5)
1.8出现下图(1-6)所示时取消勾选项,并点击“Finish”。
图(1-6)
1.9完成上述步骤,再出现的对话框中点击“确定”。
如下图(1-7)所示
图(1-7)
1.10安装完成后,计算机桌面出现如下图(1-8)所示的快捷方式图标。
图(1-8)
(2)TMS320F2812微处理器的软件仿真环境的设置
2.1双击桌面“SetupCCS2”的快捷方式启动设置程序。
2.2在出现的如下图(1-9)所示的窗口中依次进行①单击“Clear”清除原有设置②选择“F2812DeviceSimulator”配置③单击“Import”输入配置④单击“SaveandQuit”
图(1-9)
2.3在接下来的对话框中单击“否”完成对CCS的设置。
图(1-10)
(3)CCS集成开发环境的应用界面
双击桌面上的CCS2(‘C2000)快捷图标。
成功启动的CCS如下图(1-11)所示。
图(1-11)
5.问题与分析
CCS软件仿真环境(Emulator)如何设置?
1.点击“SetupCCS2”更改CCS软件仿真环境的设置。
2.在弹出界面中设置:
在“Filters”中的“Family”选项中选择“F28xx”,在“Platform”选项中选择“simulator”,然后在“AvailableConfigurations”中选择“F2812DeviceSimulator”。
设计如图(1-12)所示:
图(1-12)
3.点击“SaveandQuit”退出设置。
实验二XF管脚的驱动与观察
1.实验目的
掌握SPRC097软件包的安装与使用方法;掌握在CCS集成开发环境下建立或打开工程的方法;掌握XF管脚的驱动与测试方法;掌握工程的编译、下载与调试方法;熟悉CCS集成开发环境中寄存器观察工具的使用。
2.实验设备
PC机、CCS2(‘2000)IDE软件、EXP-IVDSP实验箱
3.实验要求
●熟悉SPRC097软件包的安装步骤
●会利用SPRC097中的工程环境建立或打开工程
●实现XF管脚的驱动编程
●会利用寄存器观察工具察看XF管脚的状态
4.实验内容
(1)SPRC097软件包的安装如图(2-1)所示
图(2-1)
(2)XF管脚驱动编程的环境如图(2-2)所示
图(2-2)
(1)主要程序代码
#include"DSP281x_Device.h"//DSP281xHeaderfileIncludeFile
#include"DSP281x_Examples.h"//DSP281xExamplesIncludeFile
voiddelay(void);
voidmain(void)
{
intp,r,q;
InitSysCtrl();
InitPieCtrl();
IER=0x0000;
IFR=0x0000;
InitPieVectTable();
//控制XF管脚
EALLOW;
GpioMuxRegs.GPFMUX.all=0xffff;
EDIS;
for(r=0;r<100;r++)
{
/*xf管脚置低*/
asm("clrcxf");
for(p=0;p<10;p++)
{
for(q=0;q<10;q++)
{
delay();
}
}
/*xf管脚置高*/
asm("setcxf");
for(p=0;p<10;p++)
{
for(q=0;q<10;q++)
{
delay();
}
}
}
for(;;)
{
;
}
}
voiddelay(void)
{
unsignedintk,i,j;
for(k=0;k<5;k++);
for(i=0;i<5;i++);
for(j=0;j<5;j++);
}
图(2-3)
5.问题与分析
XF管教的设置可以设置为功能引GpioMuxRegs.GPFMUX.all=0xffff,当配置为功能引脚是可以用setcXF与clrcxf对XF引脚置低货置高,也可以设置为通用输入输出管脚GpioMuxRegs.GPFMUX.all=0x0000,可以通过GpioDataRegs.GPFDAT.all=0x0000与GpioDataRegs.GPFDAT.all=0xffff设置XF引脚输出为低或为高。
仿真时可以通过View下的Registers下的status查看XF管脚寄存器位的变化,如图(2-4)所示:
图(2-4)
实验三GPIO模块的驱动程序设计
1.实验目的
掌握CCS硬件仿真环境的设置方法;掌握GPIO模块的驱动与测试方法;熟悉工程的编译、下载与调试方法。
2.实验设备
PC机、CCS2(‘2000)IDE软件、XDS510仿真器、EXP-IVDSP实验箱
3.实验要求
●熟悉GPIO模块的功能原理
●会利用SPRC097中的工程环境建立或打开工程
●实现GPIO模块的驱动编程
4.实验内容
(1)安装硬件驱动到C:
\ti。
双击
选择安装路径为C:
\ti,点击lnstall如图(3-1)所示
图(3-1)
(2)使用硬件安装向导安装设备驱动如图(3-2)a、b、c所示
图(3-2)a
图(3-2)b
图(3-3)c
(3)CCS硬件仿真环境的设置选择
(4)建立GPIO模块的工程如图(3-3)所示
图(3-3)
(5)主要程序代码
#include"DSP281x_Device.h"//DSP281xHeaderfileIncludeFile
#include"DSP281x_Examples.h"//DSP281xExamplesIncludeFile
#defineEXAMPLE11//UseDATAregisterstotoggleI/O's
#defineEXAMPLE20//UseSET/CLEARregisterstotoggleI/O's
#defineEXAMPLE30//UseTOGGLEregisterstotoggleI/O's
//Prototypestatementsforfunctionsfoundwithinthisfile.
voiddelay_loop(void);
voidGpio_select(void);
voidGpio_example1(void);
voidGpio_example2(void);
voidGpio_example3(void);
voidmain(void)
{
//Step1.InitializeSystemControl:
//PLL,WatchDog,enablePeripheralClocks
//ThisexamplefunctionisfoundintheDSP281x_SysCtrl.cfile.
InitSysCtrl();
//Step2.InitalizeGPIO:
//ThisexamplefunctionisfoundintheDSP281x_Gpio.cfileand
//illustrateshowtosettheGPIOtoit'sdefaultstate.
//InitGpio();//Skippedforthisexample
//Forthisexampleusethefollowingconfiguration:
Gpio_select();
//Step3.ClearallinterruptsandinitializePIEvectortable:
//DisableCPUinterrupts
DINT;
//InitializePIEcontrolregisterstotheirdefaultstate.
//ThedefaultstateisallPIEinterruptsdisabledandflags
//arecleared.
//ThisfunctionisfoundintheDSP281x_PieCtrl.cfile.
InitPieCtrl();
//DisableCPUinterruptsandclearallCPUinterruptflags:
IER=0x0000;
IFR=0x0000;
//InitializethePIEvectortablewithpointerstotheshell
Interrupt
//ServiceRoutines(ISR).
//Thiswillpopulatetheentiretable,eveniftheinterrupt
//isnotusedinthisexample.Thisisusefulfordebugpurposes.
//TheshellISRroutinesarefoundinDSP281x_DefaultIsr.c.
//ThisfunctionisfoundinDSP281x_PieVect.c.
InitPieVectTable();
//Step4.InitializealltheDevicePeripherals:
//ThisfunctionisfoundinDSP281x_InitPeripherals.c
//InitPeripherals();//Notrequiredforthisexample
//Step5.Userspecificcode:
#ifEXAMPLE1
//ThisexampleusesDATAregisterstotoggleI/O's
Gpio_example1();
#endif//-EXAMPLE1
#ifEXAMPLE2
//ThisexampleusesSET/CLEARregisterstotoggleI/O's
Gpio_example1();
#endif
#ifEXAMPLE3
//ThisexampleusesTOGGLEregisterstotoggleI/O's
Gpio_example3();
#endif
}
voiddelay_loop()
{
shorti;
for(i=0;i<1000;i++){}
}
voidGpio_example1(void)
{
//Example1:
//ToggleI/OsusingDATAregisters
//Note:
WhenusingtheDATAreigsters,inputvalues
//maybelost.Ifthereareinputsontheportthen
//usetheCLEAR/SET/TOGGLEregistersinstead.
while
(1)
{
GpioDataRegs.GPADAT.all=0xAAAA;
GpioDataRegs.GPBDAT.all=0xAAAA;
GpioDataRegs.GPDDAT.all=0x0022;
GpioDataRegs.GPEDAT.all=0x0002;
GpioDataRegs.GPFDAT.all=0xAAAA;
GpioDataRegs.GPGDAT.all=0x0020;
delay_loop();
GpioDataRegs.GPADAT.all=0x5555;
GpioDataRegs.GPBDAT.all=0x5555;
GpioDataRegs.GPDDAT.all=0x0041;//FourI/Osonly
GpioDataRegs.GPEDAT.all=0x0005;//ThreeI/Osonly
GpioDataRegs.GPFDAT.all=0x5555;
GpioDataRegs.GPGDAT.all=0x0010;//TwoI/Osonly
delay_loop();
}
}
voidGpio_example2(void)
{
//Example2:
//ToggleI/OsusingSET/CLEARregisters
while
(1)
{
GpioDataRegs.GPASET.all=0xAAAA;
GpioDataRegs.GPACLEAR.all=0x5555;
GpioDataRegs.GPBSET.all=0xAAAA;
GpioDataRegs.GPBCLEAR.all=0x5555;
GpioDataRegs.GPDSET.all=0x0022;
GpioDataRegs.GPDCLEAR.all=0x0041;//FourI/Osonly
GpioDataRegs.GPESET.all=0x0002;
GpioDataRegs.GPECLEAR.all=0x0005;//ThreeI/Osonly
GpioDataRegs.GPFSET.all=0xAAAA;
GpioDataRegs.GPFCLEAR.all=0x5555;
GpioDataRegs.GPGSET.all=0x0020;
GpioDataRegs.GPGCLEAR.all=0x0010;//TwoI/Osonly
delay_loop();
GpioDataRegs.GPACLEAR.all=0xAAAA;
GpioDataRegs.GPASET.all=0x5555;
GpioDataRegs.GPBCLEAR.all=0xAAAA;
GpioDataRegs.GPBSET.all=0x5555;
GpioDataRegs.GPDCLEAR.all=0x0022;
GpioDataRegs.GPDSET.all=0x0041;//FourI/Osonly
GpioDataRegs.GPECLEAR.all=0x0002;
GpioDataRegs.GPESET.all=0x0005;//ThreeI/Osonly
GpioDataRegs.GPFCLEAR.all=0xAAAA;
GpioDataRegs.GPFSET.all=0x5555;
GpioDataRegs.GPGCLEAR.all=0x0020;
GpioDataRegs.GPGSET.all=0x0010;//TwoI/Osonly
delay_loop();
}
}
voidGpio_example3(void)
{
//Example2:
//ToggleI/OsusingTOGGLEregisters
//Setpinstoaknownstate
GpioDataRegs.GPASET.all=0xAAAA;
GpioDataRegs.GPACLEAR.all=0x5555;
GpioDataRegs.GPBSET.all=0xAAAA;
GpioDataRegs.GPBCLEAR.all=0x5555;
GpioDataRegs.GPDSET.all=0x0022;
GpioDataRegs.GPDCLEAR.all=0x0041;//FourI/Osonly
GpioDataRegs.GPESET.all=0x0002;
GpioDataRegs.GPECLEAR.all=0x0005;//ThreeI/Osonly
GpioDataRegs.GPFSET.all=0xAAAA;
GpioDataRegs.GPFCLEAR.all=0x5555;
GpioDataRegs.GPGSET.all=0x0020;
GpioDataRegs.GPGCLEAR.all=0x0010;//TwoI/Osonly
//UseTOGGLEregisterstoflipthestateof
//thepins.
//Anybitsettoa1willflipstate(toggle)
//Anybitsettoa0willnottoggle.
while
(1)
{
GpioDataRegs.GPATOGGLE.all=0xFFFF;
GpioDataRegs.GPBTOGGLE.all=0xFFFF;
GpioDataRegs.GPDTOGGLE.all=0xFFFF;
GpioDataRegs.GPETOGGLE.all=0xFFFF;
GpioDataRegs.GPFTOGGLE.all=0xFFFF;
GpioDataRegs.GPGTOGGLE.all=0xFFFF;
delay_loop();
}
}
voidGpio_select(void)
{
Uint16var1;
Uint16var2;
Uint16var3;
var1=0x0000;//setsGPIOMuxsasI/Os
var2=0xFFFF;//setsGPIODIRasoutputs
var3=0x0000;//setstheInputqualifiervalues
EALLOW;
GpioMuxRegs.GPAMUX.all=var1;
GpioMuxRegs.GPBMUX.all=var1;
GpioMuxRegs.GPDMUX.all=var1;
GpioMuxRegs.GPFMUX.all=var1;
GpioMuxRegs.GPEMUX.all=var1;
GpioMuxRegs.GPGMUX.all=var1;
GpioMuxRegs.GPADIR.all=var2;//GPIOPORTsas
output
GpioMuxRegs.GPBDIR.all=var2;//GPIODIRselect
GPIOsasoutput
GpioMuxRegs.GPDDIR.all=var2;
GpioMuxRegs.GPEDIR.all=var2;
GpioMuxRegs.GPFDIR.all=var2;
GpioMuxRegs.GPGDIR.all=var2;
GpioMuxRegs.GPAQUAL.all=var3;//SetGPIOinput
qualifiervalues
GpioMuxRegs.GPBQUAL.all=var3;
GpioMuxRegs.GPDQUAL.all=var3;
GpioMuxRegs.GPEQUAL.all=var3;
EDIS;
}
5.问题与分析
功能引脚与高低电平的设置:
GPIO管教的设置可以设置为功能引脚GpioMuxRegs.GPxMUX.all=0xffff,当配置为功能引脚,也可以设置为通用输入输出管脚GpioMuxRegs.GPxMUX.all=0x0000,GpioMuxRegs.GPxDIR.all=0x0000设置对应管脚为输入引脚,GpioMuxRegs.GPxDIR.all=0xffff设置对应引脚为输出引脚。
档位输出引脚时,可以通过GpioDataRegs.GPxDAT.all=0x0000与GpioDataRegs.GPxDAT.all=0xffff设置对应引脚输出为低电平或为高电平,也可以用pioDataRegs.GPxCLEAR.all=0xffff与GpioDataRegs.GPxSET.all=0xffff设置对应管脚为低电平或为高电平。
实验四外部中断的应用
1.实验目的
掌握中断服务程序的编写方法;掌握外部中断的驱动与测试方法;熟悉工程的编译、下载与调试方法。
2.实验设备
PC机、CCS2(‘2000)IDE软件、XDS510、EXP-IVDSP实验箱
3.实验要求
●熟悉外部中断XINT1、XINT2的功能原理
●将工程环境设置为硬件仿真调试环境
●会利用SPRC097中的工程环境建立或打开工程
●实现外部中断的应用编程
4.实验内容
(1)配置硬件仿真环境