您的当前位置:首页正文

2812DSP实验指导书

2024-08-30 来源:星星旅游
 EL-DSP-E300实验开发系统 1

实验指导书

数字信号处理E300型教学实验系统

Tech_v F2812

漆为民、何立言、于军

EL-DSP-E300实验开发系统 2

目 录

第一章 实验系统介绍 ................................................................................................................. 3 1.1 EL-DSP-E300型DSP实验系统介绍 ......................................... 3 1.2 Techv_2812CPU板介绍 .................................................. 13 第二章 调试软件安装说明 ...................................................................... 错误!未定义书签。 2.1 CCS的简介 ............................................ 错误!未定义书签。 2.2 CCS3.1软件的安装 ..................................... 错误!未定义书签。 3.3 CCS3.1软件的设置(以F2812为例) ..................... 错误!未定义书签。 第三章 硬件安装说明 .............................................................................. 错误!未定义书签。 3.1 DSP硬件仿真器的安装 .................................. 错误!未定义书签。 3.2 DSP硬件仿真器的使用 .................................. 错误!未定义书签。 E300样例实验说明 ..................................................................................... 错误!未定义书签。 第四章 常规实验指导 ................................................................................ 错误!未定义书签。 实验一 数据存储实验 ...................................... 错误!未定义书签。 实验二 拨码开关实验 ...................................... 错误!未定义书签。 实验三 CPU定时器实验 .................................... 错误!未定义书签。 实验四 事件管理器定时器实验 .............................. 错误!未定义书签。 实验五 外部中断实验 ...................................... 错误!未定义书签。 实验六 键盘接口实验(E300) ................................ 错误!未定义书签。 实验七 A/D实验(CPU) ................................... 错误!未定义书签。 实验八 A/D(外部)实验 ................................... 错误!未定义书签。 实验九 A/D(外部)实验 ................................... 错误!未定义书签。 实验十 D/A实验 .......................................... 错误!未定义书签。 实验十一 A/D(外部)—D/A综合实验 ....................... 错误!未定义书签。

EL-DSP-E300实验开发系统 3 实验十二 PWM波形产生实验 ................................ 错误!未定义书签。 实验十三 语音实验 ........................................ 错误!未定义书签。 实验十四 LCD实验(E300) .................................. 错误!未定义书签。 实验十五 串口通讯实验 .................................... 错误!未定义书签。 实验十六 CAN 总线通讯实验 ................................ 错误!未定义书签。 实验十七 DTMF(双音多频)信号的产生和检测 ................ 错误!未定义书签。 实验十八 USB(从模式)实验 ................................. 错误!未定义书签。 实验十九 USB(hot)实验 .................................... 错误!未定义书签。 第五章 算法实验指导 ............................................................................ 错误!未定义书签。 实验一 快速傅立叶变换(FFT)算法实验 .................... 错误!未定义书签。 实验二 有限冲击响应滤波器(FIR)算法实验 ................ 错误!未定义书签。 实验三 无限冲击响应滤波器(IIR)算法实验 ................ 错误!未定义书签。 实验四 卷积(Convolve)算法实验 ......................... 错误!未定义书签。 实验五 离散余弦变换(DCT)算法实验 ...................... 错误!未定义书签。 实验六 相关(Correlation)算法 ............................ 错误!未定义书签。 实验七 u_LAW算法 ....................................... 错误!未定义书签。 第六章 图象处理算法实验 ........................................................................ 错误!未定义书签。 实验一 二维图形生成 ..................................... 错误!未定义书签。 实验二 数字图象处理实验 ................................. 错误!未定义书签。 TMS320F281x DSP芯片应用参考资料介绍 ............................................... 错误!未定义书签。 E300扩展板上的芯片应用参考资料介绍 ................................................. 错误!未定义书签。

EL-DSP-E300实验开发系统 4

第一章 实验系统介绍

1.1 EL-DSP-E300型DSP实验系统介绍

一、系统概述:

EL-DSP-E300型DSP实验系统采用四层板制作工艺,采用模块化设计,电路精简,产品的性价比和系统的稳定性及抗干扰性达到最优。该产品适合《DSP原理与应用》等课程的实验教学以及相关课题的研究和开发。

二、结构简介:

EL-DSP-E300型DSP实验开发系统由DSP CPU板、TFT-LCD单元、键盘输入单元、A/D转换单元、D/A转换单元、USB单元、语音单元、8路开关量输入输出和8个LED数码管显示输出单元、信号扩展单元、波形产生单元、CPLD逻辑单元、及e-lab扩展总线组成。如下图示:

EL-DSP-E300实验开发系统 5 CPU单元USB单元CPLD单元信号扩展单元TFT-LCD单元IO及LED显示单元E_LAB扩展单元A/D单元语音单元拨码控制键盘单元波形产生单元D/A单元图1.1 EL-DSP-E300结构图

三、硬件资源:

 CPU单元:CPU板可以更换, 系统支持Techv全系列的CPU板,包括Techv-6713、

Techv-6701/6201、Techv-5402B(P)、Techv-5409B(P)、Techv-5410B(P)、Techv-5416B(P)、Techv-5509、Techv-2407、Techv-2812等。  键盘单元:4X4键盘,用户可自定义键值,由CPLD软件译码控制。  TFT-LCD单元:本单元的液晶屏采用台湾晶采光电科技股份有限公司的

AM-176220JTNQW ,该款彩屏可视面积为2.0英寸,白色LED背光,176 x 220点阵,26万真彩显示;支持8/9/16/18位并行接口设计,驱动芯片一般采用HX8039。本设计采用16位并行接口模式。

 A/D转换单元:A/D转换芯片采用ADI公司的AD7887。该芯片是一款高速、低

功耗、12位的模数转换器,其供电电压范围为2.7V~5.25V。具有125kSPS的吞吐率,转换的信号速率可达2.5MHz。AD7887具有单/双通道两种工作模式和灵活的电源管理模式,并可通过芯片上的控制寄存器进行转换。在缺省的单通道模式中,AD7887还可作只读ADC。采用SPI串行接口与DSP连接。

EL-DSP-E300实验开发系统 6  D/A转换单元:DA转换芯片采用ADI公司的AD7303。该芯片是单极性、双通道、

串行、8位DA转换器,操作串行时钟最快可达30M,DA转换时间1.2μs。由CPLD软件译码对其关键信号进行控制。

 E-lab扩展单元:便于用户扩展和二次开发,支持本公司的e-lab系列扩展模

块,该系列模块 包括通用接口模块、人机界面模块、信号变送隔离模块、执行机构模块、通信模块、传感器模块共六大类四十多种模块,完全满足本专科院校学生课程设计和毕业设计的需要。

 数字量输入输出单元:8位开关量输入,8位LED灯输出,8位输入二号孔,8

位输出二号孔。

 语音单元:本单元的芯片采用TLV320AIC23,AIC23是TI推出的一款高性能的

立体声音频Codec芯片,内置耳机输出放大器,支持MIC和LINE IN两种输入方式(二选一),且对输入和输出都具有可编程增益调节。可以在8K到96K的频率范围内提供16bit、20bit、24bit和32bit的采样,ADC和DAC的输出信噪比分别可以达到90dB和100dB。

 USB单元:USB接口芯片采用南京沁恒公司的CH375。CH375是一个USB总线的

通用接口芯片,支持USB-HOST 主机方式和 USB-DEVICE/SLAVE 设备方式。在本地端,CH375具有8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到DSP控制器的系统总线上。在USB 主机方式下,CH375还提供了串行通讯方式,通过串行输入、串行输出和中断输出与DSP等相连接。  CPLD逻辑单元:该单元主要完成资源分配、译码工作、键盘扫描。芯片采用

XILINX公司的XC95144XL-TQ100。

 波形产生单元:利用此单元产生一组方波及正弦波(频率为240Hz—250Hz),

方便用户使用。

 信号扩展单元:为方便用户使用,一些关键信号由二号孔引出。

 CIO0和CIO1:是通过CPLD译出的双向IO口:即可用作输入,也可用作输出。

译码地址是:基地址+0006H;此地址可读可写。可运行调试程序CIO对其功能进行测试。

四、器件片选地址(CPLD译码)说明:

1. 说明:E300上面的器件选择地址由CPU板分配给E300的区选基地址 + ADDR + OFF_ADDR构成。

ADDR 代表E300上面的A11A10A9地址线 EL-DSP-E300实验开发系统 7 OFF_ADDR CPLD内部片选基地址:CPLD_BASE_ADDR

 CPLD内部控制寄存器(只写):D7-D0 默认值为:11111100 CPLD_CTRL_REG(W) : CPLD_BASE_ADDR + (OFF_ADDR = 01)

D7 7303_CS 1 D6 7303_DIN 1 D5 7303_SCLK 1 D4 AIC23_CS 1 D3 AIC23_CLK 1 D2 AIC23_DIN 1 D1 D0 代表E300上的A2A1地址线 基地址+(ADDR = 000) LCD_RST LED_CTRL 0 0  CPLD内部状态寄存器(只读):

CPLD_ST_REG(R): CPLD_BASE_ADDR + (OFF_ADDR = 01) D7 D6 D5 D4 D3 D2 KEY_FLAG D1 LCD_ndef D0 LCD_OUT  KEY地址分配:

KEY_DAT_REG(R): CPLD_BASE_ADDR + (OFF_ADDR = 10); KEY中断使用XINT1,低电平有效(要求SW2.2:OFF); 通过读取状态标志位KEY_FLAG可以判断当前键盘的状态;  IO输入/输出部分:

244输入地址(R):基地址+(ADDR = 001),读有效; 273输出地址(W):基地址+(ADDR = 001),写有效;  TFT-LCD部分:

LCDCS(R/W) : 基地址+(ADDR = 010);  USB部分:

USB_CS(W/R) : 基地址+(ADDR = 011);

USBINT中断分配给XINT0,低电平有效(要求SW2.1:OFF);  ELAB地址空间分配: ECS0:基地址+(ADDR = 100); ECS1:基地址+(ADDR = 101); ECS2:基地址+(ADDR = 110); ECS3:基地址+(ADDR = 111);

EL-DSP-E300实验开发系统 8 2.DSP-TMS320F2812CPU板分配给E300的器件选择地址列表如下:

DSP-TMS320F2812CPU板+E300底板 CPU板分配给E300的区选基地址 0x2000 E300上的SW4第二位置ON,其余置OFF ADDR FF_ADDR CPLD_BASE_ADDR 器件选择地址公式 IO输入/输出部分 代表E300上面的A11A10A9地址线 代表E300上的A2A1地址线 基地址+(ADDR = 000) CPU板分配给E300的区选基地址 + ADDR + OFF_ADDR 244输入地址(R):0x2200(读允许) 273输出地址(W):0x2200(写允许) 命令地址:0x2400(读写允许) TFT-LCD部分 数据地址:0x2401(读写允许) 命令地址:0x2600(读写允许) USB部分 数据地址:0x2601(读写允许) KEY地址分配 CPLD内部控制寄存器 0x2004(读允许) 0x2002(写允许) CPLD内部状态寄存器(只读) 0x2002(读允许) ECS0 ECS1 ELAB地址空间分配 ECS2 ECS3 0x2c00 0x2e00 0x2800 0x2a00 五、拨码开关介绍:

1.下面是SW1-SW7及JP1的介绍(E300)

 SW1:外部中断输出到外扩二号孔BINTx的控制拨码开关,有且只能有一位置ON;

各位与外部中断对应关系如下表所示: SW1 1位 ON 输出外部中断0到二号孔BINTx OFF 禁止外部中断0输出到二号孔BINTx EL-DSP-E300实验开发系统 9 2位 3位 4位 输出外部中断1到二号孔BINTx 输出外部中断2到二号孔BINTx 输出外部中断3到二号孔BINTx 禁止外部中断1输出到二号孔BINTx 禁止外部中断2输出到二号孔BINTx 禁止外部中断3输出到二号孔BINTx  SW2:控制外部中断的拨码开关(如果SW3.4=OFF)。 SW2 1位 2位 3位 4位 保留 保留 保留 保留 ON OFF 外部中断0分配给USB中断使用 外部中断1分配给KEY中断使用 外部中断2分配给USB中断使用 外部中断3分配给KEY中断使用  SW2:控制外部中断的拨码开关(如果SW3.4=ON)。 SW2 1位 2位 3位 4位 保留 保留 保留 保留 ON OFF 外部中断0分配给KEY中断使用 外部中断1分配给USB中断使用 外部中断2分配给KEY中断使用 外部中断3分配给USB中断使用  SW3:CPU选择拨码开关(暂时不用)。 SW3 1位 2位 3位 4位 ON 保留 保留 保留 见SW2说明 OFF 保留 保留 保留 见SW2说明  SW4:CPU片选选择拨码开关,1~4位有且只能有一位置ON。 SW4 1位 2位 3位 使用BCS0 使用BCS1 使用BCS2 ON 禁止使用BCS0 禁止使用BCS1 禁止使用BCS2 OFF EL-DSP-E300实验开发系统 10 4位 使用BCS3 禁止使用BCS3  SW5:IO单元拨码开关与244的输入连接,当SW7的各位置ON时,拨码开关K1~K8

与244的各位输入相连,此时IN1~IN8二号孔不要接入输入信号;当SW7的各位置OFF时,拨码开关K1~K8与244的各位输入断开,此时可通过IN1~IN8二号孔输入信号。

 SW6:语音单元McBSP1接口控制,置ON时此接口与语音单元相连,置OFF时,与

此单元断开。

 SW7:AD单元McBSP0接口控制,当全部置ON时,DSP的McBSP0接口与AD单元相

连;置OFF时,与此单元断开。  SW8: SW8.1置ON;SW8.2置OFF;

 JP1:AD的IN2、Vref选择输入,给出的例子中只使用IN0,JP1短接到Vref。 2. DSP-TMS320F2812CPU板+E300底板实验时拨码开关的设置表如下:(注意:设置仅于所提供的样例实验)

SW1 SW2 SW3 SW4 SW5 SW6 SW7 SW8 JP1 全部置OFF 全部置OFF 全部置OFF 第2位置ON,其余位置OFF 全部位置ON 全部位置ON 全部位置ON SW8.1置ON;SW8.2置OFF JP1短接到Vref 六、E_LAB总线接口介绍(E300板上):

通过E_LAB接口,可扩展我公司的E_LAB扩展模块.  扩展接口引脚介绍: 1. J8管脚介绍:

EL-DSP-E300实验开发系统 11

2. J9管脚介绍:

说明: 1. E_LAB管脚中 A:代表地址线;D:代表数据线;R/W:代表读写信号;ECS:

EL-DSP-E300实验开发系统 12 代表片选信号

2. E_LAB扩展板在底版上和Techv扩展板共用一个物理空间,同时只能扩展一种扩展板。

 E_LAB地址空间分配:

ECS0 ECS1 ELAB地址空间分配 ECS2 ECS3  我公司开发的大量E_LAB接口模块,清单如下: 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 0x2800 0x2a00 0x2c00 0x2e00 扩展模块名称 8251/8255扩展 8259/8279扩展 RS232通信模块 RS485M通信模块 8入8出增益可调模块 点阵LED 点阵式LCD 12入12出光耦隔离模块 继电器应用模块 8个LED 7段数码管及4*4键盘 LED/电平输入输出 V/F、F/V转换模块 三相步进电机模块 GPS模块 GSM/GPRS模块 序号 20 21 22 23 24 25 26 27 28 29 30 31 32 33 扩展模块名称 8路并行A/D、D/A模块 PWM模块 USB模块 两相步进电机模块 温度控制模块 以太网模块 直流调压调速电机模块 非接触式IC卡及驱动 接触式IC卡 CAN总线通信模块 无线接发模块 CPLD模块 MODEM模块 12位并行A/D、D/A模块 热敏电阻、温度开关、数字温度传15 34 感器模块 EL-DSP-E300实验开发系统 13 16 17 18 19 微型打印机应用模块 4位半斜率积分A/D 7279键盘控制模块 7279及串行I/O扩展 35 36 37 38 红外传感模块 可燃气体、霍尔电流传感器模块 热电阻、半导体传感器模块 热电偶、半导体传感器模块 说明:上述模块种类还在不断的开发,用户也可以根据需要自己定制。

1.2 Techv_2812CPU板介绍

一、 F2812EVM概况

F2812EVM是一个独立的嵌入式应用板卡,用户可以通过它直接验证自己的算法,或在此基础上进行最终产品的集成或开发。板卡上面丰富的资源能够满足大多数应用场合的需求,高容量的存储器能够满足各种应用代码的调试。完全的信号扩展使用户更方便进行二次开发。该产品灵活方便的外部接口,可以作为工业控制特别是电机控制系统的集成的配套产品。

选用该板卡可以大大降低系统的研发周期和风险,由于其高的可靠性,为设备生产厂家和最终用户提供了可靠的平台。同时为了简化代码开发,缩短编辑调试时间,提供了方便的接口和大容量的片上RAM存储器。并可以使用C编辑器进行代码的调试。 1. F2812EVM主要特点:

 高性能32位定点TMS320F2812数字信号处理器,系统周期为6.67ns的处理速度,

运算速度可达到150MIPS。

 16路12bitA/D转换器,内建2个采样保持器,最快的转换速度(S/H+转换)为

80ns;

 内部存储器:18KSRAM(包括544字的DRAM),以及内建128K可加密的FLASH,编

程电压为3.3V

EL-DSP-E300实验开发系统 14  板上零等待128KSRAM

 双路RS-232增强型主机通信接口可实现异步通信  CAN总线接口,可做终端点或其他任意节点  1个增强型多通道缓寸串口(McBSP);  板上30MHZ集成晶振;

 可编程8位拨位开关,4位指示灯

 4个数据、地址、I/O以及控制信号扩展接口,扩展所有DSP的功能引脚;  板上IEEE1149.1JTAG连接器接口  9pin串口电缆(板上接口是(“male”);  可单电源5V供电,也可通过扩展接口从扩展板 2. F2812EVM实型图如下:

3. F2812EVM器件分布图如下:

EL-DSP-E300实验开发系统 15

4. F2812系统功能框图如下:

5. F2812接口说明:

标号 J1 J2 J4 J6 J12 JMUP1,2 含 电扩扩扩扩义 源展展展展跳 插接接接接线 口 口 口 口 口

二、 F2812EVM操作

主要介绍F2812评估板的主要部件及其使用方法。并提供相应的接口信息。 F2812EVM主要由以下几个部分组成:

S SW1 JTAG1 JTAG2 CPLD仿真器接口 复拨码仿真器位开关接口 按选择 纽 EL-DSP-E300实验开发系统 16  电源接口  复位电路  JTAG接口  用户开关和LED  串行通信接口  CAN总线接口  存储器接口

 逻辑译码CPLD变换单元

 扩展接口(J2,J4,J6,J12)信息 1. 电源接口

F2812采用3.3V和1.8V双电源供电。本系统采用数字模拟地分离设计。电压转换电路将输入的5V电压转换为3.3V和1.8V。电压转换芯片采用TI的TPS76D318。电路如下:

评估板的CPU电源与外围电源分开供电,外围3.3V由下面电路提供,转换

芯片采用LT1086。电路如下:

EL-DSP-E300实验开发系统 17 2. 复位电路如下:

3. JTAG接口电路

F2812评估板模块支持14pinJTAG的接口,引脚分配如下图所示:

4. 用户开关和LED灯

TMS320F2812EVM有8个开关和4个LED灯,这些设备都连接到CPLD上,用

户可以通过编程来设定其功能

SW1的设置:

拨码开关 第1位 第2位 其他没有设定 拨码开关如下:

位置 ON OFF ON OFF 使用时一般拨到OFF 功能 不使能内部锁相模块 使能内部锁相模块 MC模式 MP模式 EL-DSP-E300实验开发系统 18

注意:拨码按下时表示ON,注意实物的箭头指向

LED说明: LDED1 外围3.3V电源指示,亮表示外围3.3V电源供电正常 LDED2 DSP的1.8V电压指示,亮表示1.8V供电正常 LDED3 DSP的3.3V电压指示,亮表示3.3V供电正常 LDED4 表示复位状态.亮:不复位;灭:复位 LDED5 表示是否使用DSP内部的锁相模块.亮表示不使用,灭:使用 LDED6 DSP的工作模式,亮:MC模式;灭:MP模式 LDED7 DSP的工作时钟,有时钟信号闪烁,并且闪烁频率随DSP工作时钟的改变而不同 注:以上LED(除了LED1﹑LED2﹑LED3)的功能是通过CPLD编程实现的,用户可以编程改变这些灯的功能. 5. 串口通信接口

F2812DSP在片上有两个异步串行通信接口。通过CPU板上的J10同外部主机或其他设备进行通信,另外一个异步串口引到了J12上。

EL-DSP-E300实验开发系统 19

6. CAN总线接口

EVM320F2812有一个CAN总线接口提供高速串行通信接口

上图为CAN总线接口电路图,板上设计了终端节点信号反射回收电阻R25,默认情况通过短接跳线JUMP1来接入此电阻,因此默认为该模块为终端节点。如果不选用终端节点,则应将JUMP1跳线帽去掉,其中R25为120欧姆。 7. 存储器接口

 TMS320F2812的存储器分配表如下: 注意:

1. 存储器不能任意调整

2. 保留区为今后的扩展做准备,用户应用时不应该访问这些区域

3. 启动代码和片外扩展空间7 由MP/MC的引脚状态来选择其中之一,不

能同时映射到DSPD的地址空间

4. 外设寄存器组0、1和2仅仅作为数据存储器访问,不能作为程序存储器访问

5. 保护 表示是为了配合流水线的工作在读操作之后的写操作将会被妥善的处理

6. 一部分存储器被EALLOW保护后,是不希望在初始化之后再次改变他们

EL-DSP-E300实验开发系统 20 的值(请详细参看TMS320F2812数据手册) 7. 片外空间0,1,6和7共享相同的片选信号,因此,他们虽然地址不同,但却是相同存储器的镜像(mirrored locations). 块起始地址 0x00 0000 片内存储空间(on-chip) 数据空间 程序空间 M0向量-随机存储器(32*32)(当VMAP=0时有效) M0 SRAM(单存取随机存储器) 1K*16 M1 SRAM(单存取随机存储器) 1K*16 外设寄存器组 0(2K*16) 外设向量PIE 无效 Vector2k*16 片外存储空间(XINTF) 数据空间 程序空间 0x00 0040 0x00 0400 0x00 0800 保留 0x00 0D00 当(VMAP=1,ENPIE=1时有效) 相当于TMS320F24x/LF240x数据存储空间 0x00 0E00 保留 0x00 2000 外设寄存器0x00 6000 组1(4K*16)(受保护) 外设寄存器0x00 7000 组1(4K*16)(受保护 0x00 8000 L0 SARAM(单存取随机存储器)4K*16(安全块) L1 SARAM(单存取随机存储器)4K*16(安全块) 片外空间XZCS0AND1) 片外空间0(8K*16 0x00 2000 1(8K*16 0x 00 4000 XZCS0AND1)(保护) 保留 0x00 9000 片外空间2(0.5M*16 0x00 A000 保留 XZCS2)片外扩展存储器(256K*16) 片外空间6(0.5M*16XZCS6AND7) 0x3D 7800 OTP ROM(1K*16,)(安全块) 保留 0x08 0000 0x1 00000 0x1 EL-DSP-E300实验开发系统 21 80000 0x3D 7C00 0x3F 8000 0x3F A000 保留 H0 SARAM(单存取随机存储器) (8K*16)(安全块) 保留 启动代码(4K*16)当MP/MC=0时有效 片外空间70x3FC000 相当于TMS320F24x/LF240x程序存储空间 0x3F F000 (16K*16XZCS6AND7)当MP/MC=1时有效 外部扩展向量(32*32)VMAP=1,MP/MC=1,ENPIE=0时有效 0x3F FFC0 BROM向量,(32*32)当VMAP=1,MP/MC=0,ENPIE=0时有效  EWM存储空间分配

EVM包含零等待周期的两片64K数据存储器,芯片型号为ISLV6416。提供总共128K的外部存储器。在系统开发工程中,内部的存储器往往要优先使用,这样可以能够很好的提高系统的运行效率。

此外,外部存储器的速度受等待周期的影响。F2812能够内部产生外部接口(XINTF)的等待周期。片外等待周期由片内等待产生寄存器确定。为了能够获得零等待的存储器接口,系统必须正确的配置等待寄存器。可以通过外部的ready信号来产生等待周期

外部存储器接口译码通过XC95144XL来完成。

2812的存储器采用统一编址方式,存储器由两种配置方式,其模式配置通过拨码开关SW1的第二位来选择。如果选择ON位置,DSP工作在计算机模式并且启动内部 的BOOT模式,此时可以选择从内部的FLASH运行程序,如果此位置OFF,则内部的FLASH被屏蔽并且XINTF ZONE7空间被使能。如下图所示两种存储器映射空间。 评估板存储映射空间分配如下:

起始地址 Origin=0F000h Origin=3F000h 长度 length=01000h length=003FC0h 描述 片外RAM共64K*/ 片外RAM共16K-64Byte*/ Origin=170000h Origin=3FFFC0h

8. CPLD逻辑译码电路

length=00C0000 length=000040h 片外RAM共48k*/ 复位向量32x32(片外) U10 U9 芯片序号 U9 U10 EL-DSP-E300实验开发系统 22

I/O地址范围为:0x002000---0x003fff,共8K 程序存储器地址范围为:0x170000---0x17bfff(48k)和 0x3fc000---0x3fffff(16k),共64k 数据存储器地址范围为:0x0f0000---0x0fffff,共64k 9. 扩展接口(J2,J4,J6,J12)信息:

A. J2(J3)引脚定义—中断、控制逻辑扩展接口

EL-DSP-E300实验开发系统 23

B. J4(J5)引脚定义—扩展总线接口

C. J6(J7)引脚定义—AD、事件管理单元、

EL-DSP-E300实验开发系统 24

D. J12---SPI、事件管理单元、电机控制引脚线接口

EL-DSP-E300实验开发系统 25  J2,J4,J6,J12引脚具体定义说明如下:

注意:下表中“F2812用到的管脚含义”一栏中是TMS320F2812板子中用到的引脚,其他未用到的管脚用“NC”来表示。 “管脚名”是通用扩展总线中的引脚名称,请阅读时请注意区分。  J2定义说明: 管脚号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 管脚名 +12V -12V GND GND +5V +5V GND GND +5V +5V CPU1 HOLD CPU2 HOLDA CPU3 BUSREQ CPU4 CPU5 +3.3V +3.3V CLKX0 CLKS0 F2812用到的管脚含义 IO NC NC 地 地 +5V电源 +5V电源 地 地 +5V电源 +5V电源 NC BHOLD NC HOLDA NC NC NC CPU种类指示信号 +3.3V电源 +3.3V电源 SPICLK NC O I O O O O O O IO I +12V电源 -12V电源 地 地 +5V电源 +5V电源 地 地 +5V电源 +5V电源 CPU种类指示信号 外部总线保持信号 CPU种类指示信号 总线保持响应信号 CPU种类指示信号 外部总线请求信号 CPU种类指示信号 CPU种类指示信号 +3.3V电源 +3.3V电源 McBSP0输出位时钟 McBSP0外部输入时钟 备注 EL-DSP-E300实验开发系统 26 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 FSX0 DX0 GND GND CLKR0 NC FSR0 DR0 GND GND CLKX1 CLKS1 FSX1 DX1 GND GND CLKR1 NC FSR1 DR1 GND GND TOUT0 TINP0 NMI INT1/EINT5 SPISTE SPISIMO 地 地 SPICLK 空脚 SPISTE SPIOMI 地 地 MCLKXA NC MFSXA MDXA 地 地 MCLKRA NC MFSRA MDRA 地 地 TAPWM/TACMP NC EXINT NMI EXINT1 IO O IO IO I IO I IO O IO IO I O I I I McBSP0输出帧时钟 McBSP0输出数据 地 地 McBSP0输入位时钟 空脚 McBSP0输入帧时钟 McBSP0输入数据 地 地 McBSP1输出位时钟 McBSP1外部输入时钟 McBSP1输出帧时钟 McBSP1输出数据 地 地 McBSP1输入位时钟 空脚 McBSP1输入帧时钟 McBSP1输入数据 地 地 定时器输出0 定时器输入0 不可屏蔽中断 中断 EL-DSP-E300实验开发系统 27 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 XF/TOUT1 BIO/TINP1 GND GND INT0/EINT4 IACK NC CS2 MSC IAQ RESET DBINT/PD GND GND CNTL1 CNTL0 STAT1 STAT0 INT2/EINT6 INT3/EINT7 CS3 CS1 DMAC3 DMAC2 DMAC1 DMAC0 BXF BIO 地 地 EXINT0 NC NC NC NC NC EX_ RS NC 地 地 CNTL1 CNTL0 STAT1 STAT0 EXINT2 EXINT2 EXCS3 EXCS2 NC NC NC NC O I I O O O O O O O I I I I O O O O O O O/定时器1输出 IN/定时器1输入 地 地 中断 中断响应信号 空脚 片选信号2 状态完成信号 地址采集信号 复位信号 子板中断/电源指示 地 地 子板控制信号1 子板控制信号0 子板状态信号1 子板状态信号0 中断 中断 片选信号3 片选信号1 DMA状态信号 DMA状态信号 DMA状态信号 DMA状态信号 EL-DSP-E300实验开发系统 28 75 76 77 78 79 80 DB_DET GND GND CLKOUT GND GND DB_DET 地 地 CLKOUT 地 地 I O  J4引脚定义说明: 管脚号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 管脚名 +5V +5V A19|XA21 A18|XA20 A17|XA19 A16|XA18 A15|XA17 A14|XA16 A13|XA15 A12|XA14 GND GND A11|XA13 A10|XA12 A09|XA11 A08|XA10 A07|XA09 A06|XA08 F2812用到的管脚含义 +5V电源 +5V电源 NC BA18 BA17 BA16 BA15 BA14 BA13 BA12 地 地 BA11 BA10 BA9 BA8 BA7 BA6 IO O O O O O O O O O O O O O O +5V电源 +5V电源 地址线 地址线 地址线 地址线 地址线 地址线 地址线 地址线 地 地 地址线 地址线 地址线 地址线 地址线 地址线 备注 子板检测信号 地 地 时钟 地 地 EL-DSP-E300实验开发系统 29 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 A05|XA07 A04|XA06 +5V +5V A03|XA05 A02|XA04 A01|XA03 A00|XA02 A21|BE3 A20|BE2 NC|BE1 NC|BE0 GND GND D31 D30 D29 D28 D27 D26 D25 D24 +3.3V +3.3V D23 D22 BA5 BA4 +5V电源 +5V电源 BA3 BA2 BA1 BA0 NC NC NC NC 地 地 NC NC NC NC NC NC NC NC +3.3V电源 +3.3V电源 NC NC O O O O O O O O O O IO IO IO IO IO IO IO IO IO IO 地址线 地址线 +5V电源 +5V电源 地址线 地址线 地址线 地址线 地址线 地址线 地址线 地址线 地 地 数据线 数据线 数据线 数据线 数据线 数据线 数据线 数据线 +3.3V电源 +3.3V电源 数据线 数据线 EL-DSP-E300实验开发系统 30 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 D21 D20 D19 D18 D17 D16 GND GND D15 D14 D13 D12 D11 D10 D9 D8 GND GND D7 D6 D5 D4 D3 D2 D1 D0 NC NC NC NC NC NC 地 地 BD15 BD14 BD13 BD12 BD11 BD10 BD9 BD8 地 地 BD7 BD6 BD5 BD4 BD3 BD2 BD1 BD0 IO IO IO IO IO IO IO IO IO IO IO IO IO IO IO IO IO IO IO IO IO IO 数据线 数据线 数据线 数据线 数据线 数据线 地 地 数据线 数据线 数据线 数据线 数据线 数据线 数据线 数据线 地 地 数据线 数据线 数据线 数据线 数据线 数据线 数据线 数据线 EL-DSP-E300实验开发系统 31 71 72 73 74 75 76 77 78 79 80 GND GND RD WE OE RDY MSTRB CS0 GND GND 地 地 EX_RD EX_WE EX_OE BREADY NC EXCS1 地 地 O O O I O O  J6定义说明 管脚号 1 2 3 管脚名 +5V +5V AIN0 F2812用到的管脚含义 IO +5V电源 +5V电源 ADCIN00 I DSP-TMS320F2812板子芯片ADCINA0和ADCINA1引出脚 4 AIN1 ADCIN01 I DSP-TMS320F2812板子芯片ADCINA2和ADCINA3引出脚 5 AIN2 ADCIN02 I DSP-TMS320F2812板子芯片ADCIN4和ADCINA5引出脚 6 AIN3 ADCIN03 I DSP-TMS320F2812板子芯片ADCINA6和ADCINA7引出脚 7 AIN4 ADCIN04 I DSP-TMS320F2812板子芯片ADCINB0和ADCINB1引出脚 8 AIN5 ADCIN05 I DSP-TMS320F2812板子芯片ADCINB2和ADCINB3引出脚 备注 地 地 读信号 写信号 使能信号 准备好信号 存储器选通信号 片选信号0 地 地 EL-DSP-E300实验开发系统 32 9 AREFB ADCIN06 I DSP-TMS320F2812板子芯片ADCINB4和ADCINB5引出脚 10 AREFT ADCIN07 I DSP-TMS320F2812板子芯片ADCINB6和ADCINB7引出脚 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 AVCOM TOUT2 TOUT3 TOUT4 ExINT4 ExINT5 ExINT6 ExINT7 nGCS4 nGCS5 nGCS6 nGCS7 nWBE0 nWBE1 nWBE2 nWBE3 IO0 IO1 IO2 IO3 IICSCL IICSDA NC T2PWM/T2CMP T3PWM/T3CMP T4PWM/T4CMP EXINT4 EXINT5 EXINT6 EXINT7 EXCS4 EXCS5 EXCS6 EXCS7 NC NC NC NC IO0 IO1 NC NC NC NC O O O IO IO IO IO IO IO IO IO IO IO Techv扩展板通用管脚 GP Timer2 GP Timer3 GP Timer4 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 连接到CPLD管脚 连接到CPLD管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 EL-DSP-E300实验开发系统 33 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 RXD1 TXD1 nCTS1 nRTS1 SDDAT0 SDDAT1 SDDAT2 SDDAT3 SDCLK SDCMD SYS SYS SYS CODCLK VR0 VR1 VR2 VR3 VR4 VG0 VG1 VG2 VG3 VG4 VG5 VB0 SCIRXDB BSCITXDB NC NC NC NC NC NC NC NC NC NC NC NC NC NC NC NC NC NC NC NC NC NC NC NC Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 EL-DSP-E300实验开发系统 34 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 VB1 VB2 VB3 VB4 XN YN YP XP VM VFRAME VLINE VCLK VD0 VD1 VD2 VD3 VD4 VD5 VD6 VD7 GND GND NC NC NC NC NC NC NC NC NC NC NC NC NC NC NC NC NC NC NC NC GND GND Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 Techv扩展板通用管脚 GND GND  J12引脚定义说明(DSP芯片部分引脚线)

注意:这些引脚直接和F2812芯片引脚相连接,因此,这些引脚为TTL3.3V标准,其输

出最高电压为3.3V,如果要接入5V器件,则需要外接电平转换电路。 管脚序号 代号 含义 备注 EL-DSP-E300实验开发系统 35 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 +5V +5V GND GND VCC3.3D VCC3.3D TDIRB TDIRA TCLKINB TCLKINA GND GND PWM6 PWM5 PWM4 PWM3 PWM2 PWM1 GND GND PWM12 PWM11 PWM10 PWM9 PWM8 PWM7 +5V电源 +5V电源 接地 接地 +3.3V +3.3V 定时器方向B 定时器方向A 时钟输入B 时钟输入A 接地 接地 PWM输出引脚6 PWM输出引脚5 PWM输出引脚4 PWM输出引脚3 PWM输出引脚2 PWM输出引脚1 接地 接地 PWM输出引脚12 PWM输出引脚11 PWM输出引脚10 PWM输出引脚9 PWM输出引脚8 PWM输出引脚7 EL-DSP-E300实验开发系统 36 27 28 29 30 31 32 33 34 35 36 37 38 39 40  说明: 上述J6,J8,J10,J12管脚接口是Tech_v总线接口,该接口是和TI公司DSK兼容的信号扩展接口,可连接我公司的图象处理、高速AD、DA、USB和以太网等扩展板,也可以连接TI公司的标准DSK扩展信号板.

DSP实验

在打开实验箱电源的前提下: 1、 打开CCSStudio3.3

2、 选择debug,选择connect,如果在左下角显示connecting,表示与仿真器连接正常。 实验一、存储器实验。

该实验不用改变硬件,实验内容为在数据存储器的指定地址写上特定数据如0xAAAA,然后将该数据搬移到其他位置。 源程序:(example_dsp281x_mem.c) void main(void) {

GND GND CAP6/QEP12 CAP3/QEP11 CAP5/QEP4 CAP2/QEP2 CAP4/QEP3 CAP1/QEP1 GND GND SPISIMO SPISOMI SPICLK SPISTE 接地 接地 CAP6/QEP12输出引脚 CAP3/QEP11输出引脚 地CAP5/QEP4输出引脚 CAP2/QEP2输出引脚 CAP4/QEP3输出引脚 CAP3/QEP1输出引脚 接地 接地 SPISIMO引出脚 SPISOMI引出脚 SPICLK输出脚 SPISTE引出脚 EL-DSP-E300实验开发系统 37

int i;

volatile unsigned int *room = (volatile unsigned int *)0x3f9020; volatile unsigned int *room2= (volatile unsigned int *)0x3f902F; 建立可变数据类型的两个指针,指向两个地址。

// Initialize System Control:

// PLL, WatchDog, enable Peripheral Clocks InitSysCtrl();

对看门狗,系统等进行初始化 // Disable CPU interrupts DINT; 禁止中断

// Disable CPU interrupts and clear all CPU interrupt flags: 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中定义。

其定义如下:

void InitSysCtrl(void) {

EL-DSP-E300实验开发系统 38

// On F2812/F2810 TMX samples prior to rev C this initialization was // 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 InitPeripheralClocks(); }

以上程序完成关看门狗,初始化时钟,初始化外设时钟。(外设时钟是片内外设的时钟,分高速和低速)

——————————————————————————————————————— 其中

void InitPeripheralClocks(void) {

EALLOW;

// HISPCP/LOSPCP prescale register settings, normally it will be set to default values SysCtrlRegs.HISPCP.all = 0x0001; SysCtrlRegs.LOSPCP.all = 0x0002;

// Peripheral clock enables set for the selected peripherals. 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是一个联合体。

——————————————————————————————————————

EL-DSP-E300实验开发系统 39 void InitPll(Uint16 val) {

volatile Uint16 iVol;

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++) { } 等待。 } }

观看实验结果方法:

1、 在CCS环境中,进行编译,选择project中的build。如果没有错,进行下一步。 2、 在file中选择load program。在文件的目录下寻找对应得 .Out文件。 3、 在view中选择memory。选择数据,在对话框中输入0x3f9010。 4、 在debug目录下选择run,可观察到数据变化。

实验内容:

通过修改上述源程序,

实现在0x3f9020开始的位置放置8个数,0x3211。 在0x3f902f开始的位置放置8个数,0x1111。

将0x3f9020位置开始的8个数和0x3f902f位置开始放置的8个数相加,放到0x3f9010开始的8个地址中。

EL-DSP-E300实验开发系统 40

实验二 拨码开关实验 硬件不用调整。

该程序完成将拨码开关的信息读入DSP,然后再将该信息回写,控制led灯。 关键问题:读入的地址和输出的地址用的同一个地址。为什么呢?

其拨码开关是通过74LS244和总线相连,灯是通过74LS273相连总线。读时将273设为无效,244有效,拨码开关的数据上总线。写时,244无效,273有效,将数据发送出,同时锁存。需要3根控制线。按时序操作。对于本试验箱来讲,DSP将控制信号发给CPLD,在对一个特定地址进行读写时(0x2200),CPLD内部通过编程,实现对读写信号的不同操作。在DSP读0x2200时,CPLD将244有效。当DSP写0x2200时,CPLD将244无效,同时273有效,同时开关锁存一次,同时保持锁存。

主要程序如下:

/*******************************头文件****************************/ #include \"DSP281x_Device.h\" // DSP281x Headerfile Include File #include \"DSP281x_Examples.h\" // DSP281x Examples Include File

/****************************主程序*******************************/ void main(void) {

unsigned int temp; temp = 0;

InitSysCtrl();//初始化PLL,WatchDog,使能外围时钟,该初始化文件在\"DSP281x_SysCtrl.c\"中

DINT;//关闭CPU中断

// Initialize PIE control registers to their default state. // The default state is all PIE interrupts disabled and flags // are cleared. InitPieCtrl();

IER = 0x0000;//关闭中断和清除所有中断标志 IFR = 0x0000;

// Initialize the PIE vector table with pointers to the shell Interrupt // Service Routines (ISR). InitPieVectTable();

EL-DSP-E300实验开发系统 41 for(;;) { asm(\" nop \"); temp = *(int *)0x2200&0x00ff; //读入0x2200地址的开关量值并赋给temp asm(\" nop \"); * (int *)0x2200 = temp; //temp值输出0x2200地址的LED灯 asm(\" nop \"); } }

其中InitPieVectTable()在文件DSP281x_PieVect.c中。 void InitPieVectTable(void) { int16 i; Uint32 *Source = (void *) &PieVectTableInit; 在这里取PieVectableInit的地址, Uint32 *Dest = (void *) &PieVectTable; 在这里取PieVectTable的地址 他们都应该是全局变量。 EALLOW; for(i=0; i < 128; i++) *Dest++ = *Source++; EDIS; // Enable the PIE Vector Table PieCtrlRegs.PIECRTL.bit.ENPIE = 1;

变量pieVectTableInit在文件DSP281x_PieVect.c中。PieVectTable在DSP281x_PieVect.h中定义,在最后2行。

他们的具体地址可以由.cmd文件来确定。

实验内容:

通过修改以上程序实现1号开关动作时,2号灯亮,2号开关动作时,3号灯亮,*****,等。在第8号开关动作时,第1号灯亮。

需要判断是高电平亮,还是低电平亮,可以使用中断调试。在运行状态,在需要设置断

EL-DSP-E300实验开发系统 42 点的位置的右边,双击,就可以产生红点。表明设置了断点。在view目录下,打开watch window,输入需要观察的变量,就可看到其变化,然后,在debug目录下点run,在断点处,程序会停下来,可以观察temp变量来判断。

实验三、cpu定时器实验

该实验以中断的方式,标记定时器中断的次数,根据不同的次数,点亮不同的灯。原程序如下:

/*************************头文件*********************************/ #include \"DSP281x_Device.h\" // DSP281x Headerfile Include File #include \"DSP281x_Examples.h\" // DSP281x Examples Include File

/*************************定义函数说明***************************/ // Prototype statements for functions found within this file. interrupt void cpu_timer0_isr(void); 声明中断服务程序。

void ConfigCpuTimer(struct CPUTIMER_VARS *Timer, float Freq, float Period); 该函数在DSp281x_cputimers.c中定义 CpuTimer0也在该文件中定义。

/*************************主程序*********************************/

CpuTimer0是CPUTIMER_VARS的一个对象,CPUTIMER_VARS是一个结构体,在DSp281x_cputimers.h中定义。 void main(void) {

InitSysCtrl(); DINT; 关中断

InitPieCtrl();

// Disable CPU interrupts and clear all CPU interrupt flags: IER = 0x0000; IFR = 0x0000;

// Initialize the PIE vector table with pointers to the shell Interrupt

EL-DSP-E300实验开发系统 43 InitPieVectTable();

EALLOW; // This is needed to write to EALLOW protected registers PieVectTable.TINT0 = &cpu_timer0_isr;

将外设中断向量表中的int0,设置为cpu定时器中断服务程序的地址。 EDIS; // This is needed to disable write to EALLOW protected registers

InitCpuTimers(); // For this example, only initialize the Cpu Timers

// Configure CPU-Timer 0 to interrupt every second: // 100MHz CPU Freq, 1 second Period (in uSeconds) ConfigCpuTimer(&CpuTimer0, 100, 1000000); StartCpuTimer0();

是一个宏定义,在DSp281x_cputimers.h中定义。 // Enable CPU INT1 which is connected to CPU-Timer 0: IER |= M_INT1;

// Enable TINT0 in the PIE: Group 1 interrupt 7 PieCtrlRegs.PIEIER1.bit.INTx7 = 1;

// Enable global Interrupts and higher priority real-time debug events: EINT; // Enable Global interrupt INTM

ERTM; // Enable Global realtime interrupt DBGM

for(;;) {

if(CpuTimer0.InterruptCount<1) {

asm(\" nop \"); asm(\" nop \");

*(int *)0x2200=0x0081; }

else if(CpuTimer0.InterruptCount<2) {

asm(\" nop \"); asm(\" nop \");

*(int *)0x2200=0x0042; }

else if(CpuTimer0.InterruptCount<3) {

EL-DSP-E300实验开发系统 44 asm(\" nop \"); asm(\" nop \");

*(int *)0x2200=0x0024; }

else if(CpuTimer0.InterruptCount<4) {

asm(\" nop \"); asm(\" nop \");

*(int *)0x2200=0x0018; }

else if(CpuTimer0.InterruptCount<5) {

asm(\" nop \"); asm(\" nop \");

*(int *)0x2200=0x0024; }

else if(CpuTimer0.InterruptCount<6) {

asm(\" nop \"); asm(\" nop \");

*(int *)0x2200=0x0042; }

else if(CpuTimer0.InterruptCount<7) {

asm(\" nop \"); asm(\" nop \");

*(int *)0x2200=0x0081; } else {

CpuTimer0.InterruptCount = 0; } } }

以下为中断服务程序。

interrupt void cpu_timer0_isr(void)

EL-DSP-E300实验开发系统 45 {

CpuTimer0.InterruptCount++;

// Acknowledge this interrupt to receive more interrupts from group 1 PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; }

其中InitCpuTimers()在dsp281x_Cputimers.c中定义。 定义如下:

void InitCpuTimers(void) {

// CPU Timer 0 // Initialize address pointers to respective timer registers: CpuTimer0.RegsAddr = &CpuTimer0Regs; CpuTimer0Regs在dsp281x_Cputimers.h中定义。 以下初始化PRD到最大值。 CpuTimer0Regs.PRD.all = 0xFFFFFFFF; 设置定时的时钟源的分频系数。 CpuTimer0Regs.TPR.all = 0; CpuTimer0Regs.TPRH.all = 0; 以下停止定时器的运行。 CpuTimer0Regs.TCR.bit.TSS = 1; // Reload all counter register with period value: CpuTimer0Regs.TCR.bit.TRB = 1; // Reset interrupt counters: CpuTimer0.InterruptCount = 0; }

ConfigCpuTimer(&CpuTimer0, 100, 1000000)定义在

实验内容:

运行该程序,观察灯的变化。将定时器时间延时一倍。进一步实验可以完成奇数灯和偶数灯的轮流点亮。

实验四、AD实验

EL-DSP-E300实验开发系统 46 通过信号发生器,产生方波和正玄波,通过DSP自带AD将数据采集到DSP内,通过CCS自带的graph功能,观察采集来的数据。

四、实验步骤和内容

1. 2812CPU板JUMP1的1和2脚短接,拨码开关SW1的第二位置ON;

2. E300板上的开关SW4的第二位置ON,其余OFF.SW7全部置ON。其余开关全部置OFF。

3. 用导线连接E300底板“Signal expansion unit”的2号孔接口“SIN”到“Signal expansion unit”的2号孔“AIN0”;“SQU”到“AIN1” .SIN输出正弦波。SQU输出方波。

4. 运行Code Composer Studio (CCS3.1);(ccs3.1需要“DEBUG→Connect” ) 5.用“Project\\Open”打开系统项目文件 \\e300.test\\ normal\\ DSP281x_examples\\

e300_07_ad \\ Example_281x_e300_AD.pjt。

6. 编译全部文件并装载 “Debug \\Example_281x_AD.out”文件; 7. 在加软件断点处加软件断点。

单击“Debug\\RUN”运行程序,程序运行到断点处停止

EL-DSP-E300实验开发系统 47 8. 用下拉菜单中的View / Graph的“Time/Frequency”打开一个图形观察窗口;设置该图形观察窗口的参数设置如下:观察起始地址为input1和input2,长度为256的存储器单元内的数据,该数据为输入信号经A/D转换之后的数据,数据类型为16位整型;

EL-DSP-E300实验开发系统 48

9. 单击“Debug \\ Animate”运行程序,在图形观察窗口观察A/D转换后的数据波形

变化,

input1:输入通道AIN1孔的方波,input2:输入通道AIN0孔的正弦波 单击“Debug \\ Halt”暂停程序运行。

10. 实验结束

程序如下:

/*************************头文件*********************************/ #include \"DSP281x_Device.h\" // DSP281x Headerfile Include File #include \"DSP281x_Examples.h\" // DSP281x Examples Include File

// Prototype statements for functions found within this file. interrupt void adc_isr(void);

采用中断方式来处理AD转换,也就是在AD转换完后可以产生中断,然后由DSP处理。

// Global variables used in this example: Uint16 LoopCount;

EL-DSP-E300实验开发系统 49

Uint16 ConversionCount; AD转换的次数 Uint16 input1[256]; Uint16 input2[256]; Uint16 Mixing[256];

void main(void) {

InitSysCtrl();

EALLOW;

SysCtrlRegs.PLLCR.all=0x8;

SysCtrlRegs.HISPCP.all = 0x3; // HSPCLK = SYSCLKOUT/6 EDIS;

以上程序将高速外设速度设置为系统时钟的6分之1。AD采用的是高速外设时钟。

禁止中断 DINT;

初始化外设中断控制器 InitPieCtrl();

禁止中断,同时清中断标记和中断允许。 IER = 0x0000; IFR = 0x0000;

初始化外设中断控制器向量表。 InitPieVectTable();

将中断服务程序地址填入中断向量表。

EALLOW; // This is needed to write to EALLOW protected register PieVectTable.ADCINT = &adc_isr;

EDIS; // This is needed to disable write to EALLOW protected registers 初始化ADC,该程序在后面有详细介绍。 InitAdc(); // For this example, init the ADC

以下程序开AD转换中断。

PieCtrlRegs.PIEIER1.bit.INTx6 = 1;

IER |= M_INT1; // Enable CPU Interrupt 1

EINT; // Enable Global interrupt INTM

ERTM; // Enable Global realtime interrupt DBGM

LoopCount = 0;

EL-DSP-E300实验开发系统 50 ConversionCount = 0;

设置AD转换参数:

AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; 16通道采样模式,排序器1,2进行级联 AdcRegs.ADCMAXCONV.all = 0x0001; // SEQ1中有两个通道采样

AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0; // ADCINA0 在SEQ1中第一个采样 AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x2; // ADCINA2 在SEQ1中第二个采样 AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1 = 1; // 启动SEQ1采样 AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1; // 允许SEQ1采样中断 参见资料Spru060d,

以下设置定时器1的比较寄存器的值

EvaRegs.T1CMPR = 0x0380; // Setup T1 compare value 设置周期寄存器的值

EvaRegs.T1PR = 0x07FF; // Setup period register 将定时器1用于AD转换的定时

EvaRegs.GPTCONA.bit.T1TOADC = 1; // Enable EVASOC in EVA 允许定时器1进入比较模式。

EvaRegs.T1CON.all = 0x1042; // Enable timer 1 compare (upcount mode)

等待AD转换时间。 for(;;) {

LoopCount++; } }

AD转换 中断服务程序 interrupt void adc_isr(void) {

将采集来的值进行保存

input1[ConversionCount] = AdcRegs.ADCRESULT0 >>4; input2[ConversionCount] = AdcRegs.ADCRESULT1 >>4;

Mixing[ConversionCount] = input1[ConversionCount] + input2[ConversionCount];

if(ConversionCount == 256) {最多采集256个数。

ConversionCount = 0;//加软件断点 }

else ConversionCount++;

// Reinitialize for next ADC sequence

以下使SEQ1可以重新进行中断,和采样。

EL-DSP-E300实验开发系统 51 AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1; // Reset SEQ1

AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1; // Clear INT SEQ1 bit

PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; // Acknowledge interrupt to PIE

return; }

在文件dsp281x_Adc.c中定义 void InitAdc(void) {

内部参考基准上电 AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3; // Power up bandgap/reference circuitry 模拟电路上电。 AdcRegs.ADCTRL3.bit.ADCPWDN = 1; // Power up rest of ADC

// DELAY_US(ADC_usDELAY2); // Delay after powering up ADC }

实验内容:

允许样例,观察测试结果。通过改变AD转换的采样频率,触发条件,来熟悉AD转换的使用。要求对4通道AD进行采样,不用管采样的数据结果。思考DSP的AD转换的工作流程。要考虑的因素。

因篇幅问题不能全部显示,请点此查看更多更全内容