《基于TMS320F2812_DSP处理器的信号仪的设计与实现》由会员分享,可在线阅读,更多相关《基于TMS320F2812_DSP处理器的信号仪的设计与实现(15页珍藏版)》请在金锄头文库上搜索。
1、郑州航空工业管理学院郑州航空工业管理学院 电子通信工程系电子通信工程系DSP 原理及应用课程设计报告原理及应用课程设计报告设计题目:设计题目:基于基于 TMS320F2812 DSP 处理器的信号仪的设计与实现处理器的信号仪的设计与实现学号:学号: 姓名:姓名: 专业:专业: 通信工程通信工程 设计日期:设计日期: 2012 年年 6 月月 14 日日 指导老师:指导老师: 赵成赵成 张松炜张松炜 目目 录录一、引言一、引言二、设计目的二、设计目的三、设计要求三、设计要求四、总体设计四、总体设计4.1 硬件部分硬件部分4.1.1 数模转换操作的应用基础数模转换操作的应用基础4.1.2 AD73
2、03 简介简介4.1.3 应用应用 AD7303 的的 DAC 电路设计电路设计4.2 软件部分软件部分4.2.1 程序流程图程序流程图4.2.2 在在 CCS 集成开发环境下新建工程集成开发环境下新建工程4.2.3 在在 Simulator 环境下观察信号的时域及环境下观察信号的时域及 FFT Magnitude 波波形形4.2.4 程序清单程序清单4.3 调试部分调试部分4.3.1 硬件调试硬件调试4.3.2 软件调试软件调试4.3.3 SCI 串行数据传输(选做)串行数据传输(选做)五、总结五、总结六、参考文献六、参考文献一、引言一、引言随着现代科学技术的发展和计算机技术的普及,信号处理
3、系统已应用于越来越多的场合,如无线通信、语音识别、机器人、遥感遥测和图像处理领域,数字信号处理器芯片在高速信号处理方面具有速度快、运算性能好等优点,本文设计了一种基于 TI 公司的TMS320F812 的信号处理系统,将数据通过串行异步通信接口传到PC 机,由 PC 机的串口调试工具对接收信号进行显示和具体分析并将结果传给反馈给 DSP 进行控制,文章对硬件和软件进行了详细描述。二、设计目的二、设计目的1、编写串行外设接口 SPI 的驱动程序;2、了解数模转换的基本操作,设计基于数模转换芯片 AD7303的正弦信号发生电路;3、编写 TMS320F2812 利用 SPI 接口驱动 AD7303
4、 输出正弦信号波形的应用程序。三、设计要求三、设计要求1、熟悉 CCS 集成开发环境的使用,能对程序进行跟踪,分析结果;2、熟悉 SPI 外设接口的相关知识,能通过 SPI 接口与外围电路(芯片)进行通信。四、总体设计四、总体设计4.1 硬件部分硬件部分4.1.1 数模转换操作的应用基础数模转换操作的应用基础利用专用的数模转换芯片,可以实现将数字信号转换成模拟量输出的功能。在 EXPIV 型实验箱上,使用的是 AD7303 数模芯片,它可以实现同时转换 2 路模拟信号数出,并有 8 位精度,DA 转换时间 1.2s。其控制方式较为简单:首先将需要转换的数值及控制指令同时通过 SPI 总线传送到
5、 AD7303 上相应寄存器,经过一个时间延迟,转换后的模拟量就从 AD7303 输出引脚输出。4.1.2 AD7303 简介简介AD7303 是一款双通道、8 位电压输出 DAC,采用+2.7 V 至+5.5 V 单电源供电。它内置片内精密输出缓冲,能够实现轨到轨输出摆幅。这款器件采用多功能三线式串行接口,能够以最高 30MHz 的时钟速率工作,并与 QSPI、SPI、MICROWIRE 以及数字信号处理器接口标准兼容。串行输入寄存器为 16 位,其中 8 位用作 DAC 的数据位,其余 8 位组成一个控制寄存器。图 1 数字量与输出模拟量换算表图 2 输入移位寄存器图 3 AD7303 输
6、入移位寄存器位定义及设置方式4.1.3 应用应用 AD7303 的的 DAC 电路设计电路设计图 4 AD7303 电路设计4.2 软件部分软件部分4.2.1 程序流程图程序流程图处理器上电复位CPU 及串行外设接口初始化产生 128 个点的正弦信号波形按 AD7303 输入移位寄存器的 位定义,传输数据,进行数模 转换双路波形输出无限循环4.2.2 在在 CCS 集成开发环境下新建工程集成开发环境下新建工程1.在Setup CCS2中对它进行设置,如图5所示图5 CCS设置驱动界面2.打开 CCS,在 Projiect 下拉菜单中选择 Open 添加程序,进行编译,无错误。如图 6 所示单击
7、清除 原先配置单击选择 此配置单击输入 配置单击完成 和保存设置图 63. 执行 File Load Program,在随后打开的对话框中选择刚刚建立的后缀名为.out文件,点击“打开”按钮,如图 7 所示。为了快速地运行到主函数调试自己的代码,可以先使用 Debug 下的 Go main命令 图 7 图 84.2.3 在在 Simulator 环境下观察信号的时域及环境下观察信号的时域及 FFT Magnitude 波波形形(1)选菜单 ViewGraphTime/Frequency。(2) 在 Graph Property Dialog 对话框中,修改 Start Address为 cur
8、ve,Acquisition Buffer Size 为 128,Display Data Size 为128,DSP Data Type 为 16-bit unsigned integer,Autoscale 为Off,Maximum Y-value 为 300,如图 8 所示;波形如图 9 所示图 94.2.4 程序清单程序清单*- 文件信息 - ;* ;* 文件名称 : Example_DSP281x_da.c ;* 适用平台 : DSP 专家 4 实验箱 ;* CPU 类型 : DSP TMS320F2812 ;* 软件环境 : CCS2.20 (2000 系列) ;* 试验接线 :
9、1、F2812CPU 板的 JUMP1 的 2 和 3 脚短接,JUMP2 的 1 和 2 脚短接; ;* 2、实验箱底板的开关 K9 拨到右侧,选择 CPU2. ;* 试验现象 : 设置好 CCS 的环境,打开本工程,编译、下载、运行。 ;* 利用示波器观察实验箱 DA 单元的二号孔“输出 1“有正弦波输出。 ;* 地址译码说明:基地址(0x80000) */ /*头文件*/ #include “DSP281x_Device.h“ / DSP281x Headerfile Include File #include “DSP281x_Examples.h“ / DSP281x Example
10、s Include File #include “math.h“ #define pi 3.1415926 /*全局变量*/ unsigned int curve128; unsigned int curve1128; unsigned int curve2128; / Prototype statements for functions found within this file. / interrupt void ISRTimer2(void);void spi_init(void); /void spi_fifo_init(void); void delay(void); void m
11、ain(void) int i,p,data; / Step 1. Initialize System Control: / PLL, WatchDog, enable Peripheral Clocks / This example function is found in the DSP281x_SysCtrl.c file.InitSysCtrl(); / Step 2. Initalize GPIO: / This example function is found in the DSP281x_Gpio.c file and / illustrates how to set the
12、GPIO to its default state. / InitGpio(); / Skipped for this example / Setup only the GP I/O only for SPI functionalityEALLOW;GpioMuxRegs.GPFMUX.all=0x000F;/ Select GPIOs to be SPI pins / Port F MUX - x000 0000 0000 1111EDIS;/ Step 3. Clear all interrupts and initialize PIE vector table: / Disable CP
13、U interrupts DINT; / Initialize 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 DSP281x_PieCtrl.c file.InitPieCtrl();/禁止 CPU 中断清楚中断标志位IER = 0x0000;IFR = 0x0000;/ Initialize the PIE vector table
14、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 DSP281x_DefaultIsr.c. / This function is found in DSP281x_PieVect.c.Init
15、PieVectTable();/ Step 4. Initialize all the Device Peripherals: / This function is found in DSP281x_InitPeripherals.c / InitPeripherals(); / Not required for this example/ spi_fifo_init(); / Initialize the Spi FIFOspi_init(); / init SPIfor(i=0; i128;i+) /*产生 128 个点的正弦信号波形*/data=(int)(127.5*(1+sin(2*pi*i/127); curve