当前位置:文档之家› DSP实验报告

DSP实验报告

DSP实验报告院(系)名称自动化科学与电气工程学院学生姓名学号任课老师吴冠2014年 6 月实验1 CCS入门实验2(C语言的使用)一、实验目的1. 学习用标准C 语言编制程序;了解常用的C 语言程序设计方法和组成部分。

2. 熟悉使用软件仿真方式调试程序。

二、实验内容1. DSP源文件的建立;2. DSP程序工程文件的建立;3. 掌握C语言在DSP中的应用。

三、实验背景知识当使用标准C 语言编制的程序时,其源程序文件名的后缀应为.c。

CCS 在编译标准C 语言程序时,首先将其编译成相应汇编语言程序,再进一步编译成目标DSP 的可执行代码。

最后生成的是coff 格式的可下载到DSP 中运行的文件,其文件名后缀为.out。

由于使用C 语言编制程序,其中调用的标准C 的库函数由专门的库提供,在编译连接时编译系统还负责构建C 运行环境。

所以用户工程中需要注明使用C 的支持库。

四、实验主程序1.add.c:实验的主程序。

2.28335.gel:系统初始化3.28335.cmd: 声明了系统的存储器配置与程序各段的连接关系。

Add.c 中程序:#include <stdio.h>/* ======== main ======== */void main(){int a=10;int b=10;int c;c=a+b;for(;;);五、实验步骤1.双击图标进入CCS环境;2.添加工程pjt文件,点击Project →open命令3.在弹出的对话框中选中cadd.pjt文件添加该工程文件。

4.添加gel文件,即右键点击工程视窗中的GEL files,在弹出的菜单中选择laod gel 命令。

5.添加.out文件,即使用File→Load Program菜单命令。

装载add.out文件,进行调试。

.out文件一般存放在程序文件夹的debug文件夹中。

6.打开观察窗口观看变量的值,即使用View→Watch Window菜单命令。

7.打开add.c文件,在22行“for(;;);”设置断点。

8.运行程序,观察结果。

六、实验结果七、实验感想本次试验过程中我初步了解了DSP编程和实验箱的使用方法,学会了使用软件方式调试程序,为以后的实验打下一定基础。

实验2 片上外设实验3——AD采集实验一、实验目的1. 了解TMS320F28335片上外设AD;2. 熟悉片上AD的使用;3. 利用片上AD进行数据采集。

二、实验内容1. 初始化系统;2. 初始化片上AD,进行通道的选则3. AD数据采集。

三、实验背景知识TMS320F28335片内AD简介:当TMS320F28335片内有1个带采样保持电路的12BIT的A/D转换模块。

1. ADC特点:1) 带S/H的12BIT的ADC;2) 模拟量输入范围:0.0V~3.0V;3) 转换率:在25MHz的ADC时钟下为80ns;4) 16路AD转换通道;5) 自动排序功能可以提供一次触发转换16路AD,每次转换能够编程选择16路通道的任何1个;6) 排序可以选择2个独立的8通道排序或者是1个大的16通道排序;7) 转换结果存储在16个寄存器中;转换结果=4095×(输入的模拟信号-ADCLO)÷3;8) 有多重触发AD转换方式:软件启动、EVA和EVB;9) 中断控制方式灵活,可以在每次转换结束或每隔一次转换结束触发中断;2. ADC管脚信号ADC管脚由模拟量输入部分、ADC设置部分和ADC电源三部分构成。

1) 拟量输入部分:A通道输入:ADCINA0~ADCINA7 B通道输入:ADCINB0~ADCINB72) DC设置部分:ADC电压参考输出(2V):ADCREFP ADC电压参考输出(1V):ADCREFM ADC外部电流旁路电阻:ADCRESEXT 测试管脚:ADCBGREFIN ADC模拟地:AVSSREFBG ADC模拟电源:AVDDREFBG ADC公共地:ADCLO3) ADC电源:ADC模拟地:VSSA1、VSSA2 ADC模拟电源:VDDA1、VDDA2 ADC 数字地:VSS1 ADC数字电源:VDD1 ADCIO口地:VDDAIO ADCIO口电源:VSSAIO3. ADC转换步骤:1) 初始化DSP系统;2) 设置PIE中断矢量表,3) 初始化ADC模块;4) 将ADC中断的入口地址装入PIE中断矢量表中,开中断;5) 软件启动ADC转换;6) 等待ADC中断;7) 在ADC中断中读取ADC转换结果,软件启动下一次ADC中断。

AD接口:SEED-DEC28335的AD接口使用了ADCINA0、ADCINA2、ADCINA4以及ADCINA6共四个通道,用户可任选其中一个使用,本例程选用的是ADCINA6。

四、实验主程序片上AD实验,包含文件:1. AD.c:实验主程序,包含了系统初始化,AD初始化,AD中断初始化,Timer 中断初始化,A/D采样及控制其采样频率的Timer中断程序。

2. DSP2833X_Adc.c:包含AD模块初始化。

3. DSP2833X_CpuTimers.c:包含定时器初始化和配置函数。

4. DSP2833X_DefaultIsr.c:包含各中断默认的中断程序。

5. DSP2833X_GlobalVariableDefs.c: 定义各模块的全局变量。

6. DSP2833X_PieCtrl.c: 初始化各PIE控制寄存器。

7. DSP2833X_PieVect.c: PIE中断向量表初始化。

8. DSP2833X_Sci.c: 包含SCI模块初始化和操作函数。

9. DSP2833X_SysCtrl.c: 包含系统初始化函数等。

10. 28335.cmd: 声明了系统的存储器配置与程序各段的连接关系。

11. 28335.gel:系统初始化12. *.h:各个源文件的头文件13. rts2800_fpu32.l:库函数文件主程序:#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File#include "DSP2833x_Examples.h" // DSP2833x Examples Include Fileinterrupt void adc_isr(void);#if (CPU_FRQ_150MHZ) // Default - 150 MHz SYSCLKOUT#define ADC_MODCLK 0x3 // HSPCLK = SYSCLKOUT/2*ADC_MODCLK2 = 150/(2*3) = 25.0 MHz#endif#if (CPU_FRQ_100MHZ)#define ADC_MODCLK 0x2 // HSPCLK = SYSCLKOUT/2*ADC_MODCLK2 = 100/(2*2) = 25.0 MHz#endif#define ADC_CKPS 0x1 // ADC module clock = HSPCLK/2*ADC_CKPS =25.0MHz/(1*2) = 12.5MHz#define ADC_SHCLK 0xf // S/H width in ADC module periods = 16 ADC clocks#define AVG 1000 // Average sample limit#define ZOFFSET 0x00 // Average Zero offset#define BUF_SIZE 160 // Sample buffer sizeUint16 LoopCount;Uint16 ConversionCount;Uint16 Voltage1[1024];main(){InitSysCtrl();InitGpio(); // Skipped for this exampleDINT;InitPieCtrl();IER = 0x0000;IFR = 0x0000;InitPieVectTable();EALLOW; // This is needed to write to EALLOW protected registerPieVectTable.ADCINT = &adc_isr;EDIS; // This is needed to disable write to EALLOW protected registersInitAdc(); // For this example, init the ADCPieCtrlRegs.PIEIER1.bit.INTx6 = 1;IER |= M_INT1; // Enable CPU Interrupt 1EINT; // Enable Global interrupt INTMERTM; // Enable Global realtime interrupt DBGMLoopCount = 0;ConversionCount = 0;AdcRegs.ADCTRL1.bit.ACQ_PS = ADC_SHCLK;AdcRegs.ADCTRL3.bit.ADCCLKPS = ADC_CKPS;AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; // 0 Non-Cascaded Mode; 1 Cascaded ModeAdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 0x1;AdcRegs.ADCTRL2.bit.RST_SEQ1 = 0x1;AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x6;AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 15;AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 0x1 ;// Wait for ADC interruptfor(;;);}interrupt void adc_isr(void){V oltage1[ConversionCount] = AdcRegs.ADCRESULT0 >>4;// If 40 conversions have been logged, start overif(ConversionCount == 1024){ConversionCount = 0;}else ConversionCount++;// Reinitialize for next ADC sequenceAdcRegs.ADCTRL2.bit.RST_SEQ1 = 1; // Reset SEQ1AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1; // Clear INT SEQ1 bit PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; // Acknowledge interrupt to PIE AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 0x1 ;return;}五、程序流程图六、实验准备1. 将DSP仿真器与计算机连接好;2. 将DSP仿真器的JTAG插头与SEED-DEC28335单元的J18相连接;3. 打开SEED-DEC28335的电源。

相关主题