DSP实验报告 打印.docx
- 文档编号:3358398
- 上传时间:2022-11-22
- 格式:DOCX
- 页数:21
- 大小:1.32MB
DSP实验报告 打印.docx
《DSP实验报告 打印.docx》由会员分享,可在线阅读,更多相关《DSP实验报告 打印.docx(21页珍藏版)》请在冰豆网上搜索。
DSP实验报告打印
郑州航空工业管理学院
电子通信工程系
DSP原理及应用实验报告
学号:
101308205
姓名:
韩红印
专业:
电子信息工程
指导老师:
赵成老师
实验一CCS的安装与设置
1.实验目的
掌握CCS2(‘2000)集成开发环境的安装;掌握软件仿真环境的设置方法;熟悉CCS集成开发环境的应用界面。
2.实验设备
PC机、CCS2(‘2000)IDE软件、EXP-IVDSP实验箱
3.实验要求
熟悉安装CCS2(‘2000)IDE软件的步骤
根据DSP芯片的型号正确设置软件仿真环境
了解CCS集成开发环境应用界面的各项内容
4.实验内容
(1)CCS2(‘2000)IDE软件的安装步骤,按照如下图1-1到图1-12依次进行设置即可装置载好该软件,生成快捷方式如图1-13。
图1-1
点击CodeComposerStudio,出现如图1-2
图1-2
图1-3
图1-4
图1-5
图1-6
图1-7
图1-8
图1-9
图1-10
图1-11
图1-12
图1-13
(2)TMS320F2812微处理器的软件仿真环境的设置,如图1-14和图1-15。
图1-14
图1-15
(3)CCS集成开发环境的应用界面,如图1-16。
图1-16
实验二GPIO模块的驱动程序设计
1.实验目的
掌握CCS硬件仿真环境的设置方法;掌握GPIO模块的驱动与测试方法;熟悉工程的编译、下载与调试方法。
2.实验设备
PC机、CCS2(‘2000)IDE软件、XDS510仿真器、EXP-IVDSP实验箱
3.实验要求
熟悉GPIO模块的功能原理
会利用SPRC097中的工程环境建立或打开工程
实现GPIO模块的驱动编程
4.实验内容
(1)CCS硬件仿真环境的设置
图2-1
图2-2
(2)建立GPIO模块的工程
图2-3
(3)主要程序代码
#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,实现管脚为输入引脚的功能。
为输出引脚时,可以通过GpioDataRegs.GPxDAT.all=0x0000与GpioDataRegs.GPxDAT.all=0xffff设置对应引脚输出为低电平或为高电平。
实验三定时器的驱动与观察
1.实验目的
掌握SPRC097软件包的安装与使用方法;掌握在CCS集成开发环境下建立或打开工程的方法;掌握定时器的驱动与测试方法(定时将XF管脚置高与置低);掌握工程的编译、下载与调试方法;熟悉CCS集成开发环境中寄存器观察工具的使用。
2.实验设备
PC机、CCS2(‘2000)IDE软件、EXP-IVDSP实验箱
3.实验要求
熟悉SPRC097软件包的安装步骤
会利用SPRC097中的工程环境建立或打开工程
实现定时器定时驱动XF管脚的编程
会利用寄存器观察工具察看XF管脚的状态
4.实验内容
(1)SPRC097软件包的安装
图3-1
(2)定时器定时驱动XF管脚的编程环境
图3-2
(3)主要程序代码
#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++);
}
图3-3
5.问题与分析
通过设置GpioMuxRegs.GPFMUX.all=0xffff,实现XF管脚的功能引脚功能。
设置GpioMuxRegs.GPFMUX.all=0x0000,实现XF引脚的输入功能。
当XF引脚为功能模式时,可以通过设置setcXF与clrcxf对XF引脚置低或置高。
通过View下的Registers下的status查看XF管脚寄存器位的变化,如图(2-4)所示:
图3-4
实验四外部中断的应用
1.实验目的
掌握中断服务程序的编写方法;掌握外部中断的驱动与测试方法;熟悉工程的编译、下载与调试方法。
2.实验设备
PC机、CCS2(‘2000)IDE软件、XDS510、EXP-IVDSP实验箱
3.实验要求
熟悉外部中断XINT1的功能原理
将工程环境设置为硬件仿真调试环境
会利用SPRC097中的工程环境建立或打开工程
实现外部中断的应用编程
4.实验内容
(1)建立外部中断的工程
图4-1
(2)主要程序代码
//FILE:
Led_Int.c
//TITLE:
DSP281x外部中断测试程序
#include"DSP281x_Device.h"//DSP281xHeaderfileIncludeFile
#include"DSP281x_Examples.h"//DSP281xExamplesIncludeFile
voidinit_xint1(void);
interruptvoidxint1_isr(void);
voidgpiof_init(void);
Uint32Xint1InterruptCount;
//主程序
voidmain(void)
{
InitSysCtrl();
//InitGpio();
DINT;
InitPieCtrl();
IER=0x0000;
IFR=0x0000;
InitPieVectTable();
EALLOW;
PieVectTable.XINT1=&xint1_isr;
EDIS;
PieCtrlRegs.PIECRTL.bit.ENPIE=1;
PieCtrlRegs.PIEIER1.bit.INTx6=1;
IER|=M_INT1;
EINT;
Xint1InterruptCount=0;
asm("nop");
gpiof_init();
asm("nop");
init_xint1();
asm("nop");
for(;;)
{
if(Xint1InterruptCount<1)
{
asm("nop");
asm("clrcxf");
asm("nop");
}
elseif(Xint1InterruptCount<2)
{
asm("nop");
asm("setcxf");
asm("nop");
}
else
{
Xint1InterruptCount=0;
}
}
}
voidinit_xint1()
{
XIntruptRegs.XINT1CR.all=0x0001;
}
interruptvoidxint1_isr()
{
Xint1InterruptCount++;
PieCtrlRegs.PIEACK.all=PIEACK_GROUP1;
}
voidgpiof_init(void)
{
EALLOW;
GpioMuxRe
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP实验报告 打印 DSP 实验 报告