DSP 实验一二

  • 格式:doc
  • 大小:536.83 KB
  • 文档页数:14
// Initialize System Control:
// PLL, WatchDog, enable Peripheral Clocks
InitSysCtrl();
对看门狗,系统等进行初始化
// Disable CPU interrupts
DINT;
禁止中断
// Disable CPU interrupts and clear all CPU interrupt flags:
// Peripheral clock enables set for the selected peripherals.
实验一 数据存储实验
一、实验目的
1.掌握TMS320F2812程序空间的分配;数据空间的分配;
2.能够熟练运用TMS320F2812数据空间的指令。
3.学习CCS3.3软件使用方法。
二、实验设备
计算机,CCS 3.3版软件,DSP仿真器,E300实验箱,2812CPU板。
三、实验系统相关资源介绍
1.本实验指导书是以TMS320F2812为例,介绍其相关的内部和外部存储器资源。对于其他类型的CPU请参考查阅相关的数据手册。(数据手册以TI手册为依据)
16、单击“Debug\Run”运行程序,也可以“单步”运行程序;查看0x003F9020H~ 0x3F902FH单元的相应值,
此时以0x003F9020为起始地址的16个内存单元被改成:0xAAAA,如下图所示:
17.实验结果:
18、实验任务二:
通过修改上述源程序,实现:
(1)、在0x3f9020开始的位置放置8个数,0x3211。
对于数据存储空间而言,映射表相对固定。值得注意的是内部寄存器都映射到数据存储空间内。因此在编程应用时这些特定的空间不能作其他用途。对于程序存储空间而言,其映射表和CPU的工作模式有关。当MP/MC引脚为高电平时,CPU工作在微处理器模式;当MP/MC引脚低电平时,CPU工作在微控制器模式。
存储器实验主要帮助用户了解存储器的操作和DSP内部的双总线结构。并熟悉相关的指令代码和操作等。
(2)、在0x3f902f开始的位置放置8个数,0x1111。
(3)、将0x3f9020位置开始的8个数和0x3f902f位置开始放置的8个数相加,放到0x3f9010开始的8个地址中。
提示:该程序在调试时,每个循环用设置断点来调。
19、本实验程序相关语句说明:
源程序:(example_dsp281x_mem.c)
// required. For Rev C and after this is no longer required
// Disable the watchdog
DisableDog();
// Initialize the PLLCR to 0xA
InitPll(0xa);
// Initialize the peripheral clocks
// HISPCP/LOSPCP prescale register settings, normally it will be set to default values
SysCtrlRegs.HISPCP.all = 0x0001;
SysCtrlRegs.LOSPCP.all = 0x0002;
10、程序框图
11、 输入主要程序:
步骤:双击:“Example_DSP281X_mem.c” ,打开文件,此时该项文件内容为空,将下面程序输入。
(注意:实验程序所在的目录不能包含中文,目录不能过深,如果想重新编译程序,去掉所有文件的只读属性。)
#include "DSP281x_Device.h" // DSP281x Headerfile Include File
0x00 A000
保留
片外空间2(0.5M*16 XZCS2)片外扩展存储器(256K*16)
0x08
0000
片外空间6(0.5M*16XZCS6AND7)
0x10
0000
0x3D 7800
OTP ROM(1K*16,)(安全块)
保留
0x18
0000
0x3D 7C00
保留
相当于TMS320F24x/LF240x程序存储空间
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文件:
2.程序实验操作简单说明:
本实验是在CCS的Memory窗口中查找F2812各个区段的数据存储器地址,在可以改变的数据地址随意改变其中内容;在CCS中装载实验示范程序,单步执行程序,观察程序中写入和读出的数据存储地址的变化。
四、实验步骤与内容
1.在进行DSP实验之前,需先连接好仿真器、实验箱及计算机,连接方法如下所示:
外部扩展向量(32*32)VMAP=1,MP/MC=1,ENPIE=0时有效
注意:1. 存储器不能任意调整
2. 保留区为今后的扩展做准备,用户应用时不应该访问这些区域
3. 启动代码和片外扩展空间7 由MP/MC的引脚状态来选择其中之一,不能同时映射到DSPD的地址空间
4. 外设寄存器组0、1和2仅仅作为数据存储器访问,不能作为程序存储器访问
下面给出TMS320F2812的存储器分配表:
相当于TMS320F24x/LF240x数据存储空间
块起始地址
片内存储空间(on-chip)
片外存储空间(XINTF)
数据空间
程序空间
数据空间
程序空间
0x00 0000
M0向量-随机存储器(32*32)(当VMAP=0时有效)
保留
0x00 0040
M0 SRAM(单存取随机存储器) 1K*16
#include "DSP281x_Emples Include File
void main(void)
{
int i;
volatile unsigned int *room= (volatile unsigned int *)0x3f9020;
volatile unsigned int *room2= (volatile unsigned int *)0x3f902F;
片外空间1(8K*16 XZCS0AND1)(保护)
0x00
4000
0x00 6000
外设寄存器组1(4K*16)(受保护)
保留
0x00 7000
外设寄存器组1(4K*16)(受保护
0x00 8000
L0 SARAM(单存取随机存储器)4K*16(安全块)
0x00 9000
L1 SARAM(单存取随机存储器)4K*16(安全块)
5. 保护 表示是为了配合流水线的工作在读操作之后的写操作将会被妥善的处理
6. 一部分存储器被EALLOW保护后,是不希望在初始化之后再次改变他们的值(请详细参看TMS320F2812数据手册)
7. 片外空间0,1,6和7共享相同的片选信号,因此,他们虽然地址不同,但却是相同存储器的镜像(mirrored locations).
IER = 0x0000;
禁止中断
IFR = 0x0000;
清所有中断标记。
/*将0xAAAA写入从数据空间的地址0x3f9020开始的8个单元中*/
for(i=0;i<8;i++)
{
*room=0xAAAA;
room指针的地址内填上0xAAAA
room++;
}
/*从0x3f9020开始的8个空间读出数据依次写入从0x3f9028开始的8个单元中*/
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个地址空间。
for(i=0;i<8;i++)
{
*room2=*(room-1);将room指针减一,然后将其内容填到room2指针的地址内。
room--;
room2--;
}
}
InitSysCtrl()函数,在DSP281x_SysCtrl.c中定义。
其定义如下:
void InitSysCtrl(void)
{
// On F2812/F2810 TMX samples prior to rev C this initialization was
注:如出现上述问题,原因有二:
其一,可能是系统连接错误或没有正常复位,应重新检查系统硬件并复位;
其二,可能是软件安装或设置存在问题,应尝试调整软件系统设置。
成功运行CCS程序后,首先应熟悉CCS的用户界面;
6.学会在CCS环境下创建工程文件、添加程序文件、编写程序、编译、装载、调试,学习如何使用观察窗口等。(详细介绍请参看TI CCS 软件使用数据手册)
5.运行CCS程序
1)待计算机启动成功后,实验箱220V电源置“ON”,实验箱上电
2)启动CCS3.3,进入CCS界面后,点击“Debug—Connect”