DSP实验报告 打印Word格式.docx

上传人:b****5 文档编号:16263900 上传时间:2022-11-22 格式:DOCX 页数:21 大小:1.32MB
下载 相关 举报
DSP实验报告 打印Word格式.docx_第1页
第1页 / 共21页
DSP实验报告 打印Word格式.docx_第2页
第2页 / 共21页
DSP实验报告 打印Word格式.docx_第3页
第3页 / 共21页
DSP实验报告 打印Word格式.docx_第4页
第4页 / 共21页
DSP实验报告 打印Word格式.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

DSP实验报告 打印Word格式.docx

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

DSP实验报告 打印Word格式.docx

图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

DSP281x_Examples.h"

//DSP281xExamplesIncludeFile

#defineEXAMPLE11//UseDATAregisterstotoggleI/O'

s

#defineEXAMPLE20//UseSET/CLEARregisterstotoggleI/O'

#defineEXAMPLE30//UseTOGGLEregisterstotoggleI/O'

//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'

Gpio_example1();

#endif//-EXAMPLE1

#ifEXAMPLE2

//ThisexampleusesSET/CLEARregisterstotoggleI/O'

#endif

#ifEXAMPLE3

//ThisexampleusesTOGGLEregisterstotoggleI/O'

Gpio_example3();

}

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

}

voidGpio_example2(void)

//Example2:

//ToggleI/OsusingSET/CLEARregisters

GpioDataRegs.GPASET.all=0xAAAA;

GpioDataRegs.GPACLEAR.all=0x5555;

GpioDataRegs.GPBSET.all=0xAAAA;

GpioDataRegs.GPBCLEAR.all=0x5555;

GpioDataRegs.GPDSET.all=0x0022;

GpioDataRegs.GPDCLEAR.all=0x0041;

GpioDataRegs.GPESET.all=0x0002;

GpioDataRegs.GPECLEAR.all=0x0005;

GpioDataRegs.GPFSET.all=0xAAAA;

GpioDataRegs.GPFCLEAR.all=0x5555;

GpioDataRegs.GPGSET.all=0x0020;

GpioDataRegs.GPGCLEAR.all=0x0010;

GpioDataRegs.GPACLEAR.all=0xAAAA;

GpioDataRegs.GPASET.all=0x5555;

GpioDataRegs.GPBCLEAR.all=0xAAAA;

GpioDataRegs.GPBSET.all=0x5555;

GpioDataRegs.GPDCLEAR.all=0x0022;

GpioDataRegs.GPDSET.all=0x0041;

GpioDataRegs.GPECLEAR.all=0x0002;

GpioDataRegs.GPESET.all=0x0005;

GpioDataRegs.GPFCLEAR.all=0xAAAA;

GpioDataRegs.GPFSET.all=0x5555;

GpioDataRegs.GPGCLEAR.all=0x0020;

GpioDataRegs.GPGSET.all=0x0010;

//TwoI/Osonly

voidGpio_example3(void)

//ToggleI/OsusingTOGGLEregisters

//Setpinstoaknownstate

//UseTOGGLEregisterstoflipthestateof

//thepins.

//Anybitsettoa1willflipstate(toggle)

//Anybitsettoa0willnottoggle.

GpioDataRegs.GPATOGGLE.all=0xFFFF;

GpioDataRegs.GPBTOGGLE.all=0xFFFF;

GpioDataRegs.GPDTOGGLE.all=0xFFFF;

GpioDataRegs.GPETOGGLE.all=0xFFFF;

GpioDataRegs.GPFTOGGLE.all=0xFFFF;

GpioDataRegs.GPGTOGGLE.all=0xFFFF;

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设置对应引脚输出为低电平或为高电平。

实验三定时器的驱动与观察

掌握SPRC097软件包的安装与使用方法;

掌握在CCS集成开发环境下建立或打开工程的方法;

掌握定时器的驱动与测试方法(定时将XF管脚置高与置低);

掌握工程的编译、下载与调试方法;

熟悉CCS集成开发环境中寄存器观察工具的使用。

熟悉SPRC097软件包的安装步骤

实现定时器定时驱动XF管脚的编程

会利用寄存器观察工具察看XF管脚的状态

(1)SPRC097软件包的安装

图3-1

(2)定时器定时驱动XF管脚的编程环境

图3-2

voiddelay(void);

intp,r,q;

//控制XF管脚

GpioMuxRegs.GPFMUX.all=0xffff;

for(r=0;

r<

100;

r++)

{

/*xf管脚置低*/

asm("

clrcxf"

);

for(p=0;

p<

10;

p++)

for(q=0;

q<

q++)

delay();

/*xf管脚置高*/

setcxf"

for(;

;

;

voiddelay(void)

unsignedintk,i,j;

for(k=0;

k<

5;

k++);

for(i=0;

i<

i++);

for(j=0;

j<

j++);

图3-3

通过设置GpioMuxRegs.GPFMUX.all=0xffff,实现XF管脚的功能引脚功能。

设置GpioMuxRegs.GPFMUX.all=0x0000,实现XF引脚的输入功能。

当XF引脚为功能模式时,可以通过设置setcXF与clrcxf对XF引脚置低或置高。

通过View下的Registers下的status查看XF管脚寄存器位的变化,如图(2-4)所示:

图3-4

实验四外部中断的应用

掌握中断服务程序的编写方法;

掌握外部中断的驱动与测试方法;

PC机、CCS2(‘2000)IDE软件、XDS510、EXP-IVDSP实验箱

熟悉外部中断XINT1的功能原理

将工程环境设置为硬件仿真调试环境

实现外部中断的应用编程

(1)建立外部中断的工程

图4-1

(2)主要程序代码

//FILE:

Led_Int.c

//TITLE:

DSP281x外部中断测试程序

voidinit_xint1(void);

interruptvoidxint1_isr(void);

voidgpiof_init(void);

Uint32Xint1InterruptCount;

//主程序

voidmain(void)

//InitGpio();

PieVectTable.XINT1=&

xint1_isr;

PieCtrlRegs.PIECRTL.bit.ENPIE=1;

PieCtrlRegs.PIEIER1.bit.INTx6=1;

IER|=M_INT1;

EINT;

Xint1InterruptCount=0;

nop"

gpiof_init();

init_xint1();

if(Xint1InterruptCount<

1)

clrcxf"

elseif(Xint1InterruptCount<

2)

setcxf"

else

voidinit_xint1()

XIntruptRegs.XINT1CR.all=0x0001;

interruptvoidxint1_isr()

Xint1InterruptCount++;

PieCtrlRegs.PIEACK.all=PIEACK_GROUP1;

voidgpiof_init(void)

GpioMuxRe

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

当前位置:首页 > PPT模板 > 自然景观

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

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