DSP实验二 拨码开关实验
DSP实验报告

实验一数字IO应用实验—、实验目的1. 了解DSP开发系统的组成和结构2. 在实验设备上完成I/O硬件连接,编写I/O实验程序并运行验证。
3. 内存观察工具的使用二、实验设备计算机,CCS3.1版本软件,DSP仿真器,教学实验箱三、实验原理2.键值读取程序:该部分有两种方法进行键值的判断。
方法1:利用内存观察工具进行观察方法2:利用LED1-LED8的亮灭对应显示键值。
a)外部中断1的应用参照实验五;b)内存观察键值:程序中定义了三个变量“W”“row”和“col”。
“W”代表是CPLD中键盘的扫描数值,“row”和“col”分别代表键盘的行和列,由行和列可以判定按键的位置。
上述三个变量可以在观察窗口中观察的。
c)利用LED灯显示键值原理,参看实验一。
具体的LED灯显示值以查表的形式读出,请参看“”库文件。
本实验的CPLD地址译码说明:基地址:0x0000,当底板片选CS0为低时,分配有效。
CPU的IO空间:基地址+0x0200 LED灯output 8位外部中断用XINT1:由CPLD分配,中断信号由键盘按键产生。
中断下降沿触发。
KEY_DAT_REG(R):基地址+0x0004;四、实验步骤和内容1.2407CPU板JUMP1的1和2脚短接,拨码开关S1的第一位置ON,其余置OFF;2.E300板上的开关SW4的第一位置ON,其余OFF;SW3的第四位置ON其余的SW置OFF“DEBUG→Connect”)4.打开系统项目文件 \e300.test\ normal \05_key interface \;“\Debug\”文件“Debug\Go Main”跳到主程序的开始;7.指定位置设置断点;8.View--〉Watch Window打开变量观察窗口;9. 将变量“w”“row”和“col”添加到观察窗口中,改变变量观察窗口的显示方式为HEX显示。
“Debug--〉Animate”全速运行,然后点击E300板上键盘按键,观察窗口中变量变化,同时LED1-LED8灯也相应变化,指示键值。
dsp实验报告5

一、实验原理:1、无限冲击响数字滤波器的基础理论;2、模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、贝塞尔滤波器);3、双线性变换的设计原理。
二、实验内容:1、复习有关巴特沃斯滤波器设计和用双线性变换法设计IIR数字滤波器的知识;2、阅读本实验所提供的样例子程序;3、运行CCS软件,对样例程序进行跟踪,分析结果;4、填写实验报告。
5、样例程序实验操作说明1)正确完成计算机、DSP仿真器和实验箱连接后,开关K9拨到右边,即仿真器选择连接右边的CPU:CPU2;2)“A/D转换单元”的拨码开关设置:JP33)检查:计算机、DSP仿真器、实验箱是否正确连接,系统上电;4)置拨码开关S23的1、2拨到OFF,用示波器分别观测模拟信号源单元的2号孔“信号源1”和“信号源2”输出的模拟信号,分别调节信号波形选择、信号频率、信号输出幅值等旋钮,直至满意,置拨码开关S23的1到ON,两信号混频输出;三、程序分析:cpu_init(); //CPU初始化fs = 25000; //设置采样频率为2500HZnlpass = 0.18; //设置通带上限频率归一化参数为0.18nlstop = 0.29; //设置阻带下限截止频率归一化参数为0.29biir2lpdes(fs,nlpass,nlstop,a,b); 根据双线性变换法求滤波器的系数a和bset_int(); //调用低通滤波器子程序对信号进行滤波中断程序注释:interrupt void int1(){in_x[m] = port8002; //读取port8002端口的数值in_x[m] &= 0x00FF; //取后八位送入X[m]m++; //每取一个数字m加1intnum = m;if (intnum == Len) //当取到128个字节时,重新读取port8002端口的数值{intnum = 0;xmean = 0.0;for (i=0; i<Len; i++) //将128个字节的数加起来求和{xmean = in_x[i] + xmean;}xmean = 1.0*xmean/Len; //求平均数for (i=0; i<Len; i++){x[i] = 1.0*(in_x[i] - xmean); //做归一化处理}for (i=0; i<Len; i++){w2 = x[i]-a[1]*w1-a[2]*w0;y[i] = b[0]*w2+b[1]*w1+b[2]*w0; //将a和b 数组代入,求出y,实现滤波的处理w0 = w1;w1 = w2;}m=0;flag = 1; //中断返回时会检测flag是否等于1,如果等于1,则在断点处画图}四、实验运行结果:1、从由图可知,输入波形有很多毛刺,但是经过FIR滤波器后,波形变得平滑,毛刺也少了很多,原因是滤波器滤去了某些频率的波形。
东南大学DSP实验报告

第三章DSP芯片系统实验实验3.1 :数据存取实验一.实验目的1.了解TMS320F2812A的内部存储器空间的分配及指令寻址方式。
2.了解ICETEK-F2812-A评估板扩展存储器空间寻址方法,及其应用。
3.了解ICETEK-F2812-EDU实验箱扩展存储器空间寻址方法,及其应用。
4.学习用Code Composer Studio修改、填充DSP内存单元的方法。
5.学习操作TMS32028xx内存空间的指令。
二.实验设备计算机,ICETEK-F2812-A-EDU实验箱(或ICETEK仿真器+ICETEK-F2812-A评估板+相关连线及电源)。
三.实验内容在外部SARAM的0x80000~0x8000f单元置数0~0xf,将该单元块存储的数据复制到0x80100~0x8010f处,最后通过“Memory”查看窗口观察各存储区中的数据。
四.实验原理TMS32028xx DSP内部存储器资源介绍:TMS32028xx系列DSP基于增强的哈佛结构,可以通过三组并行总线访问多个存储空间。
它们分别是:程序地址总线(PAB)、数据读地址总线(DRAB)和数据写地址总线(DW AB)。
由于总线工作是独立的,所以可以同时访问程序和数据空间。
TMS32028xx系列DSP的地址映象请参考第一章1.2.4节ICETEK-F2812-A评估板的存储空间定义及寄存器映射说明中的介绍。
五.实验步骤1.实验准备连接实验设备。
参见第一章1.3.1节中的“硬件连接方法”。
连接仿真器USB口接线,打开实验箱电源开关,接通评估板电源(关闭实验箱上的扩展模块和信号源电源开关)。
2.设置Code Composer Studio 2.21在硬件仿真(Emulator)方式下运行。
参见第一章1.4.2节中的“设置CCS工作在硬件仿真环境”。
3.启动Code Composer Studio 2.21选择菜单Debug→Reset CPU。
DSP原理及其应用实验讲义(精)

DSP 原理及其应用实验讲义CCS 设置1. 安装目标板驱动程序。
点击epp 文件夹下的安装文件,进行安装。
2. 运行Code Composer Studio Setup软件,即点击图标3. 点击Install a Device Driver,选择驱动程序 sdgo5xx32.dll 。
4. 此时,Available Board/Simulator Type一栏中出现相应的驱动图标5. 将图标sdgo5xx32 拖到最左边的System Configuration 一栏中,出现Board Properties 对话框。
6. 点击NEXT ,进入下一页,会显示板卡的I/O口值,修改为0x378,再点击NEXT。
7. 在Processor Configuration 窗中,在Available Processor 中选择TMS320C54XX 然后点击Add Single;对话框右边出现CPU_1图标。
8. 点击NEXT ,进入下一页,选择一个初始化的.gel 文件,本实验系统,选择c5402.gel。
9. 点击finish ,关闭CCS 程序,选择保存。
实验一常用指令实验一实验目的1、了解DSP 开发系统的组成和结构;2、熟悉DSP 开发系统的连接;3、熟悉CCS 开发界面;4、熟悉C54X 系列的寻址系统;5、熟悉常用C54X 系列指令的用法。
二实验设备计算机,CCS2.0版软件,DSP 仿真器,实验箱。
三实验步骤与内容1、系统连接进行DSP 实验之前,先必须连接好仿真器、实验箱及计算机,连接方法如下所示:PCI/USB/EPP2、上电复位在硬件安装完成之后,确认安装正确、各实验部件及电源连接正常后,接通仿真器电源,启动计算机,此时,仿真器上的“红色小灯”应点亮,否则DSP 开发系统有问题。
3、运行CCS 程序待计算机启动成功后,实验箱后面220V 输入电源开关置“ON ”,实验箱上电,启动CCS ,此时仿真器上的“绿色小灯”应点亮,并且CCS 正常启动,表明系统连接正常;否则仿真器的连接、JTAG 接口或CCS 相关设置存在问题,掉电,检查仿真器的连接、JTAG 接口连接,或检查CCS 相关设置是否正确。
指示灯+拨码开关

实验一:指示灯(流水灯)实验 实验二:拨码开关控制实验
• XDS510仿真器驱动的安装 • 5509A实验平台的软件配置 • CCS软件的巩固
• 指示灯、拨码开关控制原理 • 初始化DSP时钟频率 • DSP中EMIF初始化 • 相关寄存器的设置
实验一:指示灯(流水灯)实验
SDPER 0x0810
SDCNT 0x0811
SDC2
0x0813
功能
全局控制寄存器 全局复位寄存器 片选空间控制寄存器1 SDRAM控制寄存器1 SDRAM初始化寄存器 总线错误状态寄存器 SDRAM周期寄存器 SDRAM计数寄存器 SDRAM控制寄存器2
复位值
xxxx xxxx 0010 xx00 xxxx xxxx xxxx xxxx x010 1111 1111 1111 1111 1001 0100 1000 xxxx xxxx xxxx xxxx xx00 0000 0000 0000 xxxx 0000 1000 0000 xxxx 0000 1000 0000 xxxx xx11 1111 1111
五、实验结果 映射在扩展存储器空间地址上的指示灯寄存器在设置时是低 4位有效的, 数据的最低位对应指示灯 D1,次低位对应 D2,...依次类推。
实验二 拨码开关控制实验
一、实验目的、实验设备、实验原理同上PPT第4页 二、拨码开关扩展原理图
3. 程序流程图
开始
初始化DSP时钟
初始化EMIF接口
-
1
0
说明
保留
退出IDLE状态后,是否重新锁定
如何处理失锁
保留,必须保持为0
锁定模式下的倍频次数,0到31
锁定模式下的分频次数,0到3
DSP实验二 拨码开关实验

《DSP技术》课程实验报告学生姓名:所在班级:指导教师:记分及评价:项目满分5分得分一、实验名称拨码开关实验二、实验目的1.了解DSP开发系统的组成和结构2.了解IO的基本编程方法三、实验内容1. 2812CPU板的JUMP1的1和2脚短接,拨码开关SW1的第二位置ON。
2.E300板上的开关SW4的第二位置ON,其余OFF;SW5开关全部置ON;其余开关全部置OFF。
3.运行Code Composer Studio (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目录下,(如右边图所示:)打开watch window,(此项是用来检查和编辑变量或C表达式可以不同格式显示变量值,还可以显示数值、结构或指针等包含多个元素的变量),在本实验中观察temp变量的变化。
步骤:在debug目录下点run,在断点处,程序会停下来,可以观察temp变量的值。
(也可按“F10”单步运行程序,观察temp变量的值。
)9. 任意拨动E300底板上的拨动开关,观察LED和拨动开关的对应情况。
(LED1-LED7分别对应DSP数据总线的D0-D7)10.单击“Debug \ Halt”暂停持续运行,开关将对灯失去控制.11.关闭所有窗口,本实验完毕.四、实验程序与结果分析实验程序:#include "DSP281x_Device.h" // DSP281x Headerfile Include File#include "DSP281x_Examples.h" // DSP281x Examples Include Filevoid main(void){unsigned int temp;temp = 0;DINT;InitSysCtrl();InitPieCtrl();IER = 0x0000;IFR = 0x0000;InitPieVectTable();for(;;){asm(" nop ");temp = *(int *)0x2200&0x00ff;if(temp!=0x80){temp=(temp<<1)&0x00ff;asm(" nop ");* (int *)0x2200 = temp;}else * (int *)0x2200 =0x01;asm(" nop ");}}结果分析:多次拨动E300底板上的拨码开关,观察LED亮灭后,我们发现拨动开关的对LED1-LED7分别对应DSP数据总线的D0-D7,并且LED低电平时导通。
DSP实验报告(综合)

实验报告||实验名称 D SP课内系统实验课程名称DSP系统设计||一、实验目的及要求1. 掌握用窗函数法设计FIR数字滤波器的原理和方法。
熟悉线性相位FIR 数字滤波器特性。
了解各种窗函数对滤波器特性的影响。
2. 掌握设计IIR数字滤波器的原理和方法。
熟悉IIR数字滤波器特性。
了解IIR数字滤波器的设计方法。
3.掌握自适应数字滤波器的原理和实现方法。
掌握LMS自适应算法及其实现。
了解自适应数字滤波器的程序设计方法。
4.掌握直方图统计的原理和程序设计;了解各种图像的直方图统计的意义及其在实际中的运用。
5.了解边缘检测的算法和用途,学习利用Sobel算子进行边缘检测的程序设计方法。
6.了解锐化的算法和用途,学习利用拉普拉斯锐化运算的程序设计方法。
7.了解取反的算法和用途,学习设计程序实现图像的取反运算。
8.掌握直方图均衡化增强的原理和程序设计;观察对图像进行直方图均衡化增强的效果。
二、所用仪器、设备计算机,dsp实验系统实验箱,ccs操作环境三、实验原理(简化)FIR:有限冲激响应数字滤波器的基础理论,模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器、贝塞尔滤波器)。
数字滤波器系数的确定方法。
IIR:无限冲激响应数字滤波器的基础理论。
模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器、贝塞尔滤波器)。
数字滤波器系数的确定方法。
、自适应滤波:自适应滤波器主要由两部分组成:系数可调的数字滤波器和用来调节或修正滤波器系数的自适应算法。
e(n)=z(n)-y(n)=s(n)+d(n)-y(n)直方图:灰度直方图描述了一幅图像的灰度级内容。
灰度直方图是灰度值的函数,描述的是图像中具有该灰度值的像素的个数,其横坐标表示像素的灰度级别,纵坐标是该灰度出现的频率(像素个数与图像像素总数之比)。
图像边缘化:所谓边缘(或边沿)是指其周围像素灰度有阶跃变化。
经典的边缘提取方法是考察图像的每个像素在某个邻域内灰度的变化,利用边缘临近一阶或二阶方向导数变化规律,用简单的方法检测边缘。
DSP技术及课程设计实验报告二(精)

DSP技术及课程设计实验报告二(精)东南大学自动化学院实验报告课程名称: D SP 原理及C 程序开发第二次实验实验名称:基于DSP 系统的实验——指示灯、拨码开关和定时器院(系):自动化专业:自动化姓名:学号:实验室:实验组别:同组人员:实验时间:2012 年 4 月 18日评定成绩:审阅教师:第一部分实验:基于DSP 系统的实验——指示灯和拨码开关一.实验目的1. 了解ICETEK –F28335-A 评估板在TMS320F28335DSP外部扩展存储空间上的扩展。
2. 了解ICETEK –F28335-A 评估板上指示灯和拨码开关扩展原理。
3. 学习在C 语言中使用扩展的控制寄存器的方法。
二.实验设备计算机,ICETEK –F28335-A 实验箱(或ICETEK仿真器+ICETEK–F28335-A 评估板+相关连线及电源)。
三.实验原理1.TMS320F28335DSP 的存储器扩展接口存储器扩展接口是DSP扩展片外资源的主要接口,它提供了一组控制信号和地址、数据线,可以扩展各类存储器和存储器、寄存器映射的外设。
-ICETEK –F28335-A 评估板在扩展接口上除了扩展了片外SRAM外,还扩展了指示灯、DIP 开关和D/A 设备。
具体扩展地址如下:0x180004- 0x180005:D/A 转换控制寄存器0x180001:板上DIP 开关控制寄存器0x180000:板上指示灯控制寄存器-与ICETEK –F28335-A 评估板连接的ICETEK-CTR显示控制模块也使用扩展空间控制主要设备:208000-208004h :读-键盘扫描值,写-液晶控制寄存器208002-208002h :液晶辅助控制寄存器208003-208004h :液晶显示数据寄存器2.指示灯与拨码开关扩展原理图1指示灯扩展原理图2拨码开关扩展原理四.实验步骤LED 程序如下:#define LED (*(unsigned short int *0x180000 for(;;{LED=0x01; Delay(1000; LED=0x02;Delay(1000;LED=0x04;Delay(1000;LED=0x08;Delay(1000;}开关程序如下;#define SW (*(unsigned short int *0x180001 for(;;{LED=SW;}五.实验结果可知:映射在扩展存储器空间地址上的指示灯寄存器在设置时是低4位有效的,数据的最低位对应指示灯D1,次低位对应D2,... 依次类推。
实验:拨码开关控制实验

苏州职业大学实训报告科目:DSP应用技术实训项目:拨码开关控制实验一、实验目的:1.了解ICETEK–F2812-A 评估板在TMS320F2812DSP 外部扩展存储空间上的扩展。
2.了解ICETEK–F2812-A 评估板上拨码开关扩展原理。
3.熟悉在C 语言中使用扩展的控制寄存器的方法。
二、实验设备:计算机,ICETEK-F2812-A 实验箱(或ICETEK 仿真器+ICETEK–F2812-A 系统板+相关连线及电源)。
三、实验原理:1.TMS320F2812DSP 的存储器扩展接口存储器扩展接口是 DSP 扩展片外资源的主要接口,它提供了一组控制信号和地址、数据线,可以扩展各类存储器和存储器、寄存器映射的外设。
-ICETEK–F2812-A 评估板在扩展接口上除了扩展了片外SRAM 外,还扩展了指示灯、DIP 开关和D/A 设备。
具体扩展地址如下:C0002-C0003h: D/A 转换控制寄存器C0001h:板上 DIP 开关控制寄存器C0000h:板上指示灯控制寄存器-与ICETEK–F2812-A 评估板连接的ICETEK-CTR 显示控制模块也使用扩展空间控制主要设备:108000-108004h:读-键盘扫描值,写-液晶控制寄存器108002-108002h:液晶辅助控制寄存器108003-108004h:液晶显示数据寄存器2.拨码开关扩展原理图 5.1指示灯扩展原理3.实验程序流程图四、实验步骤:1.实验准备关闭实验箱上扩展模块和信号源电源开关。
2.设置Code Composer Studio 3.3 在硬件仿真(Emulator)方式下运行3.启动Code Composer Studio 3.3选择菜单Debug→Reset CPU。
4.打开工程文件工程文件为:C:\ICETEK\F2812\DSP281x_examples\Lab0301-LED\LED.pjt打开源程序LED.c 阅读程序,理解程序内容。
DSP技术 实验二报告模板

《DSP技术》课程实验报告学生姓名:所在班级:指导教师:记分及评价:一、实验名称:拨码开关实验二、实验目的了解DSP开发系统的组成和结构;了解IO的基本编程方法三、实验内容修改例子程序,实现以下功能:(1)调试例子程序,理解程序设计思想;(2)修改例子程序,实现每个拨码开关控制一种不同的LED花样显示。
(3)实现LED流水灯的功能,并且实现由拨码开关键值控制LED流水灯的频率(按键值与LED流水灯频率关系自定义,至少提供两种不同的LED流水灯变化的频率)(加分)四、实验程序与结果分析void Delay(int n){int i=0,j;for(j=0; j<n; j++)for(i=0;i<1000;i++);}void main(void){unsigned int temp,m;unsigned int temp1[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};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();for(;;){asm(" nop ");temp = *(int *)0x2200&0x00ff;switch(temp){case 0xfe: * (int *)0x2200 = temp1[0];break;case 0xfd: * (int *)0x2200 = temp1[1];break;case 0xfb: * (int *)0x2200 = temp1[2];break;case 0xf7: * (int *)0x2200 = temp1[3];break;case 0xef: * (int *)0x2200 = temp1[4];break;case 0xdf: * (int *)0x2200 = temp1[5];break;case 0xbf: * (int *)0x2200 = temp1[6];break;case 0x7f: * (int *)0x2200 = temp1[7];break;}asm(" nop ");if(temp==1){for(m=0; m<8; m++){Delay(1200);* (int *)0x2200 = ~(1<<m);Delay(200);}}if(temp==3){for(m=0; m<8; m++){Delay(800);* (int *)0x2200 = ~(1<<m);Delay(100);}}//temp值输出0x2200地址的LED灯asm(" nop ");}}五、小结通过这次试验让我明白不同模块可以共用同一个地址,这应该是时分复用的功劳吧,其次0x200这地址允许读写操作,这次的试验箱改变以往地址低位在后的设计应该是别出心裁的,目的应该是考验学生对地址的理解。
DSP实验二拨码开关实验

实验二拨码开关实验—、实验目的二、实验设备运算机,版本软件,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位。
实验任务一:一、编写程序完成将拨码开关的信息读入DSP,然后再将该信息回写,操纵led灯。
调整"数字输入输出单元"的开关K1~K8,观看LED1~LED8灯亮灭的转变。
2、本实验的程序流程框图如下:3、输入要紧程序#include "" 2812CPU板的JUMP1的1和2脚短接,拨码开关SW1的第二位置ON。
2.E300板上的开关SW4的第二位置ON,其余OFF;SW5开关全数置ON;其余开关全数置OFF。
3.运行Code Composer Studio (CCS)(需要“DEBUG→Connect”)4. 用“Project\open”打开系统项目文件途径为“c:\DSP_examep\DSP281X_examples\e300_02_switch\”双击该文件5、输入要紧程序。
六、编译程序并装载。
DSP原理及应用实验指导

DSP原理及应用实验 (198)第一部分实验系统介绍 (198)第二部分调试软件安装说明 (216)第三部分硬件安装说明 (222)第四部分5402常规实验 (225)实验一常用指令实验 (225)实验二数据存储实验 (229)实验三I/O实验 (234)实验四定时器实验 (236)实验五A/D转换实验 (238)实验六D/A转换实验 (243)实验七语音处理实验 (247)实验八键盘接口及七段数码管显示实验 (254)实验九LCD实验 (256)实验十快速傅立叶变换(FFT)算法实验 (258)1DSP原理及应用实验第一部分实验系统介绍一、系统概述EL-DSP-EXP III 教学系统是一种综合的教学实验系统,采用模块化分离式结构,使用灵活,方便用户二次开发,其系统组成框图如图1-1所示。
通过“E_LAB”和“TECH_V”扩展总线,可以扩展声、光、机、电等不同领域的控制对象。
可根据需求选用不同类型的CPU适配板,且所有CPU适配板是完全兼容的,在不需要改变任何配置情况下,更换CPU 适配板即可做TI公司不同类型的DSP的相关实验。
图1-1 系统组成框图二、硬件组成该实验系统有丰富的硬件资源可以完成多种DSP基础实验、算法实验、控制对象实验和编解码通信实验。
其硬件资源主要包括:一组CPU板接口2●两组E_LAB接口●一组TECH_V接口●一组电机控制接口●一组语音接口●语音处理单元●一组仿真器接口●D/A转换单元●数字量输入输出单元●USB单元●CPLD逻辑单元●直流电源单元●模拟信号源●音频信号源●液晶显示单元●A/D转换单元●单脉冲单元●RS232串口单元●CAN总线单元●以太网单元●I/O单元●键盘输入单元1、CPU板接口用来驳接不同类型的CPU板,CPU板主要由以下几个模块组成:✧CPU模块;✧时钟模块;✧复位模块;✧存储器模块;✧CPLD模块;✧扩展接口模块;✧电源模块。
3454X CPU 板:图1-2 54X CPU 板外观和接口示意图表1-2 接口说明序号 12 3 4 5含义DSP JTAG 接口J1电源插口P4复位按钮S1扩展接口P1FLASH 写保护跳线J3序号 678 9 10 11 含义拨码开关SW2CPLD 下载口J4扩展接口P3扩展接口P2HPI 设置J2拨码开关SW1J1:DSP JTAG 接口,符合IEEE Standard 1149.1(JTAG)标准,引脚分配如下图1-3所示(空脚是第六脚,方形焊盘是第一脚)。
DSP实验指导

*room2=*(room-1);
将room指针减一,然后将其内容填到room2指针的地址内。
room--;Hale Waihona Puke room2--;}
}
InitSysCtrl()函数,在DSP281x_SysCtrl.c中定义。
其定义如下:
void InitSysCtrl(void)
{
// On F2812/F2810 TMX samples prior to rev C this initialization was
实验二拨码开关实验
实验目的:了解GPIO的初始化原理,掌握GPIO的基本操作,掌握如何设定GPIO为通用数字I/O口或是功能引脚,掌握GPIO的相关寄存器的配置方法。
实验过程:该程序完成将拨码开关的信息读入DSP,然后再将该信息回写,控制led灯。关键问题:读入的地址和输出的地址用的同一个地址。为什么呢?
清所有中断标记。
/*将0xAAAA写入从数据空间的地址0x3f9020开始的8个单元中*/
for(i=0;i<8;i++)
{
*room=0xAAAA;
room指针的地址内填上0xAAAA
room++;
}
/*从0x3f9020开始的8个空间读出数据依次写入从0x3f9028开始的8个单元中*/
for(i=0;i<8;i++)
其拨码开关是通过74LS244和总线相连,灯是通过74LS273相连总线。读时将273设为无效,244有效,拨码开关的数据上总线。写时,244无效,273有效,将数据发送出,同时锁存。需要3根控制线。按时序操作。对于本试验箱来讲,DSP将控制信号发给CPLD,在对一个特定地址进行读写时(0x2200),CPLD内部通过编程,实现对读写信号的不同操作。在DSP读0x2200时,CPLD将244有效。当DSP写0x2200时,CPLD将244无效,同时273有效,同时开关锁存一次,同时保持锁存。
DSP2812-实验要求以及参考程序

实验一DSP数据存取实验实验要求:1、找到main函数入口地址4、观察从地址0x80000到0x80007的存储内容操作步骤:1、打开Setup CCStudio v3.3 ,系统配置为F2812 Device Simultor2、打开CCStudio v3.3,打开工程F2812\DSP281x_examples\Lab0201-Memory\Memory.pjt3、在main函数处设断点(F9),运行程序4、打开反汇编窗口(View>Disassembly),观察入口地址5、修改Memory.c中程序,完成存储区数据修改6、编译通过,加载.out 文件7、设置在变量定义处设置断点,点击运行(F5),单步运行(F11)8、打开观察窗(View>Watch Window)观察自己所设变量在单步运行时变化9、打开存储区窗口(View>Memory)观察地址为0x80000到0x80007的数据变化实验二指示灯与拨码开关实验实验要求:1、熟悉板上指示灯控制寄存器、开关控制寄存器2、指示灯点亮规则:只闭合拨码开关1:全灭;只闭合拨码开关2:全亮;只闭合拨码开关3: 顺序依次点亮;只闭合拨码开关4:反向顺序依次点亮;开关的其它状态:全灭;操作步骤:1、打开Setup CCStudio v3.3 ,系统配置为F2812 XDS510 Emulator_12、打开CCStudio v3.3,打开工程F2812\DSP281x_examples\Lab0201-Memory\led.pjt3、修改led.c,注意板上DIP开关控制寄存器地址为C0001h,板上指示灯控制寄存器地址为:C0000h。
这两个寄存器都是低四位有效。
4、观察实验现象实验三DSP定时器实验要求:1、利用定时器中断代替软件延时函数控制指示灯显示频率,要求1秒闪烁一次2、实物仿真时,通过CCS中的Clock功能统计延时函数的延时时间,与设定值进行比较操作步骤:1、打开Setup CCStudio v3.3 ,系统配置为F2812 XDS510 Emulator_12、打开CCStudio v3.3,打开工程F2812\DSP281x_examples\Lab0201-Memory\time.pjt3、修改time.c程序,写一个由定时器中断产生的以1s为单位的延时函数void delay(int time);4、在菜单中选择profile>Enable\View5、在延时函数前后各设置一个断点6、清零时钟计数器(双击清零),点击Run运行程序7、计算时间t=测得值/150000000(假如系统的时钟工作在150MHZ),与设定值进行比较实验四事件管理器实验实验要求1、利用事件管理器中的16路中的PWM1,输出一段连续变化的PWM波2、驱动扬声器蜂鸣器播放一段音乐声(声音频率文件参考Speaker.pjt)操作步骤1、打开Setup CCStudio v3.3 ,系统配置为F2812 XDS510 Emulator_12、打开CCStudio v3.3,打开工程F2812\DSP281x_examples\Lab0201-Memory\PWM.pjt和F2812\DSP281x_examples\Lab0201-Memory\Speaker.pjt3、在例程Speaker.c中是使用通用定时器TIME0来连续输出频率的方波,这里要求改为用EVA中的PWM1代替之。
实验二 数字量输入与数字量输出

//void Delay(unsigned int nTime); void main(void) { //long i; InitSysCtrl(); InitXintf16Gpio(); DINT; InitPieCtrl(); IER = 0x0000; IFR = 0x0000; while (1) { LED=DIP; } }
内容二:拨码开关控制实验
【实验目的】 1. 了解ICETEK–F28335-A 评估板在TMS320F28335DSP 外部扩展存储空间上的扩
展。 2.了解ICETEK–F28335-A 评估板上拨码开关扩展原理。 【实验设备】 计算机,ICETEK-F28335-A 实验箱。 【实验原理】 1. ICETEK–F28335-A 评估板在扩展接口上除了扩展了片外SRAM 外,还扩展了 指示灯和DIP 开关等设备。具体扩展地址如下: 0பைடு நூலகம்180001: 板上 DIP 开关控制寄存器 0x180000: 板上指示灯控制寄存器 2.拨码开关扩展原理
【实验要求】 1. 编写程序实现将0-F 和F-0 十六进制代码送到指示灯显示。 2. 编写程序实现小灯从左到右循环显示。
3. 编写程序实现小灯从右到左循环显示。 #include "DSP2833x_Device.h" // DSP2833x Headerfile Include File #include "DSP2833x_Examples.h" // DSP2833x Examples Include File #define LED (*(unsigned short int *)0x180000) #define SRAM_Base_Adress 0x100000 void Delay(unsigned int nTime); void main(void) { long i; InitSysCtrl(); InitXintf16Gpio(); DINT; InitPieCtrl(); IER = 0x0000; IFR = 0x0000; for(;;) { for(i=0;i<=0xf;i++) { LED=i; Delay(612); } for(i=0xf;i>=0;i--) { LED=i; Delay(612); } } } void Delay(unsigned int nDelay) { int i,j,k=0; for(i=0;i<nDelay;i++) { for(j=0;j<1024;j++) { k++; } } } // 延时子程序
实验报告

实验一 CCS 调试环境熟悉以及简单程序的软件调试内容一:一.实验目的1.了解 F28335 简单的浮点运算。
2.熟悉浮点运算的编程。
二.实验原理TMS320F28335是一款32 位浮点通用数字信号处理芯片,它具有存储空间大、运算精度高等特点。
三.实验要求1.设置Code Composer Studio 3.3 在硬件仿真方式下运行2.启动Code Composer Studio 3.33.打开工程文件工程文件为:E:\realtimedsp\F28335\ICETEK_F28335_Ae\DSP2833x_examples\Lab202-float\Example_2833xfpu_software.pjt打开源程序Example_2833xFPU.c 阅读程序,理解程序内容。
4.编译、下载程序。
5.把y1 和y2 添加到观察窗。
6.运行程序,观察y1 和y2 结果。
7. 修改x1 和x2 值,重新执行程序,观察y1 和y2 结果。
8.退出CCS四.实验结果分析程序设计实现了简单的浮点乘法和加法运算,y1 和y2 是实验结果。
记录实验结果。
五.问题与思考如何做复杂的浮点运算。
程序:// TI File $Revision: /main/1 $// Checkin $Date: August 29, 2007 14:07:22 $//############################################################ ###############//// FILE: Example_2833xFPU.c//// TITLE: DSP2833x Device Getting Started Program.//// ASSUMPTIONS://// This program requires the DSP2833x header files.//// Other then boot mode configuration, no other hardware configuration// is required.// As supplied, this project is configured for "boot to SARAM"// operation. The 2833x Boot Mode table is shown below.// For information on configuring the boot mode of an eZdsp,// please refer to the documentation included with the eZdsp,//// $Boot_Table://// GPIO87 GPIO86 GPIO85 GPIO84// XA15 XA14 XA13 XA12// PU PU PU PU//========================================= =// 1 1 1 1 Jump to Flash// 1 1 1 0 SCI-A boot// 1 1 0 1 SPI-A boot// 1 1 0 0 I2C-A boot// 1 0 1 1 eCAN-A boot// 1 0 1 0 McBSP-A boot// 1 0 0 1 Jump to XINTF x16// 1 0 0 0 Jump to XINTF x32// 0 1 1 1 Jump to OTP// 0 1 1 0 Parallel GPIO I/O boot// 0 1 0 1 Parallel XINTF boot// 0 1 0 0 Jump to SARAM <- "boot to SARAM"// 0 0 1 1 Branch to check boot mode// 0 0 1 0 Boot to flash, bypass ADC cal// 0 0 0 1 Boot to SARAM, bypass ADC cal// 0 0 0 0 Boot to SCI-A, bypass ADC cal// Boot_Table_End$//// DESCRIPTION://// The code calculates two y=mx+b equations. The variables are all// 32-bit floating-point. //// Two projects are supplied://// Example_fpu_hardware.pjt (floating-point)://// If the Example_2833xFPU_hardware.pjt file is used then the compiler// will generate floating point instructions to do these calculations.// To compile the project for floating point, the following Build Options were used:// 1. Project->Build Options-> Compiler Tab-> Advanced category:// a. in textbox: compiler options -v28 --float_support=fpu32 are set// b. OR the following is equivalent to "a.": pull-down menu next to// "Floating Point Support"-> "fpu32" selected.// 2. Project->Build Options-> Linker Tab-> Libraries category:// a. runtime support library used is rts2800_fpu32.lib.// 3. Not included in this example: If the project includes any other libraries,// they must also be compiled with floating point instructions.//// Example_fpu_software.pjt (fixed-point emulates floating-point with software)://// If the Example_2833xFPU_software.pjt file is used, then the compiler// will only used fixed point instructions. This means the runtime// support library will be used to emulate floating point.// This will also run on C28x devices without the floating point unit.// To compile the project for fixed point, the following Build Options were used:// 1. Project->Build Options-> Compiler Tab-> Advanced category:// a. in textbox: compiler option --float_support=fpu32 is REMOVED// -v28 should not be removed// b. OR the following is equivalent to "a.": pull-down menu next to// "Floating Point Support"-> "None" selected.// 2. Project->Build Options-> Linker Tab-> Libraries category:// a. runtime support library used is rts2800.lib or rts2800_ml.lib.// 3. Not included in this example: If the project includes any other libraries,// they must also be compiled with fixed point instructions.//// Watch Variables:// y1// y2// FPU registers (optional)////############################################################ ###############// $TI Release: DSP2833x Header Files V1.01 $// $Release Date: September 26, 2007 $//############################################################ ################include "DSP2833x_Device.h" // DSP2833x Headerfile Include File#include "DSP2833x_Examples.h" // DSP2833x Examples Include Filefloat y1, y2;float m1, m2;float x1, x2;float b1, b2;void main(void){// Step 1. Initialize System Control:// PLL, WatchDog, enable Peripheral Clocks// This example function is found in the DSP2833x_SysCtrl.c file. InitSysCtrl();// Step 2. Initalize GPIO:// This example function is found in the DSP2833x_Gpio.c file and // illustrates how to set the GPIO to it's default state.// InitGpio(); // Skipped for this example// Step 3. Clear all interrupts and initialize PIE vector table:// Disable CPU interruptsDINT;// Initialize the PIE control registers to their default state.// The default state is all PIE interrupts disabled and flags// are cleared.// This function is found in the DSP2833x_PieCtrl.c file.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 // Service Routines (ISR).// This will populate the entire table, even if the interrupt// is not used in this example. This is useful for debug purposes.// The shell ISR routines are found in DSP2833x_DefaultIsr.c.// This function is found in DSP2833x_PieVect.c.InitPieVectTable();// Interrupts that are used in this example are re-mapped to// ISR functions found within this file.// Step 5. User specific code, enable interrupts://// Calculate two y=mx+b equations.y1 = 0;y2 = 0;m1 = 10;m2 = .6;x1 = 7;x2 = 7.3;b1 = 4.2;b2 = 8.9;y1 = m1/x1 + b1;y2 = m2*x2 + b2;ESTOP0; // This is a software breakpoint}//======================================== ===================================// No more.//======================================== ===================================实验二数字量输入与数字量输出内容一:指示灯实验一.实验目的1.了解ICETEK–F28335-A 评估板在TMS320F28335DSP 外部扩展存储空间上的扩展。
DSP实验报告(精)

DSP上机实验:DTMF信号的编码一、实验要求设计作业:双音多频(DTMF)信号的编码:把自己的电话号码DTMF编码生成为一个.wav文件。
【wavwrite()】技术指标:根据ITU Q.23建议,DTMF信号的技术指标是:传送/接收率为每秒10个号码,或每个号码100ms。
每个号码传送过程中,信号存在时间至少45ms,且不多于55ms,100ms的其余时间是静音。
在每个频率点上允许有不超过±1.5%的频率误差。
任何超过给定频率±3.5%的信号,均被认为是无效的,拒绝接收。
二、实验思想:1、编码:DTMF拨号键盘由一个4*4行列构成,每列代表一个高频信号,每行代表一个低频信号,每当按下一个键时,产生高、低频率的两个正弦信号,代表一个特定的数字或符号,根据ITU Q.23颁布的国际标准,DTMF传送或接受每个号码的时间为100ms,其中每个号码传送的过程中,信号存在时间至少45ms,其余时间静音。
用一个字符串变量来接受输入的电话号码,并将各个数字和符号的ASCII码用一个4*4矩阵表示,每接收到一个数字就对应两个频率,并产生由两个正弦波叠加的信号,完成DTMF编码,利用matlab提供的fft函数画出其频谱,用sound函数发出声音。
2、解码:采用Goertzel算法来检测DTMF信号,它是用IIR滤波器实现DFT算法的一种特殊方法,在实际DTMF解码中,只需要知道输入信号即DTMF信号的离散傅里叶变换X(k)的幅度信息,忽略相位信息,因为只要能得到8个特定频率点的幅度值,看哪两个频率对应的幅度最大,就能知道对应的是哪个数字,达到解码的目的,可以利用matlab提供的goertzel函数来对信号解码。
三、实验代码:d=input('请键入电话号码: ','s');sum=length(d);total_x=[];sum_x=[];sum_x=[sum_x,zeros(1,800)];for a=1:sumsymbol=abs(d(a));tm=[49,50,51,65;52,53,54,66;55,56,57,67;42,48,35,68]; for p=1:4;for q=1:4;if tm(p,q)==abs(d(a));break,endendif tm(p,q)==abs(d(a));break,endendf1=[697,770,852,941];f2=[1209,1336,1477,1633];n=1:400;x=sin(2*pi*n*f1(p)/8000)+sin(2*pi*n*f2(q)/8000); x=[x,zeros(1,400)]; sum_x=sum_x+x;total_x=[total_x,x];endwavwrite(total_x,'soundwave')sound(total_x);t=(1:8800)/8000;subplot(2,1,1);plot(t,total_x);axis([0,1.2,-2,2]);xlabel('时间/s')title('DTMF信号时域波形')xk=fft(x); mxk=abs(xk);subplot(2,1,2);k=(1:800)*sum*8000/800;plot(k,mxk); xlabel('频率');title('DTMF信号频谱');disp('双频信号已生成并发出')四、实验结果图:请键入电话号码: 130xxxxxxxx。
DSP实验报告,2

DSP实验报告,2DSP 实验报告班班级:学学号:姓姓名:指导教师:实验一常用指令实验 1 1 .实验目的了解 P DSP 系统的组成和结构 2 2 .实验设备 3 3 .实验内容及步骤 4 4 .实验结果及分析 5 5 .实验体会实验七 D A/D 转换实验一、实验目的 1.熟悉 A/D 转换的根本原理; 2.掌握 AD7822 的技术指标和常用方法; 3.掌握并熟悉使用DSP 和 AD7822BN 的接口及其操作。
二、实验设备计算机,CCS2.0 软件,DSP 仿真器,试验箱三、实验步骤和内容 1、拨码开关设置 2、运行 CCS 软件,加载示范程序; 3、观察采样报告; 4、填写实验报告。
5、样例程序实验操作说明6、开关 K9 拨到右边,即选择连接右边的 CPU:CPU2;启动 CCS 2.0,在Project->Open->菜单翻开exp06cpu2 目录下面的工程文件“exp06.pjt”。
用下拉菜单中Project->Open,翻开“exp06cpu2/exp06.pjt”,双击“Sour ”,可查看源程序。
在 File->Load Program 菜单下加载 exp06cpu2\debug 目录下的 exp06.out 文件。
在“782254.c”中如以下图“i=0;”处,设置断点。
单击“Run”运行程序,程序运行到断点处停止:7、用下拉菜单中的 View/Grap 的“Time/Frequen ”翻开一个图形观察窗口; 8、单击“Ani te”运行程序,调节源 1 的频率、幅值、波形调节旋钮,在图形观察窗口观察 A/D 转换后的数据波形变化; 9、单击“Halt”暂停程序运行,用“View”的下拉菜单中“Memory”翻开存储器数据观察窗口;设置该存储器数据观察窗口的参数,选择地址为 databuff,数据格式 C 格式 16进制; 10、单击“Ani te”运行程序,调整存储器数据观察窗口,并在该窗口中观察数据变化,A/D 转换后的数据存储地址为 databuff 单元开始的 256 个单元内,变化数据将变为红色; 11、单击“Halt”停止程序运行;12、关闭“exp06.pjt”工程文件,关闭个窗口,本实验完毕。
河南工大DSP实验报告

实验一数据存储实验一实验目的1.掌握TMS320F2812程序空间的分配。
2.掌握TMS320F2812数据空间的分配。
3.能够熟练运用TMS320F2812数据空间的指令。
二实验步骤与内容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)启动CCS5.5,工作环境的路径选择:E:\E300Program\E300 TechV-2812\normal6.成功运行CCS5.5程序后,出现如下图所示界面。
7.点菜单栏Project/Build All命令编译整个工程,编译完成后点击按钮:8. 用“View”下拉菜单中的“Memory/Browser”查看内存单元,初始参数如下图:此时可以观测到以0x003F9020为起始地址的存储单元内的数据。
9.单击按钮,开始运行程序,一段时间后,单击按钮,停止程序运行,查看0x003F9020H~ 0x3F902FH单元的数据的变化。
10. 关闭Memory Browser窗口,点击按钮,退出仿真模式。
右键点击Project Explorer窗口下的工程文件“e300_01_mem”,选择Close Project命令关闭该工程,然后关闭CCS软件,本实验完毕。
三程序框图四实验总结通过这次实验,基本熟悉了CCS用户界面的使用,掌握了TMS320F2812程序空间的分配和数据空间的分配,能够熟练运用数据空间的指令。
DSP第二次实验报告

DSP实验报告(第二次实验)实验四、正弦信号发生器学院:信息工程学院班级:11级通信工程3班姓名:李慧学号:2011551309指导老师:姚志强完成日期:2014.4.12验四、正弦信号发生器一、 实验目的1. 掌握利用DSP 产生正弦信号的原理2. 熟悉子程序调用的程序结构以及堆栈的使用3. 掌握CCS 的图形输出操作二、 实验设备1. 集成开发环境Code Composer Studio (简称CCS )2. 实验代码Sin.s54、Lab.cmd 和Lab.gel三、实验内容1. 阅读理解多项式逼近正弦的文档2. 阅读和理解Sin.s543. 调试正弦波发生器4. 加入断点,并选取图形观测,利用动画及时更新5. 试利用迭代的方法来实现正弦信号发生器四、实验结果和提示1.2345sin()= 3.140625 + 0.02026367 - 5.325196 + 0.5446778 + 1.800293x x x x x x ,x 为第一象限内的弧度值。
因为sin()sin(),sin()sin()x x x x π-=-=-,所以只需将第二,三,四象限内的弧度值转换到第一象限即可计算出相应的正弦函数值。
由于有限精度,规定弧度值从~ππ-,其中π=0x7FFF ,π/2=0x4000,π-=0x8000。
利用级数展开产生正弦波,必须在调用计算子程序之前备份好累加器A 中的当前弧度值,以便计算结束后实现x 增量。
正弦波的频率可以通过增幅的大小来进行控制,如果假定程序循环一次为一个时间单位,则正弦波的周期为65536/步长,频率为周期倒数。
x 自动增长时要注意当x 超过π后必须调整到~ππ-的范围内才能调用计算子程序,即若,2x x x ππ>=-则。
2. 需要使用临时数据时,必须用frame 语句留出所需空间,使用结束后要将堆栈指针还原以防堆栈内存泄漏。
要注意的是frame 的下一条指令不能使用直接寻址。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
int16i;
Uint32 *Source = (void *) &PieVectTableInit;
在这里取PieVectableInit的地址,
Uint32 *Dest = (void *) &PieVectTable;
在这里取PieVectTable的地址,他们都应该是全局变量。
for(;;)
{
asm(" nop ");
temp = *(int *)0x2200&0x00ff; //读入0x2200地址的开关量值并赋给temp
asm(" nop ");
* (int *)0x2200 = temp; //temp值输出0x2200地址的LED灯
asm(" nop ");
}
}
其中InitPieVectTable()在文件DSP281x_PieVect.c中。
/****************************主程序*******************************/
void main(void)
{
unsigned int temp;
temp = 0;
InitSysCtrl();//初始化PLL,WatchDog,使能外围时钟,该初始化文件在"DSP281x_SysCtrl.c"中
9.任意拨动E300底板上的拨动开关,观察LED和拨动开关的对应情况。
(LED1-LED7分别对应DSP数据总线的D0-D7)
10.单击“Debug \ Halt”暂停持续运行,开关将对灯失去控制.
11.关闭所有窗口,本实验完毕.
实验任务二:
通过修改以上程序实现:当拔开关时,下一个灯亮。即:1号开关动作时,2号灯亮,2号开关动作时,3号灯亮,*****,等。在第8号开关动作时,第1号灯亮。
IFR = 0x0000;
InitPieVectTable();
for(;;)
{
asm(" nop ");
temp = *(int *)0x2200&0x00ff;
asm(" nop ");
* (int *)0x2200 = temp;
asm(" nop ");
}
}
四、实验步骤(步骤基本与实验一相同)
路径为“c:\DSP_examep\DSP281X_examples\e300_02_switch\Example_281x_switch.pjt”双击该文件
5、输入主要程序。
6、编译程序并装载。
7.单击“Debug-Go Main”跳到主程序的开始;
8.单击“Debug\RUN”运行程序。
需要判断是高电平亮,还是低电平亮,可以使用中断调试。在运行状态,在需要设置断点的位置的右边,双击,就可以产生红点。表明设置了断点。
3、实验中相关语句说明:
/*******************************头文件****************************/
#include "DSP281x_Device.h" // DSP281x Headerfile Include File
#include "DSP281x_Examples.h" // DSP281x Examples Include File
EALLOW;
est++ = *Source++;
EDIS;
// Enable the PIE Vector Table
PieCtrlRegs.PIECRTL.bit.ENPIE = 1;
变量pieVectTableInit在文件DSP281x_PieVect.c中。PieVectTable在DSP281x_PieVect.h中定义,在最后2行。他们的具体地址可以由md文件来确定。
{temp=(temp<<1)&0x00ff;
asm(" nop ");
* (int *)0x2200 = temp;
}
else * (int *)0x2200 =0x01;
asm(" nop ");
}
}
实验任务三:
通过修改以上程序实现:当拔开关时,上一个灯亮。即:1号开关动作时,8号灯亮,2号开关动作时,1号灯亮,*****,等。在第8号开关动作时,第7号灯亮。
#include "DSP281x_Device.h" // DSP281x Headerfile Include File
#include "DSP281x_Examples.h" // DSP281x Examples Include File
void main(void)
{
unsigned int temp;
temp = 0;
DINT;
InitSysCtrl();
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
for(;;)
{
asm(" nop ");
temp = *(int *)0x2200&0x00ff;
if(temp!=0x80)
本实验使用DSP数据总线的低8位。
实验任务一:
1、编写程序完成将拨码开关的信息读入DSP,然后再将该信息回写,控制led灯。调整"数字输入输出单元"的开关K1~K8,观察LED1~LED8灯亮灭的变化。
2、本实验的程序流程框图如下:
3、输入主要程序
#include "DSP281x_Device.h" // DSP281x Headerfile Include File
#include "DSP281x_Examples.h" // DSP281x Examples Include File
void main(void)
{
unsigned int temp;
temp = 0;
DINT;
InitSysCtrl();
InitPieCtrl();
IER = 0x0000;
1.2812CPU板的JUMP1的1和2脚短接,拨码开关SW1的第二位置ON。
2.E300板上的开关SW4的第二位置ON,其余OFF;SW5开关全部置ON;其余开关全部置OFF。
3.运行Code Composer Studio (CCS)(CCS3.3需要“DEBUG→Connect”)
4.用“Project\open”打开系统项目文件
2、读入的地址和输出的地址用的同一个地址。为什么呢?
关键问题是:其拨码开关是通过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;
(器件74LS244和74LS273详细的介绍请参看数据手册)
数字量输入输出单元的资源分配如下:
基地址:2000h(当CS1为0时分配有效)
数字量分配空间为数据空间地址:基地址+0x2200(低8位,只读)
拨码开关扩展工作原理
说明:74LS244片选号、74LS273片选信号和74LS273复位信号由E300上CPLD译码产生。
—、实验目的
1.了解DSP开发系统的组成和结构
2.了解IO的基本编程方法
二、实验设备
计算机,CCS3.3版本软件,DSP仿真器,E300实验箱,2812CPU板。
三、实验原理
8位的数字量输入(由拨码开关产生),当拨码打到靠近LED时为低。相反为高。通过74LS244(可读)缓冲连接到DSP的数据总线的低8位。CPU通过读指令读取到拨码开关产生的8位输出的数字量,然后CPU通过写指令把读出的8位数字量写入(0x2200)单元内,使连接到DSP的数据总线的低8位的74LS273的输出端产生高低信号,此时LED灯产生亮灭。当对应LED灯点亮时说明输出为低,熄灭时为高。
temp = 0;
DINT;
InitSysCtrl();
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
for(;;)
{
asm(" nop ");
temp = *(int *)0x2200&0x00ff;
if(temp!=0x01)
IER = 0x0000;//关闭中断和清除所有中断标志
IFR = 0x0000;
// Initialize the PIE vector table with pointers to the shell Interrupt