DSP实验报告模版.docx

上传人:b****7 文档编号:23608664 上传时间:2023-05-19 格式:DOCX 页数:25 大小:497.21KB
下载 相关 举报
DSP实验报告模版.docx_第1页
第1页 / 共25页
DSP实验报告模版.docx_第2页
第2页 / 共25页
DSP实验报告模版.docx_第3页
第3页 / 共25页
DSP实验报告模版.docx_第4页
第4页 / 共25页
DSP实验报告模版.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

DSP实验报告模版.docx

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

DSP实验报告模版.docx

DSP实验报告模版

我们做的DSP实验是实验一,实验二,实验三!

模板上只有13!

2要自己仿照实验一写!

不要弄错了!

实验题目在另外一个共享表格里!

实验一数据存储实验

一、实验目的

1.掌握CCS的使用

2.掌握TMS320C54X程序空间的分配;

3.掌握TMS320C54X数据空间的分配;

4.能够熟练运用TMS320C54X数据空间的指令。

二、实验设备

计算机,CCS3.1版软件,DSP仿真器,E300实验箱,DSP-54XPCPU板。

三、实验步骤与内容

1.在进行DSP实验之前,需先连接好仿真器、实验箱及计算机,连接方法如下所示:

2.E300底板的开关SW4的第1位置ON,其余位置OFF。

其余开关设置为OFF。

SW5全部置ON;其余开关不做设置要求

3.上电复位

在硬件安装完成后,确认安装正确、各实验部件及电源连接无误后,启动计算机,接通仿真器电源,此时,仿真器上的“红色指示灯”应点亮,否则DSP开发系统与计算机连接存在问题。

4.运行CCS程序

1)待计算机启动成功后,实验箱220V电源置“ON”,实验箱上电

2)启动CCS3.1,进入CCS界面后,点击“Debug—Connect”

3)此时仿真器上的“绿色指示灯”应点亮,CCS正常启动,表明系统连接正常;否则仿真器的连接、JTAG接口或CCS相关设置存在问题,这时需掉电检查仿真器的连接、JTAG接口连接是否正确,或检查CCS相关设置是否存在问题。

5.成功运行CCS程序后,首先应熟悉CCS的用户界面;

6.学会在CCS环境下创建工程文件、添加程序文件、编写程序、编译、装载、调试,学习如何使用观察窗口等。

7.用“Project\open”打开“C:

\ti5000\myprojects\01_mem\mem.pjt”.

编译并装载“\01_mem\Debug\mem.out”

8.用“Edit”下拉菜单中的“Memory/Fill”编辑内存单元,参数设置如下图:

单击“OK”此时以0x1000为起始地址的16个内存单元被修改成:

0x0009

9.用“View”下拉菜单“Memory”观察内存单元变化,输入要查看的内存单元地址,本实验要查看0x1000H~0x100FH单元的数值变化,输入地址0x1000H;

单击“OK”如下图所示:

10.点击“Debug\Gomain”进入主程序,在程序中“加软件断点1”和“加软件断点2”处施加软件断点。

11.单击“Debug\Run”运行程序,也可以“单步”运行程序;当程序运行到“软件断点1”处时,查看0x1000H~0x1007H单元的值变化,

12.再单击“Debug\Run”,当程序运行到“软件断点2”处时,查看0x1008~0x100F单元的变化。

13.闭各窗口,本实验完毕

四、程序流程图

 

五、实验程序

#include"DspRegDefine.h"//VC54x寄存器定义

#include"stdio.h"//输入输出头文件

#include"e300_codec.h"

//**********************子函数声明********************************//

voidcpu_init(void);//初始化CPU

//*************************主函数*******************************//

voidmain()

{

UINT16i;

UINT16*room;

UINT16*room1;

room=(UINT16*)0x1000;//设指针px为1000H

room1=(UINT16*)0x1008;//设指针px为1000H

//**********************CPU初始化*********************************//

cpu_init();

/*将0xAAAA写入从数据空间的地址0x1000开始的8个单元中*/

for(i=0;i<8;i++)

{

*room=0xAAAA;

room++;

}

asm("nop");//加软件断点1

/*从0x1000开始的8个空间读出数据依次写入从0x1008开始的8个单元中*/

for(i=0;i<8;i++)

{

*room1=*(room-1);

room--;

room1++;

}

for(;;)

{

}//加软件断点2

}

//*************************结束**********************************//

cpu_init()函数见附录

六实验结果

1、程序运行到断点1处数据存储器的内容如下图:

2、程序运行到断点2处数据存储器的内容如下图:

实验三定时器实验

一、实验目的

1、熟悉TMS320C54X的定时器;

2、掌握TMS320C54X的定时器的控制方法;

3、学会使用CPU定时器中断方式控制程序流程。

二、实验设备

计算机,CCS3.1版软件,DSP硬件仿真器,E300实验箱,DSP-54XPCPU板。

三、实验原理说明

实验是采用CPU定时器来定时使LED亮灭的。

C54x的定时器是一个20位的减法计数器,可以被特定的状态位实现停止、重新启动、重设置或禁止,可以使用该定时器产生周期性的CPU中断,控制定时器中断频率的两个寄存器是定时周期寄存器PRD和定时减法寄存器TDDR,定时器的中断周期为:

CLKOUT*(TDDR+1)*(PRD+1)

在本系统中,如果设置时钟频率为10MHZ,令PRD=0x30D3,TDDR=15,这样得到每0.02秒中断一次,通过累计50次,就能实现1秒钟定时。

0.1us*(15+1)*(12499+1)*50=1S

四、实验步骤和内容

1、E300底板的开关SW4的第1位置ON,其余位置OFF。

其余开关设置为OFF。

SW5全部置ON;其余开关不做设置要求

2、运行CCS软件,调入样例程序,装载并运行;(进入CCS界面后需要点“Debug--Connect”)

3、用“Project//Open”系统项目文件C:

\ti5000\myprojects\03_timer\timer.pjt;

4、编译全部文件并装载“..\debug\timer.out”;单击“Debug\Gomain”进入到主程序中

5、单击“Debug\RUN”运行,可观察到灯LED1~LED8的闪烁变化。

6、单击“Debug\Halt”,暂停程序运行,LED灯停止闪烁;单击“RUN”,LED灯又开始闪烁变化

7、结束实验程序

四、程序流程图

五、实验程序

1、主函数

/*******************************头文件****************************/

#include"DspRegDefine.h"//VC5402寄存器定义

#include"stdio.h"//输入输出头文件

#include"e300_codec.h"

#include"timer.h"//子函数声明文件

//***********************端口定义****************************//

ioportUINT16port0200;//定义输出io端口为0x0200;

//***********************全局变量定义************************//

unsignedintcount=0;

unsignedintTIMER=0;

//*************************************************************//

//*************************主函数****************************//

voidmain()

{

cpu_init();

asm("nop");

set_t0();

asm("nop");

for(;;)

{

switch(count)

{

case0:

IOout=0x0081;break;

case1:

IOout=0x0042;break;

case2:

IOout=0x0024;break;

case3:

IOout=0x0018;break;

case4:

IOout=0x0024;break;

case5:

IOout=0x0042;break;

case6:

IOout=0x0081;break;

case7:

count=0;break;

default:

break;

}

}

}

//*************************结束**********************************//

2、set_t0()函数

//******************************头文件*****************************//

#include"DspRegDefine.h"//VC5402寄存器定义

/***********************************************************

-函数名称:

voidset_t0()

-函数说明:

设置T0的寄存器

-输入参数:

-输出参数:

************************************************************/

voidset_t0()

{

asm("ssbxintm");//禁止所有可屏蔽中断

*(unsignedint*)TCR=0x0010;//停止T0定时器记数

//--------------------------------------------------------------------

//TCRDEFINITIONS?

//保留(bit15-12)-0000保留

//SOFT、FREE(bit11-10)-00调试时,遇到断点,定时器停止工作

//PSC(bit9-6)-0000预定标计数器

//TRB(bit5)-0不复位定时器,不重新加载TIM、PSC

//TSS(bit4)-1定时器停止工作

//TDDR(bit3-0)-0定时器分频系数

//------------------------------------------------------------

//0000000000010000=0x0010

/*---------------------------------------------------------------------*/

*(unsignedint*)PRD=0x30d3;//设置T0的周期寄存器

*(unsignedint*)IMR=*(unsignedint*)IMR|0x0008;//允许T0中断

*(unsignedint*)IFR=*(unsignedint*)IFR;//清除中断标志

*(unsignedint*)TCR=0x002f;//允许T0定时器记数

//--------------------------------------------------------------------

//TCRDEFINITIONS?

//保留(bit15-12)-0000保留

//SOFT、FREE(bit11-10)-00调试时,遇到断点,定时器停止工作

//PSC(bit9-6)-0000预定标计数器

//TRB(bit5)-1复位定时器,重新加载TIM、PSC

//TSS(bit4)-0定时器开始工作

//TDDR(bit3-0)-1111定时器分频系数

//------------------------------------------------------------

//0000110000101111=0x0c2f

/*---------------------------------------------------------------------*/

asm("rsbxintm");//开放所有可屏蔽中断

}

//*************************结束**********************************/

3、Tint0函数

#include"DspRegDefine.h"//VC5402寄存器定义

//-----------------------------------------------------------------//

externunsignedintcount;

externunsignedintTIMER;

//*************************TO中断程序*****************************//

interruptvoidTint0()

{

TIMER++;

if(TIMER%50==0)

count=count+1;

}

//*************************结束**********************************//

4、cpu_init函数见附录

六实验结果

LED灯根据定时时间不断的闪烁变化。

七思考题

1、修改程序,实现灯闪烁变化的快慢。

2、修改程序,改变流水灯变化的花样。

实验六通用I/O口实验

—、实验目的

1.熟悉TMS320VC5416的通用I/O口应用

2.掌握利用I/O口产生波形的设计方法

二、实验设备

计算机,CCS3.1版本软件,DSP仿真器,E300实验箱,DSP-54XPCPU板,示波器

三、实验原理

²C54X器件的I/O引脚介绍

C54x器件除了64K字节的I/O口空间外,还用两个受软件控制的专用引脚:

BIO和XF。

除了以上两种引脚之外,还有一些引脚可以设置成通用的GPIO使用,这些引脚是:

McBSP引脚,8个HPI数据引脚(HD0~HD7)。

这些引脚的使用可通过专用的寄存器进行设置使用。

McBSP引脚设置成I/O口使用时需设置的寄存器:

SPCR1,SPCR2和PCR8个HPI数据引脚(HD0~HD7)设置成I/O口使用时需设置的寄存器:

GPIOCR和GPIOSR,同时要满足HPI-8接口禁止时有效即HPIENA设置成低电平时。

²C54X器件I/O引脚应用

通用I/O口应用很广,像对LED灯的控制和对电机的操作控制等。

使用时需要注意的是:

1.这些管脚支持0~3.3V逻辑电平操作,用户在进行相应的设计后可以在I/O口进行输入输出操作。

2.使用时必须根据引脚本身的负载能力驱动相关的设备。

²样例实验说明

1.将McBSP0通道的FSX0,CLKX0和DX0管脚设置成通用I/O输出口。

(详细设置请参看样例程序)

2.利用定时器T0,产生精确的方波。

3.利用E300板上键盘(1.2.3.4)对输出波形进行选择,在选择时相应的LED灯点亮

4.综合(1.2.3)可以看出该样例实验是结合定时器中断,键盘中断和McBSP设置I/O口的综合实验

5.定时器T0定时时间为10us,(具体的计算请参看前面:

定时器中断实验)

四、实验程序流程图

四、实验步骤

1.E300板上的开关SW4的第一位置ON,其余OFF;SW3的第四位置ON其余的SW3位置OFF

2.E300板上的开关SW7的第2,4,6位置ON,其余位置OFF.

3.运行CodeComposerStudio(CCS)(ccs3.1需要“DEBUG→Connect”)

4.打开系统项目文件C:

\ti5000\myprojects\06_GPIO\GPIO.pjt;

5.编译全部文件并装载“\Debug\GPIO.out”文件

6.单击“Debug\GoMain”跳到主程序的开始;

7.单击“Debug\Animate”运行程序

五、实验程序

1、主函数

#include"DspRegDefine.h"//VC5416寄存器定义

#include"e300_codec.h"

#include"key.h"//子函数声明文件

//***********************端口定义****************************//

ioportUINT16port0200;//定义输出io端口为0x0200;

ioportUINT16port0004;//定义

//***********************全局变量定义************************//

UINT16row,col,w;

UINT16a=0;

UINT16count=0;

UINT16flag=0;

UINT16timer=0;

UINT16num=0;

/*************************************************************/

//*************************主函数***************************//

voidmain()

{

cpu_init();//初始化CPU

int2_init();//外部中断2初始化

set_t0();

GPIO_init();

asm("rsbxINTM");//开总中断

port0200=0x00

//*********************等待外部中断2产生**********************//

for(;;)

{

if(a==1)//加软件断点

{

a=0;

read_data();

conv();

Makewave();

}

else{}

}

}

//*************************结束*****************************//

2、GPIO_init函数

#include"DspRegDefine.h"//VC5416寄存器定义

#include"key.h"//子函数声明文件

//*************************初始化GPIO****************************//

voidGPIO_init()

{

*(unsignedint*)McBSP0_SPSA=0x0001;//SPCR2

*(unsignedint*)McBSP0_SPSD&=0xfffe;//设置SPCR1.0(XRST=0)

*(unsignedint*)McBSP0_SPSA=0x000E;//PCR

*(unsignedint*)McBSP0_SPSD|=0x2800;

*(unsignedint*)McBSP0_SPSD&=0xFFd7;//设置PCR中FSXP=0,DX_STAT=0;

*(unsignedint*)McBSP0_SPSA=0x0000;//SPCR1

*(unsignedint*)McBSP0_SPSD&=0xfffe;//设置SPCR1.0(RRST=0)

*(unsignedint*)McBSP0_SPSA=0x000E;//PCR

*(unsignedint*)McBSP0_SPSD|=0x2200;

*(unsignedint*)McBSP0_SPSD&=0xFFfD;//设置PCR中CLKXM=0

}

//********************************************************//

3、read_data函数

#include"DspRegDefine.h"//VC5416寄存器定义

#include"e300_codec.h"

//---------------------------------------------------//

externioportUINT16port0004;//定义

externunsignedintrow,col,w;

//-----------------读CPLD键盘扫描数据----------------//

voidread_data(void)

{

unsignedinttemp;

temp=E300_CPLD_KEY&0x00ff;

w=temp;

switch(temp&0xf0)

{

case0xe0:

row=0x1;break;

case0xd0:

row=0x2;break;

case0xb0:

row=0x3;break;

case0x70:

row=0x4;break;

default:

break;//return0;//row=0;break;

}

switch(temp&0x0f)

{

case0x0e:

col=0x1;break;

case0x0d:

col=0x2;break;

case0x0b:

col=0x3;break;

case0x07:

col=0x4;break;

default:

break;//return0;//col=0;break;

}

}

#include"DspRegDefine.h"//VC5402寄存器定义

#include"key.h"//子函数声明文件

//******************************************//

externunsignedintflag;

//*****************************************//

4、Makewave函数

voidMakewave()

{

switch(flag)

{

case1:

outwave1();break;

case2:

outwave2();break;

case3:

outwave

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

当前位置:首页 > 法律文书 > 起诉状

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

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