实验报告.docx

上传人:b****5 文档编号:8222672 上传时间:2023-01-30 格式:DOCX 页数:29 大小:183.97KB
下载 相关 举报
实验报告.docx_第1页
第1页 / 共29页
实验报告.docx_第2页
第2页 / 共29页
实验报告.docx_第3页
第3页 / 共29页
实验报告.docx_第4页
第4页 / 共29页
实验报告.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

实验报告.docx

《实验报告.docx》由会员分享,可在线阅读,更多相关《实验报告.docx(29页珍藏版)》请在冰豆网上搜索。

实验报告.docx

实验报告

实验一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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 辩护词

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1