实验报告.docx
《实验报告.docx》由会员分享,可在线阅读,更多相关《实验报告.docx(29页珍藏版)》请在冰豆网上搜索。
实验报告
实验一CCS调试环境熟悉以及简单程序的软件调试
内容一:
一.实验目的
1.了解F28335简单的浮点运算。
2.熟悉浮点运算的编程。
二.实验原理
TMS320F28335是一款32位浮点通用数字信号处理芯片,它具有存储空间大、运算精度高等特点。
三.实验要求
1.设置CodeComposerStudio3.3在硬件仿真方式下运行
2.启动CodeComposerStudio3.3
3.打开工程文件
工程文件为:
E:
\realtimedsp\F28335\ICETEK_F28335_Ae\DSP2833x_examples\Lab202-float\Example_2833xfpu
_software.pjt
打开源程序Example_2833xFPU.c阅读程序,理解程序内容。
4.编译、下载程序。
5.把y1和y2添加到观察窗。
6.运行程序,观察y1和y2结果。
7.修改x1和x2值,重新执行程序,观察y1和y2结果。
8.退出CCS
四.实验结果分析
程序设计实现了简单的浮点乘法和加法运算,y1和y2是实验结果。
记录实验结果。
五.问题与思考
如何做复杂的浮点运算。
程序:
//TIFile$Revision:
/main/1$
//Checkin$Date:
August29,200714:
07:
22$
//###########################################################################//
//FILE:
Example_2833xFPU.c//
//TITLE:
DSP2833xDeviceGettingStartedProgram.//
//ASSUMPTIONS:
//
//ThisprogramrequirestheDSP2833xheaderfiles.//
//Otherthenbootmodeconfiguration,nootherhardwareconfiguration
//isrequired.
//Assupplied,thisprojectisconfiguredfor"boottoSARAM"
//operation.The2833xBootModetableisshownbelow.
//ForinformationonconfiguringthebootmodeofaneZdsp,
//pleaserefertothedocumentationincludedwiththeeZdsp,
//
//$Boot_Table:
//
//GPIO87GPIO86GPIO85GPIO84
//XA15XA14XA13XA12
//PUPUPUPU
//==========================================
//1111JumptoFlash
//1110SCI-Aboot
//1101SPI-Aboot
//1100I2C-Aboot
//1011eCAN-Aboot
//1010McBSP-Aboot
//1001JumptoXINTFx16
//1000JumptoXINTFx32
//0111JumptoOTP
//0110ParallelGPIOI/Oboot
//0101ParallelXINTFboot
//0100JumptoSARAM<-"boottoSARAM"
//0011Branchtocheckbootmode
//0010Boottoflash,bypassADCcal
//0001BoottoSARAM,bypassADCcal
//0000BoottoSCI-A,bypassADCcal
//Boot_Table_End$
//
//DESCRIPTION:
//
//Thecodecalculatestwoy=mx+bequations.Thevariablesareall
//32-bitfloating-point.//
//Twoprojectsaresupplied:
//
//Example_fpu_hardware.pjt(floating-point):
//
//IftheExample_2833xFPU_hardware.pjtfileisusedthenthecompiler
//willgeneratefloatingpointinstructionstodothesecalculations.
//Tocompiletheprojectforfloatingpoint,thefollowingBuildOptionswereused:
//1.Project->BuildOptions->CompilerTab->Advancedcategory:
//a.intextbox:
compileroptions-v28--float_support=fpu32areset
//b.ORthefollowingisequivalentto"a.":
pull-downmenunextto
//"FloatingPointSupport"->"fpu32"selected.
//2.Project->BuildOptions->LinkerTab->Librariescategory:
//a.runtimesupportlibraryusedisrts2800_fpu32.lib.
//3.Notincludedinthisexample:
Iftheprojectincludesanyotherlibraries,
//theymustalsobecompiledwithfloatingpointinstructions.
//
//Example_fpu_software.pjt(fixed-pointemulatesfloating-pointwithsoftware):
//
//IftheExample_2833xFPU_software.pjtfileisused,thenthecompiler
//willonlyusedfixedpointinstructions.Thismeanstheruntime
//supportlibrarywillbeusedtoemulatefloatingpoint.
//ThiswillalsorunonC28xdeviceswithoutthefloatingpointunit.
//Tocompiletheprojectforfixedpoint,thefollowingBuildOptionswereused:
//1.Project->BuildOptions->CompilerTab->Advancedcategory:
//a.intextbox:
compileroption--float_support=fpu32isREMOVED
//-v28shouldnotberemoved
//b.ORthefollowingisequivalentto"a.":
pull-downmenunextto
//"FloatingPointSupport"->"None"selected.
//2.Project->BuildOptions->LinkerTab->Librariescategory:
//a.runtimesupportlibraryusedisrts2800.liborrts2800_ml.lib.
//3.Notincludedinthisexample:
Iftheprojectincludesanyotherlibraries,
//theymustalsobecompiledwithfixedpointinstructions.
//
//WatchVariables:
//y1
//y2
//FPUregisters(optional)
//
//###########################################################################
//$TIRelease:
DSP2833xHeaderFilesV1.01$
//$ReleaseDate:
September26,2007$
//###########################################################################
#include"DSP2833x_Device.h"//DSP2833xHeaderfileIncludeFile
#include"DSP2833x_Examples.h"//DSP2833xExamplesIncludeFile
floaty1,y2;
floatm1,m2;
floatx1,x2;
floatb1,b2;
voidmain(void){
//Step1.InitializeSystemControl:
//PLL,WatchDog,enablePeripheralClocks
//ThisexamplefunctionisfoundintheDSP2833x_SysCtrl.cfile.
InitSysCtrl();
//Step2.InitalizeGPIO:
//ThisexamplefunctionisfoundintheDSP2833x_Gpio.cfileand
//illustrateshowtosettheGPIOtoit'sdefaultstate.
//InitGpio();//Skippedforthisexample
//Step3.ClearallinterruptsandinitializePIEvectortable:
//DisableCPUinterrupts
DINT;
//InitializethePIEcontrolregisterstotheirdefaultstate.
//ThedefaultstateisallPIEinterruptsdisabledandflags
//arecleared.
//ThisfunctionisfoundintheDSP2833x_PieCtrl.cfile.
InitPieCtrl();
//DisableCPUinterruptsandclearallCPUinterruptflags:
IER=0x0000;
IFR=0x0000;
//InitializethePIEvectortablewithpointerstotheshellInterrupt
//ServiceRoutines(ISR).
//Thiswillpopulatetheentiretable,eveniftheinterrupt
//isnotusedinthisexample.Thisisusefulfordebugpurposes.
//TheshellISRroutinesarefoundinDSP2833x_DefaultIsr.c.
//ThisfunctionisfoundinDSP2833x_PieVect.c.
InitPieVectTable();
//Interruptsthatareusedinthisexamplearere-mappedto
//ISRfunctionsfoundwithinthisfile.
//Step5.Userspecificcode,enableinterrupts:
//
//Calculatetwoy=mx+bequations.
y1=0;
y2=0;
m1=10;
m2=.6;
x1=7;
x2=7.3;
b1=4.2;
b2=8.9;
y1=m1/x1+b1;
y2=m2*x2+b2;
ESTOP0;//Thisisasoftwarebreakpoint
}
//===========================================================================
//Nomore.
//===========================================================================
实验二数字量输入与数字量输出
内容一:
指示灯实验
一.实验目的
1.了解ICETEK–F28335-A评估板在TMS320F28335DSP外部扩展存储空间上的扩展。
2.了解ICETEK–F28335-A评估板上指示灯扩展原理。
二.实验设备
计算机,ICETEK-F28335-A实验箱。
三.实验原理
1.TMS320F28335DSP的存储器扩展接口
存储器扩展接口是DSP扩展片外资源的主要接口,它提供了一组控制信号和地址、数据线,可以扩展各类存储器和存储器、寄存器映射的外设。
-ICETEK–F28335-A评估板在扩展接口上除了扩展了片外SRAM外,还扩展了指示灯和DIP开关等设备。
具体扩展地址如下:
0x180001:
板上DIP开关控制寄存器
0x180000:
板上指示灯控制寄存器
2.指示灯扩展原理
图3.1指示灯扩展原理
四.实验要求
1.编写程序实现将0-F和F-0十六进制代码送到指示灯显示。
2.编写程序实现小灯从左到右循环显示。
3.编写程序实现小灯从右到左循环显示。
2.程序:
#include"DSP2833x_Device.h"//DSP2833xHeaderfileIncludeFile
#include"DSP2833x_Examples.h"//DSP2833xExamplesIncludeFile
#defineLED(*(unsignedshortint*)0x180000)
#defineSRAM_Base_Adress0x100000
voidDelay(unsignedintnTime);//延时子程序
voidmain(void)
{longi;
InitSysCtrl();
InitXintf16Gpio();
DINT;
InitPieCtrl();
IER=0x0000;
IFR=0x0000;
for(;;)
{for(i=0;i<=0xf;i++)
{LED=i;
Delay(612);}
for(i=0xf;i>=0;i--)
{LED=i;
Delay(612);}}}
voidDelay(unsignedintnDelay)
{inti,j,k=0;
for(i=0;i{for(j=0;j<1024;j++)
{k++;}}}
3.程序:
#include"DSP2833x_Device.h"//DSP2833xHeaderfileIncludeFile
#include"DSP2833x_Examples.h"//DSP2833xExamplesIncludeFile
#defineLED(*(unsignedshortint*)0x180000)
#defineSRAM_Base_Adress0x100000
voidDelay(unsignedintnTime);//延时子程序
voidmain(void)
{longi;
InitSysCtrl();
InitXintf16Gpio();
DINT;
InitPieCtrl();
IER=0x0000;
IFR=0x0000;
for(;;)
{for(i=0;i<=0xf;i++)
{LED=i;
Delay(612);}
for(i=0xf;i>=0;i--)
{LED=i;
Delay(612);}}}
voidDelay(unsignedintnDelay)
{inti,j,k=0;
for(i=0;i{for(j=0;j<1024;j++)
{k++;}}}
内容二:
拨码开关控制实验
一.实验目的
1.了解ICETEK–F28335-A评估板在TMS320F28335DSP外部扩展存储空间上的扩展。
2.了解ICETEK–F28335-A评估板上拨码开关扩展原理。
二.实验设备
计算机,ICETEK-F28335-A实验箱。
三.实验原理
1.ICETEK–F28335-A评估板在扩展接口上除了扩展了片外SRAM外,还扩展了指示灯和DIP开关等设备。
具体扩展地址如下:
0x180001:
板上DIP开关控制寄存器
0x180000:
板上指示灯控制寄存器
2.拨码开关扩展原理
图3.2拨码开关扩展原理
四.实验要求
设计程序实现通过拨码开关的动作,将其状态显示在指示灯上。
程序:
#include"DSP2833x_Device.h"//DSP2833xHeaderfileIncludeFile
#include"DSP2833x_Examples.h"//DSP2833xExamplesIncludeFile
#defineLED(*(unsignedshortint*)0x180000)
#defineDIP(*(unsignedshortint*)0x180001)
//#defineSRAM_Base_Adress0x200000
//voidDelay(unsignedintnTime);//延时子程序
voidmain(void)
{InitSysCtrl();
InitXintf16Gpio();
DINT;
InitPieCtrl();
IER=0x0000;
IFR=0x0000;
while
(1)
{LED=DIP;}}
实验三CPU定时器实验
一.实验目的
1.通过实验熟悉F28335A的定时器;
2.掌握F28335A定时器的控制方法;
3.掌握F28335A的中断结构和对中断的处理流程;
4.学会C语言中断程序设计,以及运用中断方法的程序流程。
二.实验设备
计算机,ICETEK-F28335-A实验箱
三.实验原理
1.通用定时器介绍及其控制方法
TMS320F28335A内部有三个32位通用定时器(TIMER0/1/2),定时器1和2被保留给实时操作系统(DSPBIOS)用,只有定时器0可以提供给用户使用。
2.中断响应过程
a.接收中断请求。
必须由软件中断(从程序代码)或硬件中断(从一个引脚或一个基于芯片的设备)提出请求去暂停当前主程序的执行。
b.响应中断。
必须能够响应中断请求。
如果中断是可屏蔽的,则必须满足一定的条件,按照一定的顺序去执行。
而对于非可屏蔽中断和软件中断,会立即做出响应。
c.准备执行中断服务程序并保存寄存器的值。
d.执行中断服务子程序。
调用相应的中断服务程序ISR,进入预先规定的向量地址,并且执行已写好的ISR。
3.中断类别可屏蔽中断:
可以用软件加以屏蔽或解除屏蔽。
不可屏蔽中断:
这些中断不能够被屏蔽,将立即响应该类中断并转入相应的子程序去执行。
4.中断的优先级如果多个中断被同时激发,将按照他们的中断优先级来提供服务。
中断优先级是芯片内部已定义好的,不可修改。
四.实验内容
1.采用中断方式实现指示灯显示十六进制数0-F。
2.采用中断方式实现指示灯从左到右间隔一定时间的定时闪烁。
3.实验程序参考流程图如图3.3所示。
图3.3定时中断程序流程图
3.改变“CpuTimer0Regs.PRD.all=0xffff;”中的值。
重新执行程序,观察实验现象。
五.问题与思考
1.指示灯在定时器的定时中断中如何实现定时闪烁。
2.使用定时器和中断服务程序可以完成许多需要定时完成的任务,比如DSP定时启动A/D转换,日常生活中的计时器计数、空调的定时启动和关闭等。
3.在调试程序时,有时需要指示程序工作的状态,可以利用指示灯的闪烁来达到,指示灯灵活的闪烁方式可表达多种状态信息。
程序:
#include"DSP2833x_Device.h"//DSP2833xHeaderfileIncludeFile
#include"DSP2833x_Examples.h"//DSP2833xExamplesIncludeFile
//Prototypestatementsforfunctionsfoundwithinthisfile.
interruptvoidcpu_timer0_isr(void);
//interruptvoidcpu_timer1_isr(void);
//interruptvoidcpu_timer2_isr(void);
//#definemem(*(unsignedshortint*)0x200000)
#defineLED(*(unsignedshortint*)0x180000)
#definestartCpuTimer0()CpuTimer0Regs.TCR.bit.TSS=0
inti=0,nco