DSP 实验一二.docx
- 文档编号:27265211
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:21
- 大小:437.51KB
DSP 实验一二.docx
《DSP 实验一二.docx》由会员分享,可在线阅读,更多相关《DSP 实验一二.docx(21页珍藏版)》请在冰豆网上搜索。
DSP实验一二
实验一数据存储实验
一、实验目的
1.掌握TMS320F2812程序空间的分配;数据空间的分配;
2.能够熟练运用TMS320F2812数据空间的指令。
3.学习CCS3.3软件使用方法。
二、实验设备
计算机,CCS3.3版软件,DSP仿真器,E300实验箱,2812CPU板。
三、实验系统相关资源介绍
1.本实验指导书是以TMS320F2812为例,介绍其相关的内部和外部存储器资源。
对于其他类型的CPU请参考查阅相关的数据手册。
(数据手册以TI手册为依据)
下面给出TMS320F2812的存储器分配表:
相当于TMS320F24x/LF240x数据存储空间
块起始地址
片内存储空间(on-chip)
片外存储空间(XINTF)
数据空间
程序空间
数据空间
程序空间
0x000000
M0向量-随机存储器(32*32)(当VMAP=0时有效)
保留
0x000040
M0SRAM(单存取随机存储器)1K*16
0x000400
M1SRAM(单存取随机存储器)1K*16
0x000800
外设寄存器组0(2K*16)
0x000D00
外设向量PIEVector2k*16
当(VMAP=1,ENPIE=1时有效)
无效
0x000E00
保留
片外空间0(8K*16XZCS0AND1)
0x00
2000
0x002000
片外空间1(8K*16XZCS0AND1)(保护)
0x00
4000
0x006000
外设寄存器组1(4K*16)(受保护)
保留
0x007000
外设寄存器组1(4K*16)(受保护
0x008000
L0SARAM(单存取随机存储器)4K*16(安全块)
0x009000
L1SARAM(单存取随机存储器)4K*16(安全块)
0x00A000
保留
片外空间2(0.5M*16XZCS2)片外扩展存储器(256K*16)
0x08
0000
片外空间6(0.5M*16XZCS6AND7)
0x10
0000
0x3D7800
OTPROM(1K*16,)(安全块)
保留
0x18
0000
0x3D7C00
保留
相当于TMS320F24x/LF240x程序存储空间
0x3F8000
H0SARAM(单存取随机存储器)(8K*16)(安全块)
0x3FA000
保留
0x3FF000
启动代码(4K*16)当MP/MC=0时有效
片外空间7(16K*16XZCS6AND7)当MP/MC=1时有效
0x3F
0000
0x3FFFC0
BROM向量,(32*32)当VMAP=1,MP/MC=0,ENPIE=0时有效
外部扩展向量(32*32)VMAP=1,MP/MC=1,ENPIE=0时有效
注意:
1.存储器不能任意调整
2.保留区为今后的扩展做准备,用户应用时不应该访问这些区域
3.启动代码和片外扩展空间7由MP/MC的引脚状态来选择其中之一,不能同时映射到DSPD的地址空间
4.外设寄存器组0、1和2仅仅作为数据存储器访问,不能作为程序存储器访问
5.保护表示是为了配合流水线的工作在读操作之后的写操作将会被妥善的处理
6.一部分存储器被EALLOW保护后,是不希望在初始化之后再次改变他们的值(请详细参看TMS320F2812数据手册)
7.片外空间0,1,6和7共享相同的片选信号,因此,他们虽然地址不同,但却是相同存储器的镜像(mirroredlocations).
对于数据存储空间而言,映射表相对固定。
值得注意的是内部寄存器都映射到数据存储空间内。
因此在编程应用时这些特定的空间不能作其他用途。
对于程序存储空间而言,其映射表和CPU的工作模式有关。
当MP/MC引脚为高电平时,CPU工作在微处理器模式;当MP/MC引脚低电平时,CPU工作在微控制器模式。
存储器实验主要帮助用户了解存储器的操作和DSP内部的双总线结构。
并熟悉相关的指令代码和操作等。
2.程序实验操作简单说明:
本实验是在CCS的Memory窗口中查找F2812各个区段的数据存储器地址,在可以改变的数据地址随意改变其中内容;在CCS中装载实验示范程序,单步执行程序,观察程序中写入和读出的数据存储地址的变化。
四、实验步骤与内容
1.在进行DSP实验之前,需先连接好仿真器、实验箱及计算机,连接方法如下所示:
2.F2812CPU板的JUMP1的1和2脚短接,拨码开关SW1的第二位置ON;其余OFF
3.E300底板的开关SW4的第2位置ON,其余位置OFF。
其余开关设置为OFF。
4.上电复位
在硬件安装完成后,确认安装正确、各实验部件及电源连接无误后,启动计算机,接通仿真器电源,此时,仿真器上的“红色指示灯”应点亮,否则DSP开发系统与计算机连接存在问题。
5.运行CCS程序
1)待计算机启动成功后,实验箱220V电源置“ON”,实验箱上电
2)启动CCS3.3,进入CCS界面后,点击“Debug—Connect”
此时仿真器上的“绿色指示灯”应点亮,CCS正常启动,表明系统连接正常;否则仿真器的连接、JTAG接口或CCS相关设置存在问题,这时需掉电检查仿真器的连接、JTAG接口连接是否正确,或检查CCS相关设置是否存在问题。
注:
如出现上述问题,原因有二:
其一,可能是系统连接错误或没有正常复位,应重新检查系统硬件并复位;
其二,可能是软件安装或设置存在问题,应尝试调整软件系统设置。
成功运行CCS程序后,首先应熟悉CCS的用户界面;
6.学会在CCS环境下创建工程文件、添加程序文件、编写程序、编译、装载、调试,学习如何使用观察窗口等。
(详细介绍请参看TICCS软件使用数据手册)
7.
用“Project\open”打开相关相关工程文件:
本实验相关文件路径为:
“c:
\DSP_examep\DSP281X_examples\e300_01_mem\Example_281x_mem.pjt”
双击Example_281x_mem.pj该文件,打开文件。
9、实验任务一:
首先将0x003F9020H开始的8个地址空间,填写入0xAAAA的数值,然后读出,并存储到以0x003F9028H开始的8个地址空间。
10、程序框图
11、
输入主要程序:
步骤:
双击:
“Example_DSP281X_mem.c”,打开文件,此时该项文件内容为空,将下面程序输入。
(注意:
实验程序所在的目录不能包含中文,目录不能过深,如果想重新编译程序,去掉所有文件的只读属性。
)
#include"DSP281x_Device.h"//DSP281xHeaderfileIncludeFile
#include"DSP281x_Examples.h"//DSP281xExamplesIncludeFile
voidmain(void)
{
inti;
volatileunsignedint*room=(volatileunsignedint*)0x3f9020;
volatileunsignedint*room2=(volatileunsignedint*)0x3f902F;
InitSysCtrl();
DINT;
IER=0x0000;
IFR=0x0000;
for(i=0;i<8;i++)
{
*room=0xAAAA;
room++;
}
for(i=0;i<8;i++)
{
*room2=*(room-1);
room--;
room2--;
}
}
12、对项目进行编译和链接,产生可执行*.out文件:
注意:
如提示有错误,必须回到原程序改正语法错误,再重新编译,至到没错为止。
13、用“View”下拉菜单“Memory”,如下图所示:
输入要查看的内存单元地址,本实验要查看0x003F9020H~0x3F902FH单元的数值变化,输入地址0x003F9020;回车。
注意:
此时
,观察以0x003F9020为起始地址的16个内存单元数值。
14、用“Edit”下拉菜单中的“Memory/Fill”编辑内存单元,参数设置如下图:
注意:
下面的参数设置都是以16进制。
单击“OK”,此时以0x003F9020为起始地址的16个内存单元被修改成:
0x0009
内存单元如下图所示:
15、加载运行已生成的*.out文件
路径:
File\loadProgram..\Debog\Example_281x_men.out双击该文件。
16、单击“Debug\Run”运行程序,也可以“单步”运行程序;查看0x003F9020H~0x3F902FH单元的相应值,
此时以0x003F9020为起始地址的16个内存单元被改成:
0xAAAA,如下图所示:
17.实验结果:
18、实验任务二:
通过修改上述源程序,实现:
(1)、在0x3f9020开始的位置放置8个数,0x3211。
(2)、在0x3f902f开始的位置放置8个数,0x1111。
(3)、将0x3f9020位置开始的8个数和0x3f902f位置开始放置的8个数相加,放到0x3f9010开始的8个地址中。
提示:
该程序在调试时,每个循环用设置断点来调。
19、本实验程序相关语句说明:
源程序:
(example_dsp281x_mem.c)
voidmain(void)
{
inti;
volatileunsignedint*room=(volatileunsignedint*)0x3f9020;
volatileunsignedint*room2=(volatileunsignedint*)0x3f902F;
建立可变数据类型的两个指针,指向两个地址。
//InitializeSystemControl:
//PLL,WatchDog,enablePeripheralClocks
InitSysCtrl();
对看门狗,系统等进行初始化
//DisableCPUinterrupts
DINT;
禁止中断
//DisableCPUinterruptsandclearallCPUinterruptflags:
IER=0x0000;
禁止中断
IFR=0x0000;
清所有中断标记。
/*将0xAAAA写入从数据空间的地址0x3f9020开始的8个单元中*/
for(i=0;i<8;i++)
{
*room=0xAAAA;
room指针的地址内填上0xAAAA
room++;
}
/*从0x3f9020开始的8个空间读出数据依次写入从0x3f9028开始的8个单元中*/
for(i=0;i<8;i++)
{
*room2=*(room-1);将room指针减一,然后将其内容填到room2指针的地址内。
room--;
room2--;
}
}
InitSysCtrl()函数,在DSP281x_SysCtrl.c中定义。
其定义如下:
voidInitSysCtrl(void)
{
//OnF2812/F2810TMXsamplespriortorevCthisinitializationwas
//required.ForRevCandafterthisisnolongerrequired
//Disablethewatchdog
DisableDog();
//InitializethePLLCRto0xA
InitPll(0xa);
//Initializetheperipheralclocks
InitPeripheralClocks();
}
以上程序完成关看门狗,初始化时钟,初始化外设时钟。
(外设时钟是片内外设的时钟,分高速和低速)
———————————————————————————————————————
其中
voidInitPeripheralClocks(void)
{
EALLOW;
//HISPCP/LOSPCPprescaleregistersettings,normallyitwillbesettodefaultvalues
SysCtrlRegs.HISPCP.all=0x0001;
SysCtrlRegs.LOSPCP.all=0x0002;
//Peripheralclockenablessetfortheselectedperipherals.
SysCtrlRegs.PCLKCR.bit.EVAENCLK=1;
SysCtrlRegs.PCLKCR.bit.EVBENCLK=1;
SysCtrlRegs.PCLKCR.bit.SCIAENCLK=1;
SysCtrlRegs.PCLKCR.bit.SCIBENCLK=1;
SysCtrlRegs.PCLKCR.bit.MCBSPENCLK=1;
SysCtrlRegs.PCLKCR.bit.SPIENCLK=1;
SysCtrlRegs.PCLKCR.bit.ECANENCLK=1;
SysCtrlRegs.PCLKCR.bit.ADCENCLK=1;
EDIS;
}
以上程序完成外设时钟的设置,寄存器的含义见教材或参考书,其中EALLOW表示开保护,EDIS为启动保护,这些是在寄存器操作时必须的。
其中:
SysCtrlRegs是一个结构体,PCLKCR是一个结构体,bit和All是一个联合体。
——————————————————————————————————————
voidInitPll(Uint16val)
{
volatileUint16iVol;
if(SysCtrlRegs.PLLCR.bit.DIV!
=val)
{
EALLOW;
SysCtrlRegs.PLLCR.bit.DIV=val;
EDIS;
设置PLL时钟,在此后Cpu等待PLL锁死,在PLL没有锁死前,CPU将工作在晶振时钟的0.5倍。
当PLL稳定后,CPU才工作于新频率。
软件可以再PLL锁死前继续运行。
但如果对运行时间要求严的话,可以在此加上等待。
在锁相环稳定前,看门狗是不工作的。
DisableDog();
for(iVol=0;iVol<((131072/2)/12);iVol++)
{
}
等待。
}
}
20.修改后代码:
#include"DSP281x_Device.h"//DSP281xHeaderfileIncludeFile
#include"DSP281x_Examples.h"//DSP281xExamplesIncludeFile
voidmain(void)
{
inti;
volatileunsignedint*room=(volatileunsignedint*)0x3f9020;
volatileunsignedint*room2=(volatileunsignedint*)0x3f902F;
volatileunsignedint*room1=(volatileunsignedint*)0x3f9010;
InitSysCtrl();
DINT;
IER=0x0000;
IFR=0x0000;
for(i=0;i<8;i++)
{
*room=0x3211;
room++;
}
for(i=0;i<8;i++)
{
*room2=0x1111;
room2++;
}
for(i=0;i<8;i++)
{*room1=*room+*room2;
room++;
room2++;}
}
21.实验结果:
实验二拨码开关实验
—、实验目的
1.了解DSP开发系统的组成和结构
2.了解IO的基本编程方法
二、实验设备
计算机,CCS3.3版本软件,DSP仿真器,E300实验箱,2812CPU板。
三、实验原理
8位的数字量输入(由拨码开关产生),当拨码打到靠近LED时为低。
相反为高。
通过74LS244(可读)缓冲连接到DSP的数据总线的低8位。
CPU通过读指令读取到拨码开关产生的8位输出的数字量,然后CPU通过写指令把读出的8位数字量写入(0x2200)单元内,使连接到DSP的数据总线的低8位的74LS273的输出端产生高低信号,此时LED灯产生亮灭。
当对应LED灯点亮时说明输出为低,熄灭时为高。
(器件74LS244和74LS273详细的介绍请参看数据手册)
数字量输入输出单元的资源分配如下:
基地址:
2000h(当CS1为0时分配有效)
数字量分配空间为数据空间地址:
基地址+0x2200(低8位,只读)
✧拨码开关扩展工作原理
说明:
74LS244片选号、74LS273片选信号和74LS273复位信号由E300上CPLD译码产生。
本实验使用DSP数据总线的低8位。
实验任务一:
1、编写程序完成将拨码开关的信息读入DSP,然后再将该信息回写,控制led灯。
调整"数字输入输出单元"的开关K1~K8,观察LED1~LED8灯亮灭的变化。
2、本实验的程序流程框图如下:
3、输入主要程序
#include"DSP281x_Device.h"//DSP281xHeaderfileIncludeFile
#include"DSP281x_Examples.h"//DSP281xExamplesIncludeFile
voidmain(void)
{
unsignedinttemp;
temp=0;
DINT;
InitSysCtrl();
InitPieCtrl();
IER=0x0000;
IFR=0x0000;
InitPieVectTable();
for(;;)
{
asm("nop");
temp=*(int*)0x2200&0x00ff;
asm("nop");
*(int*)0x2200=temp;
asm("nop");
}
}
四、实验步骤(步骤基本与实验一相同)
1.2812CPU板的JUMP1的1和2脚短接,拨码开关SW1的第二位置ON。
2.E300板上的开关SW4的第二位置ON,其余OFF;SW5开关全部置ON;其余开关全部置OFF。
3.运行CodeComposerStudio(CCS)(CCS3.3需要“DEBUG→Connect”)
4.用“Project\open”打开系统项目文件
路径为“c:
\DSP_examep\DSP281X_examples\e300_02_switch\Example_281x_switch.pjt”双击该文件
5、输入主要程序。
6、编译程序并装载。
7.单击“Debug-GoMain”跳到主程序的开始;
8.单击“Debug\RUN”运行程序。
需要判断是高电平亮,还是低电平亮,可以使用中断调试。
在运行状态,在需要设置断点的位置的右边,双击,就可以产生红点。
表明设置了断点。
在view目录下,(如右边图所示:
)打开watchwindow,(此项是用来检查和编辑变量或C表达式可以不同格式显示变量值,还可以显示数值、结构或指针等包含多个元素的变量),在本实验中观察temp变量的变化。
步骤:
在debug目录下点run,在断点处,程序会停下来,可以观察temp变量的值。
(也可按“F10”单步运行程序,观察temp变量的值。
)
9.任意拨动E300底板上的拨动开关,观察LED和拨动开关的对应情况。
(LED1-LED7分别对应DSP数据总线的D0-D7)
10.单击“Debug\Halt”暂停持续运行,开关将对灯失去控制.
11.实验结果:
11.关闭所有窗口,本实验完毕.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 实验一二 实验 一二