DSP实验报告.docx
《DSP实验报告.docx》由会员分享,可在线阅读,更多相关《DSP实验报告.docx(18页珍藏版)》请在冰点文库上搜索。
DSP实验报告
实验一数字IO应用实验
—、实验目的
1.了解DSP开发系统的组成和结构
2.在实验设备上完成I/O硬件连接,编写I/O实验程序并运行验证。
3.内存观察工具的使用
二、实验设备
计算机,CCS3.1版本软件,DSP仿真器,教学实验箱
三、实验原理
本实验程序由二部分组成:
1.由外部中断1产生中断信号
2.键值读取程序:
该部分有两种方法进行键值的判断。
方法1:
利用内存观察工具进行观察
方法2:
利用LED1-LED8的亮灭对应显示键值。
a)外部中断1的应用参照实验五;
b)内存观察键值:
程序中定义了三个变量“W”“row”和“col”。
“W”代表是CPLD中键盘的扫描数值,“row”和“col”分别代表键盘的行和列,由行和列可以判定按键的位置。
上述三个变量可以在观察窗口中观察的。
c)利用LED灯显示键值原理,参看实验一。
具体的LED灯显示值以查表的形式读出,请参看“e300_codec.h”库文件。
本实验的CPLD地址译码说明:
基地址:
0x0000,当底板片选CS0为低时,分配有效。
CPU的IO空间:
基地址+0x0200LED灯output8位
外部中断用XINT1:
由CPLD分配,中断信号由键盘按键产生。
中断下降沿触发。
KEY_DAT_REG(R):
基地址+0x0004;
四、实验步骤和内容
1.2407CPU板JUMP1的1和2脚短接,拨码开关S1的第一位置ON,其余置OFF;
2.E300板上的开关SW4的第一位置ON,其余OFF;SW3的第四位置ON其余的SW置OFF
3.运行CodeComposerStudio(CCS)(ccs3.1需要“DEBUG→Connect”)
4.打开系统项目文件\e300.test\normal\05_keyinterface\E300_keyled.pjt;
5.编译全部文件并装载“\Debug\keyled.out”文件
6.单击“Debug\GoMain”跳到主程序的开始;
7.指定位置设置断点;
8.View--〉WatchWindow打开变量观察窗口;
9.将变量“w”“row”和“col”添加到观察窗口中,改变变量观察窗口的显示方式为HEX显示。
10.点击“Debug--〉Animate”全速运行,然后点击E300板上键盘按键,观察窗口中变量变化,同时LED1-LED8灯也相应变化,指示键值。
(注意程序中KEY_E和KEY_F分别代表键盘上的“*”和“#”键值。
十六进制数代表的意义为:
高4位为按键的行值,低4位为按键的列值。
注意:
“w”中的低八位表示
11.关闭所有窗口,本实验完毕.
五、实验程序框图
六、实验建议
本实验程序采用外部中断的方法来判断键盘是否被按下,除了这种方法外,还可以根据键盘按下标志位“KEY_FLAG”,利用查询方式来编写程序.“KEY_FLAG”是CPLD内部状态寄存器中的一个只读位.如下表:
CPLD内部状态寄存器(只读):
D7
D6
D5
D4
D3
D2
D1
D0
KEY_FLAG
LCD_ndef
LCD_OUT
CPLD_ST_REG(R):
基地址+0x002
七、实验心得
通过这次实验我了解了DSP开发系统的组成和结构,并且对I/O硬件连接,I/O实验程序的编写有了更进一步的认识。
实验二定时器应用实验
一、实验目的
1、熟悉LF2407的定时器;
2、掌握LF2407的定时器的控制方法;
3、学会使用CPU定时器中断方式控制程序流程。
二、实验设备
计算机,CCS3.1版软件,DSP教学实验箱,F2407CPU板。
三、实验原理说明
本实验是采用CPU定时器来定时使LED亮灭的。
LF2407的通用定时器功能强大,除了做通用定时使用外,还可以配合事件管理器模块产生PWM波形。
可以被特定的状态位实现停止、重新启动、重设置或禁止,可以使用该定时器产生周期性的CPU中断。
在本系统中,时钟频率为40MHz,设置相应寄存器,使得到每1/1000秒中断一次,通过累计1000次中断,就能产生1秒钟的定时。
样例实验的程序框图如下:
四、实验步骤和内容
1、F2407CPU板的JUMP1的1和2脚短接,拨码开关S1的第一位置ON;其余置OFF。
2、E300底板的开关SW4的第1位置ON,其余位置OFF。
其余开关设置为OFF。
3、运行CCS软件,调入样例程序,装载并运行;(进入CCS界面后需要点“Debug--Connect”)
4、用“Project//Open”系统项目文件\e300.test\normal\03_timer\timer.pjt;
5、编译全部文件并装载“..\debug\timer.out”;
6、单击“Debug\RUN”运行,可观察到灯LED1~LED8的闪烁变化。
7、单击“Debug\Halt”,暂停程序运行,LED灯停止闪烁;单击“RUN”,LED灯又开始闪烁变化
8、结束实验程序
五、实验心得
通过这次实验熟悉并掌握LF2407的定时器的控制方法,学会使用CPU定时器中断方式控制程序流程。
实验三AD转换实验
—、实验目的
1.熟悉CPU内部AD转换的基本原理。
2.掌握TMS320LF2407A的内部ADC功能模块的指标和常用方法。
二、实验设备
计算机,CCS3.1版本软件,DSP教学实验箱,2407CPU板,信号线,示波器
三、实验原理
TMS320LF2407ADSP自带16路10位单极性ADC转换器,内置一个采样保持器。
快速转换时间运行在375ns。
16个通道可配置为两个独立的8通道模块以便为事件管理器A和B服务。
两个独立的8通道模块可以级联组成一个16通道模块。
虽然有多个输入通道和两个序列器,但是ADC模块只有一个转换器。
下图给出了LF2407的ADC模块框图。
两个8通道模块具有一对系列转换和自动序列化的能力,通过模拟多路复用器,每个模块都可以选择可用的8个通道中的任何一个通道。
在级联模式下,自动序列发生器可作为一个单一的16通道序列发生器。
在每个序列发生器上,一旦转换结束,已选择的通道值就保存在各个通道的结果寄存器ADCRESULT中。
自动序列化允许系统对同一通道转换多次,允许用户执行过采样算法。
这较传统的单一采样转换结果增加了更多的解决方案。
输入模拟电压的数字值为:
数字值=1024×(输入模拟电压值)/3
多触发源启动序列转换(SOC)包括:
●S/W:
软件直接启动;
●EVA/B:
事件管理器A/B(EVA/B内有多个事件源);
●Ext:
外部引脚(ADCSOC)。
本实验是用DSP自带的ADC转换器采集信号源的信号。
并将采集到的信号储存到指定的内存区域。
由于ADC是单极性的,所以从信号源过来的双极性信号经过偏置电路转换成单极性信号然后由ADC采样。
四、实验步骤和内容
1.2407CPU板JUMP1的1和2脚短接,拨码开关S1的第一位置ON,其余置OFF;
2.E300板上的开关SW4的第1位置ON,其余OFF.其余开关全部置OFF。
3.用导线连接E300底板“Signalexpansionunit”的2号孔接口“SIN”到“Signalexpansionunit”的2号孔“AIN0”;“SQU”到“AIN1”.SIN输出正弦波。
SQU输出方波。
4.运行CodeComposerStudio(CCS3.1);(ccs3.1需要“DEBUG→Connect”)
5.打开系统项目文件\e300.test\normal\DSP281x_examples\06_adcpu\adcpu.pjt。
6.编译全部文件并装载“adcpu.out”文件;
7.在加软件断点处加软件断点。
单击“Debug\RUN”运行程序,程序运行到断点处停止
8.用下拉菜单中的View/Graph的“Time/Frequency”打开一个图形观察窗口;设置该图形观察窗口的参数设置如下:
观察起始地址为point和point1,Mixing.长度为1024的存储器单元内的数据,该数据为输入信号经A/D转换之后的数据,数据类型为16位无符号整型;
Mixing为混频波形
9.单击“Debug\Animate”运行程序,在图形观察窗口观察A/D转换后的数据波形变化,调节输入信号的频率和幅值可以在图形窗口观察到相应的波形变化。
单击“Halt”暂停程序运行。
10.实验结束
五、程序框图
六、实验心得
通过这次实验熟悉了CPU内部AD转换的基本原理,掌握了TMS320LF2407A内部ADC功能模块的指标和常用方法。
实验四串行通信实验
一、实验目的
1.熟悉2407内部的SCI模块;
2.通过学习串口通讯实验,理解DSP的传口与PC之间是怎样进行交互的;
3.学会C语言中断程序设计,以及运用中断程序控制程序流程。
二、实验设备
计算机,串行通信数据线、DSP教学实验箱
三、实验原理
2407内部的SCI模块都有一个接收器和发送器。
SCI的接收器和发送器各具有一个两级深度的FIFO(Firstinfistout先入先出)队列,它们还都有自己独立的使能位和中断位,可以在半双工通信中进行独立的操作,或者在全双工通信中同时进行操作。
根据信息的传送方向,串行通信可以分为单工、半双工和全双工三种。
SCI模块具有两个引脚,SCITXDA和SCIRXDA,分别实现发送数据和接收数据的功能,这两个引脚对应于GPIOF模块的第4和第5位,在编程初始化的时候,需要将GPIOFMUX寄存器的第4和第5位置为1,才能使得这两个引脚具有发送和接收的功能,否则就是普通的I/O引脚。
外部晶振通过PLL模块产生了CPU的系统时钟SYSCLKOUT,然后SYSCLKOUT经过低速预定标器之后输出低速时钟LSPCLK供给SCI。
要保证SCI的正常运行,系统控制模块下必须使能SCI的时钟,也就是在系统初始化函数中需要将外设时钟控制寄存器PCLKCR的SCIAENCLK位置1。
之所以SCI能工作于全双工模式,是因为它有独立的数据发送器和数据接收器,这样能够保证SCI既能够同时进行,也能够独立进行发送和接收的操作。
SCI发送数据的过程如下:
在FIFO功能使能的情况下,首先,发送数据缓冲寄存器SCITXBUF从TXFIFO中获取由CPU加载的需要发送的数据,然后SCITXBUF将数据传输给发送移位寄存器TXSHF,如果SCI的发送功能使能,TXSHF则将接收到的数据逐位逐位的移到SCITXD引脚上。
SCI接收数据的过程如下:
首先,接收移位寄存器RXSHF逐位逐位的接收来自于SCIRXD引脚的数据,如果SCI的接收功能使能,RXSHF将这些数据传输给接收缓冲寄存器SCIRXBUF,CPU就能从SCIRXBUF读取外部发送来的数据。
当然,如果FIFO功能使能的话,SCIRXBUF会将数据加载到RXFIFO的队列中,CPU再从FIFO的队列读取数据。
四、实验说明
在进行通信的时候,双方都必须以相同的数据格式和波特率进行通信,否则通信会失败。
例如2812和PC机上的串口调试软件进行通信时,2812采用了什么样的数据格式和波特率,那么串口调试软件也需要设定成相同的数据格式和波特率,反之也一样,这是SCI通信不成功最简单,然而大家常常会忽略的问题。
编写程序,打开串口调试工具,波特率设置在19200,数据位8,停止位1,其他无,然后输入一串数据,发送给DSP,DSP也将收到的数据原样回发给上位机。
五、实验步骤
1.实验准备
(1)连接USB-UART数据线,USB端接计算机的USB,串行数据口接DSP的串口。
(2)当计算机发现新设备时,安装USB驱动CH341SER;
(3)打开计算机的设备管理器,查看端口,记下USB-SERIALCH340(COM?
),串口号COM后面的数字;
(4)设置串口调试助手的通讯设置,和DSP程序中设置的要一致。
2、按上次实验的方法连接实验设备;打开DSP电路板电源;
3.启动CCS2.2选择菜单Debug→ResetCPU;
4.打开工程文件;
5、编写主程序main.c;
6.编译程序;
7、运行程序,观察结果。
(1)通过CCS中FileLoadProgram装载Debug文件夹中的.out文件;
(2)Debug->GOMain;
(3)Debug->RUN(快捷键F5)全速运行;
8.退出CCS。
实验五串行外设实验
一、实验目的
1.了解数字波形产生的基本原理;
2.学习用TMS320F240XDSP芯片产生正弦信号的基本方法和步骤;
3.加深对DSPSPI串口应用的理解。
二、实验设备
计算机,CCS3.1版软件,DSP仿真器,E300实验箱,F2407
三、实验原理
◆数字波形产生的基本原理:
数字波形信号发生器是利用微处理器芯片,通过软件编程和D/A转换,产生所需要信号波形的一种方法。
在通信、仪器和控制等领域的信号处理系统中,经常会用到数字正弦波发生器。
一般情况,产生正弦波的方法有两种:
1.查表法:
此种方法用于对精度要求不是很高的场合。
如果要求精度高,表就很大,相应的存储器容量也要很大。
2.泰勒级数展开法:
这是一种更为有效的方法。
与查表法相比,需要的存储单元很少,而且精度高。
一个角度为θ的正弦和余弦函数,可以展开成泰勒级数,取其前5项进行近似得:
其中,
为
的弧度值。
本实验用泰勒级数展开法产生一正弦波,通过CCS观察产生的波形。
◆F2407DSP中的SPI口的应用原理
SPI是一个高速、同步串行I/O口,它允许长度可编程的串行位流(1~16位)以可编程的位传输速度或移出器件。
通常的SPI用于DSP处理器和外部外设以及其他处理器之间的通信。
典型的应用包括通过诸如移位寄存器、显示驱动、DAC以及日历时钟等器件所进行的外部I/O或器件的扩展。
SPI的主/从操作支持多处理器之间通信。
F2407SPI模块中有4个外部引脚:
SPISIMO
SPI从动输入/主动输出引脚
F2407CPU板中:
J12的37引脚
SPISOMI
SPI从动输出/主动输入引脚
F2407CPU板中:
J12的38引脚
SPICLK
SPI串行时钟引脚
F2407CPU板中:
J12的39引脚
SPITE
SPI从动发送使能引脚
F2407CPU板中:
J12的40引脚
四、实验说明
本实验样例程序中,采用泰勒级数展开法,计算-~的SCLK值,来构造正弦波信号,计算点数为256点;然后,经过取整处理后,从F2407模块中SPI功能口输出。
由于本实验中没有和外部D/A模块相连,所以无法通过示波器观察到产生的正弦波。
但是我们可以通过示波器观察到F2407DSP中SPI相关引脚的状态。
样例实验的流程框图如下:
程序中发送数据时采用查询标志位方式:
每次发送一个数据时,判断“SPISTS”状态寄存器中“SPIINTFLAG”位是否为“1”,为“1”时,则表示SPI已经发送成功,此时再虚读SPIRXBUF寄存器,以清除SPI中断标志,这样进入下个数据的发送,如上循环,直到整个要发送的数据发送完后,则结束。
五、实验步骤
1.2407CPU板的JUMP1的1和2脚短接,拨码开关S1的第一位置ON;
2.E300板上的开关SW4的第1位置ON,其余OFF.其余开关全部置OFF。
3.运行CodeComposerStudio(CCS3.1);
4.进入CCS界面后单击“DEBUG→Connect”
5.用Project/Open打开“e300.test\normal\\09_spi”目录下“SPI_TEST.pjt”;双击“SPI_TEST.pjt”及“Source”可查看各源程序;加载“SPI_TEST.out”;
6.单击“Debug\Gomain”进入“SPI.c”主程序,在主程序中的*SPITXBUF=curve[p];处设置断点;
单击“Run”,程序运行到断点处停止;
7.用View/Graph/Time/Frequency打开一个图形观察窗口,以观察利用泰勒级数产生的波形;设置观察变量地址curve,数据类型为32位浮点型数值;
调整图形观察窗口,观察产生波形。
在“digwave.c”程序中,N值为产生正弦信号一个周期的点数。
尝试修改“digwave.c”程序中N值,“Rebuild”及“Load”后,进行步骤6,切换窗口,在原先观察窗口中观察产生信号频率变化;(注意:
窗口参数设定值不变,便于比较频率的变化)
8.单击“取消所有断点”,并点击“Debug\Resetcpu”,并点击“Debug\Resetcpu”.
9.单击“Debug/Gomain”进入到主程序处后单击“Animate”,运行程序
10.用示波器观察F2407CPU板上的J12的SPI引脚,观察SPI引脚状态波形(如下图)。
J12中SPI引脚请参看前面的“F2407SPI模块中有4个外部引脚”对照说明。
11.单击“Debug\Halt”,停止程序,退出CCS.