C语言版 DSP原理及应用实验指导书.docx
- 文档编号:9559654
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:50
- 大小:581.50KB
C语言版 DSP原理及应用实验指导书.docx
《C语言版 DSP原理及应用实验指导书.docx》由会员分享,可在线阅读,更多相关《C语言版 DSP原理及应用实验指导书.docx(50页珍藏版)》请在冰豆网上搜索。
C语言版DSP原理及应用实验指导书
自动化工程学院测控实验室
DSP原理及应用实验指导书
东北电力大学
2012年4月
目录
目录-1-
第一章实验要求-1-
第二章CVT-DSP-Ⅲ数字信号处理教学实验系统简介-2-
一CVT-DSP-III型实验箱结构和功能-2-
二功能单元介绍-3-
第三章实验项目-6-
实验项目一CCS软件的使用-6-
一.实验目的-6-
二.实验内容-6-
三.实验操作练习-6-
实验项目二跑马灯实验-13-
一.实验目的-13-
二.实验内容-13-
三.实验设备-13-
四.基础知识-13-
五.实验步骤-14-
六.实验程序-14-
实验项目三数码管显示实验-15-
一.实验目的-15-
二.实验内容-15-
三.实验设备-15-
四.基础知识-15-
五.实验步骤-17-
六.实验程序-17-
实验项目四键盘接口实验-18-
一.实验目的-18-
二.实验内容-18-
三.实验设备-18-
四.基础知识-18-
五.实验步骤-18-
六.实验程序-18-
实验项目五定时器与中断实验-19-
一.实验目的-19-
二.实验内容-19-
三.实验设备-19-
四.基础知识-19-
五.实验步骤-20-
六.实验程序-20-
附录1F2407REGS.H文件-21-
第一章实验要求
1.实验不限定具体时间,由学生根据自己计划灵活选择,但必须保证实验规定学时,以保证实验效果(每个实验项目按2学时计算),实验必须在本门课程考试之前完成。
2.实验成绩实行“目标化”管理。
采用时间上完成规定学时(每个实验按2个学时计算),实验成绩的以百分制体现,由实验时间、解决问题的能力以及实验报告综合给定,并按比例计入期末总成绩。
3.实验报告按以下要求完成:
(1)实验目的;
(2)实验要求;
(3)实验技术指标;
(4)对以DSP320LF2407处理器为核心DSP系统工作原理进行分析;
(5)记录、分析实验结果;
第二章CVT-DSP-Ⅲ数字信号处理教学实验系统简介
一CVT-DSP-III型实验箱结构和功能
该实验箱采用双CPU结构,如图1。
从CPU(TMS320C5416)模块,该模块采用插件形式,可自由更换和升级,该CPU承担整个实验箱各种算法类实验和高速数据的传输计算任务。
主CPU(TMS320C2407)模块,该模块采用插件形式,该CPU承担整个实验箱各种控制实验(如电机控制、LCD和LED显示、键盘控制等等)和网络信号的传输和控制任务。
两CPU通过5416上的HPI可进行实时并行数据交换。
当无(TMS320C2407)模块时该实验系统可通过CPLD移交外设控制权给(TMS320C5416)模块而构成54XDSP实验系统。
用户可以通过总线扩展接口连接自己开发的专用扩展板,以达到扩展实验和开发使用之目的。
图1CVT-DSPIII型试验箱模块图
二功能单元介绍
1.主CPU模块(2407)功能单元
1)并行数模转换(D/A)
精度:
12bit输出范围:
0~5V电压输出,建立时间1uS
2)PWM输出
输出范围:
0~5V电压输出
3)网络接口模块
主CPU(2407)扩展有CAN网接口和RS232串口RS485接口,可进行系统间的组网实验
4)EEPROM接口
系统配有SPI接口的ROM硬件93C46
5)外部存储器模块
128k-256k*16bitSRAM
主CPU板由DSP320LF2407CPU及扩展的128k*16bitSRAM,串行EEPROM和复位线路等外围器件组成,如图2。
图2主CPU模块图
2407CPU板由3组双排插针P1-P3与实验平台相接,也可以直接应用于用户设计的系统板上。
插针P1-P3引脚定义如下:
2.外设接口功能单元
1)显示模块
128x64图形点阵液晶屏,6个发光数码管,6个发光二极管
2)键盘输入模块4x4键盘
3)电机控制模块
电机控制模块自带一个直流电机和一个步进电机,利用电机控制模块,通过主
CPU2407的PWM输出可进行直流电机的控制实验
4)双路模拟信号产生模块
模拟信号产生模块可产生两路频率和幅度可调的正弦波、三角波和方波,并可进行混叠以方便实验使用
5)HPI接口单元模块
主CPU2407可以通过DSP5416的HPI接口读写C54X的片内存贮器,完成并行数据交换,而不影响从机DSP5416的运行。
3.IO空间地址分配
4.2407程序地址空间分配
在MP/MC=0时的地址分配
SRAM地址空间分配0X0000~0XFFFF
FLASH地址空间分配0X0000~0X8000
52407数据地址空间分配
在MP/MC=1时的地址分配
SRAM地址空间分配0X0000~0XFFFF
FLASH地址空间分配无效
第三章实验项目
实验项目一CCS软件的使用
CCS是TI公司开发的一个集编辑、编译、调试等功能为一体的DSP开发工具,我们本次实验通过一个简单的程序,来学习CCS的基本使用方法。
一.实验目的
1.学习CCS软件C语言程序的开发调试流程。
2.学习使用CC’C2000调试TMS320LF2407DSP程序。
二.实验内容
CC’C2000使用操作练习
三.实验操作练习
1.系统连接
进行DSP实验之前,先必须连接好仿真器、实验箱及计算机,连接方法如图1.1所示:
图1.1实验系统连接图
2.上电复位
在硬件安装完成后,确认安装正确、各实验部件及电源连接正常后,接通仿真器电源或启动计算机,此时,实验箱上的“红色指示灯”应点亮,否则DSP开发系统与计算机连接有问题。
3.打开CCS软件,建立新工程,步骤如下:
3.1把C语言运行支持库加入到工程文件中并创建vector_c.asm
1)选择菜单Project中的New,创建新工程first,系统将自动在路径C:
\ti\myprojects下生产目录first。
2)选择菜单Project—AddfilestoProject,在弹出的对话框选择路径C:
\ti\c2400\cgtools\lib下的库文件rts2xx.lib,单机“打开”按钮。
将rts2xx.lib加入工程first中,如图1.2所示。
图1.2rts2xx.lib加入后工程文件窗口
3)点击File—New—sourcefile,创建中断向量表,输入以下内容:
;**********************************************************************
;文件名:
vector_c.asm
;描述和说明:
'LF240xDSP中断向量表(C语言软件工程模板)
;**********************************************************************
.ref_c_int0;boot.obj中的C语言入口处
.ref_PHANTOM;假中断向量
.sect".vectors";以下代码为用户为中断向量表自定义的段
rsvectB_c_int0;复位向量,当系统复位,则从此处开始执行
int1B_PHANTOM;中断1,目前不启用,进入假中断后立即返回
int2B_PHANTOM;中断2,目前不启用,进入假中断后立即返回
int3B_PHANTOM;中断3,目前不启用,进入假中断后立即返回
int4B_PHANTOM;中断4,目前不启用,进入假中断后立即返回
int5B_PHANTOM;中断5,目前不启用,进入假中断后立即返回
int6B_PHANTOM;中断6,目前不启用,进入假中断后立即返回
;中断7,保留
int8B_PHANTOM;中断8,用户自定义中断
int9B_PHANTOM;中断9,用户自定义中断
int10B_PHANTOM;中断10,用户自定义中断
int11B_PHANTOM;中断11,用户自定义中断
int12B_PHANTOM;中断12,用户自定义中断
int13B_PHANTOM;中断13,用户自定义中断
int14B_PHANTOM;中断14,用户自定义中断
int15B_PHANTOM;中断15,用户自定义中断
int16B_PHANTOM;中断16,用户自定义中断
int17B_PHANTOM;中断17,TRAP
int18B_PHANTOM;中断18,NMI
;中断19,保留
int20B_PHANTOM;中断20,用户自定义中断
int21B_PHANTOM;中断21,用户自定义中断
int22B_PHANTOM;中断22,用户自定义中断
int23B_PHANTOM;中断23,用户自定义中断
int24B_PHANTOM;中断24,用户自定义中断
int25B_PHANTOM;中断25,用户自定义中断
int26B_PHANTOM;中断26,用户自定义中断
int27B_PHANTOM;中断27,用户自定义中断
int28B_PHANTOM;中断28,用户自定义中断
int29B_PHANTOM;中断29,用户自定义中断
int30B_PHANTOM;中断30,用户自定义中断
int31B_PHANTOM;中断31,用户自定义中断
4)将文件命名为vector_c.asm保存,之后,在工程管理器中把vector_c.asm加入到工程first中。
3.2创建用于C语言环境下的cmd文件
1)窗口中File—New新建文件输入以下内容:
/*********************************************************************
文件名:
LF2407A_C.cmd
描述和说明:
'LF240xCMD命令文件(C语言软件工程模板)
*********************************************************************/
/*----------------------------------------------------------------------*/
/*CMD命令文件-存储空间划分(LF2407A)*/
/*----------------------------------------------------------------------*/
MEMORY
{
PAGE0:
VECS:
origin=0000h,length=0040h/*程序复位*/
PROG:
origin=00b0h,length=7F50h/*片内FLASH*/
PAGE1:
B2:
origin=0060h,length=0020h/*内部双访问RAM,B2块*/
B0B1:
origin=0200h,length=0200h/*内部双访问RAM,B0、B1合并块*/
SARAM_IN:
origin=0800h,length=0800h/*内部单访问RAM,数据区*/
SARAM_EX:
origin=8000h,length=8000h/*外部扩展RAM,数据区*/
}
/*----------------------------------------------------------------------*/
/*CMD命令文件-程序段、数据段配置(LF2407A)*/
/*----------------------------------------------------------------------*/
SECTIONS
{
.vectors:
{}>VECSPAGE0/*指向自己定义的中断向量表*/
.text:
{}>PROGPAGE0/*程序代码*/
.cinit:
{}>PROGPAGE0
.switch:
{}>PROGPAGE0
.data:
{}>SARAM_INPAGE1/*片内单访问RAM*/
.bss:
{}>SARAM_INPAGE1/*片内单访问RAM*/
.const:
{}>SARAM_INPAGE1/*片内单访问RAM*/
.stack:
{}>SARAM_INPAGE1/*堆栈,片内单访问RAM*/
.sysmem:
{}>SARAM_INPAGE1/*片内单访问RAM*/
}
2)点击File—Saveas,保存文件名为LF2407A_C.cmd,之后,在工程管理器中把LF2407A_C.cmd加入到工程first中。
3.3创建C语言头文件F2407REGS_c.h
窗口中新建文件输入附录1中的内容,并保存为F2407REGS_c.h文件。
头文件F2407REGS_c.h不需要自己添加到工程中。
在main()模块中,已包含该头文件,连接时,CCS会自动添加。
3.4创建main()函数
1)点击File—New—SourceFile输入以下内容:
/***********************************************************************
文件名:
main.c
描述和说明:
main()函数是C程序的入口
***********************************************************************/
#include"F2407REGS_c.h"
#include"math.h"//包含头文件math.h,因为sin函数在math.h中声明
#defineN32//每周期取32点
signedintUab[N],Ubc[N];//被模拟电压Uab、Ubc
unsignedinti;
main()
{
DSP2407_Initializing();//DSP2407芯片初始化
/****************************************************************/
/*用sin库函数产生模拟电压信号(每周32点)*/
/****************************************************************/
for(i=0;i { Uab[i]=8191*sin(2*3.1415926*i/N);//浮点运算,可用小数 Ubc[i]=8191*sin(2*3.1415926*i/N+3.1415926/2); } while (1)//主循环,可分配非实时性任务 { asm("nop");//空操作 asm("nop");//空操作 } } 3.5创建DSP2407芯片初始化函数 通常,初始化函数包括以下几个方面 ØDSP2407芯片初始化; Ø工程应用中所用到的片内外设初始化; Ø片内外存储器初始化; Ø应用系统硬件接口初始化。 DSP2407芯片级的初始化,是任何工程应用中不可缺少的。 1)新建Sourcefile文件输入以下内容: /********************************************************************** 文件名: DSP2407_Initializing() 描述和说明: DSP2407芯片级初始化函数 **********************************************************************/ #include"F2407REGS_c.h" voidDSP2407_Initializing() { asm("setcINTM");//关总中断,INTM=1 asm("setcSXM");//SXM置1,抑制符号扩展位 asm("clrcOVM");//OVM清0,累加器中结果正常溢出 asm("clrcCNF");//可配置的片内双访问RAM块B0 //被设置在数据空间 SCSR1=0x00FC;//振荡器频率CLKIN=10MHz, //设置工作频率CLKOUT=4*CLKIN=40MHz /*0000,0000,1111,1100=0x00FC 0~~~~~~~~~~~~~~~[reserved] ~0~~~~~~~~~~~~~~[CLKSRC]选择CLKOUT引脚输出CPU时钟 ~~00~~~~~~~~~~~~[LPM]CPU进入IDLE1(LMP0)模式 ~~~~000~~~~~~~~~[PLL]CPU工作频率是输入的4倍频,4*10=40MHz ~~~~~~~0~~~~~~~~[reserved] ~~~~~~~~1~~~~~~~[ADCCLKEN]1: ADC片内外设使能 ~~~~~~~~~1~~~~~~[SCICLKEN]1: SCI片内外设使能 ~~~~~~~~~~1~~~~~[SPICLKEN]1: SPI片内外设使能 ~~~~~~~~~~~1~~~~[CANCLKEN]1: CAN片内外设使能 ~~~~~~~~~~~~1~~~[EVBCLKEN]1: EVB片内外设使能 ~~~~~~~~~~~~~1~~[EVACLKEN]1: EVA片内外设使能 ~~~~~~~~~~~~~~0~[resered]0 ~~~~~~~~~~~~~~~0[ILLADR]无效地址检测位,用户仅读。 */ WDCR=0x0068;//关软件狗 /*0000,0000,0110,1000=0x0068 000000000~~~~~~~[reserved] ~~~~~~~~~1~~~~~~[WDDIS]WatchdogDisable: 1,关软件狗 ~~~~~~~~~~1~~~~~[WDCHK2]WatchdogCheckBit2.1: 写该控制寄存器时该位应为1 ~~~~~~~~~~~0~~~~[WDCHK1]WatchdogCheckBit1.0: 写该控制寄存器时该位应为0 ~~~~~~~~~~~~1~~~[WDCHK0]WatchdogCheckBit0.1: 写该控制寄存器时该位应为1 ~~~~~~~~~~~~~000[WDPS2-WDPS0].WatchdogPrescaleSelectBits.000: 软件狗分频为1 */ IMR=0x003F;//开放所有CPU核级中断 /*0000000000111111=0x003F 0000000000~~~~~~[reserved]0000000000 ~~~~~~~~~~1~~~~~[INT6]1: INT6中断开放 ~~~~~~~~~~~1~~~~[INT5]1: INT5中断开放 ~~~~~~~~~~~~1~~~[INT4]1: INT4中断开放 ~~~~~~~~~~~~~1~~[INT3]1: INT3中断开放 ~~~~~~~~~~~~~~1~[INT2]1: INT2中断开放 ~~~~~~~~~~~~~~~1[INT1]1: INT1中断开放 */ IFR=0x003F;//向所有中断标志位写1,以清除所有中断请求 /*0000000000111111=0x003F 0000000000~~~~~~[reserved]0000000000 ~~~~~~~~~~1~~~~~[INT6]1: 清除INT6中断请求 ~~~~~~~~~~~1~~~~[INT5]1: 清除INT5中断请求 ~~~~~~~~~~~~1~~~[INT4]1: 清除INT4中断请求 ~~~~~~~~~~~~~1~~[INT3]1: 清除INT3中断请求 ~~~~~~~~~~~~~~1~[INT2]1: 清除INT2中断请求 ~~~~~~~~~~~~~~~1[INT1]1: 清除INT1中断请求 */ } 2)将该文件保存为Initializing.c文件,并加入到first工作中。 3.6创建假中断处理函数 1)双击Initializing.c文件打开该模块,在该模块的源文件编辑窗口下面输入以下内容: /********************************************************************** 文件名: PHANTOM() 描述和说明: 假中断函数。 所有不需要的中断和错误中断都指向该函数。 *******************************************************************/ voidinterruptPHANTOM(void) { staticintphantom_count; phantom_count++; return; } 2)再次保存文件Initializing.c。 3.7软件调试 1)在工具栏上点击IncrementalBuild快捷键命令,进行编译和连接; 2)点击File—LoadProgram,在弹出的对话框中选择编译生成的first.out文件,如图1.3所示。 将文件下载到实验箱里进行程序的调试。 CC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言版 DSP原理及应用实验指导书 语言版 DSP 原理 应用 实验 指导书