DSP实验报告
1. DSP 源文件的建立; 2. DSP 程序工程文件的建立; 3. 掌握 C 语言在 DSP 中的应用。
三、 实验背景知识
当使用标准 C 语言编制的程序时,其源程序文件名的后缀应为.c。CCS 在 编译标准 C 语言程序时,首先将其编译成相应汇编语言程序,再进一步编译成 目标 DSP 的可执行代码。最后生成的是 coff 格式的可下载到 DSP 中运行的文 件,其文件名后缀为.out。由于使用 C 语言编制程序,其中调用的标准 C 的库 函数由专门的库提供,在编译连接时编译系统还负责构建 C 运行环境。所以用 户工程中需要注明使用 C 的支持库。
#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)
1
DSP 实验报告
院(系)名称 自动化科学与电气工程学院
学生姓名
学号
任课老师
吴冠
2014 年 6 月
DSP 实验报告
实验 1 CCS 入门实验 2(C 语言的使用)
一、 实验目的
1. 学习用标准 C 语言编制程序;了解常用的 C 语言程序设计方法和组成部 分。
2. 熟悉使用软件仿真方式调试程序。
二、 实验内容
4
DSP 实验报告
9. DSP2833X_SysCtrl.c: 包含系统初始化函数等。 10. 28335.cmd: 声明了系统的存储器配置与程序各段的连接关系。 11. 28335.gel:系统初始化 12. *.h:各个源文件的头文件 13. rts2800_fpu32.l:库函数文件 主程序:
二、 实验内容
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,每次转换能够编程选择
ERTM;
// Enable Global realtime interrupt DBGM
LoopCount = 0;
ConversionCount = 0;
AdcRegs.ADCTRL1.bit.ACQ_PS = ADC_Sห้องสมุดไป่ตู้CLK;
AdcRegs.ADCTRL3.bit.ADCCLKPS = ADC_CKPS;
六、 实验结果
七、 实验感想 本次试验过程中我初步了解了 DSP 编程和实验箱的使用方法,学会了使用软
件方式调试程序,为以后的实验打下一定基础。
2
DSP 实验报告
实验 2 片上外设实验 3——AD 采集实验
一、 实验目的
1. 了解 TMS320F28335 片上外设 AD; 2. 熟悉片上 AD 的使用; 3. 利用片上 AD 进行数据采集。
#define BUF_SIZE 160 // Sample buffer size
Uint16 LoopCount; Uint16 ConversionCount; Uint16 Voltage1[1024];
main() {
InitSysCtrl(); InitGpio(); // Skipped for this example DINT; InitPieCtrl(); IER = 0x0000; IFR = 0x0000;
AdcRegs.ADCTRL1.bit.SEQ_CASC = 1;
// 0 Non-Cascaded Mode; 1 Cascaded
Mode
AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 0x1;
AdcRegs.ADCTRL2.bit.RST_SEQ1 = 0x1;
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x6;
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File #include "DSP2833x_Examples.h" // DSP2833x Examples Include File
interrupt void adc_isr(void);
四、 实验主程序
1. add.c:实验的主程序。 2. 28335.gel:系统初始化 3. 28335.cmd: 声明了系统的存储器配置与程序各段的连接关系。 Add.c 中程序:
#include <stdio.h>
/* ======== main ======== */ void main(){
InitPieVectTable(); EALLOW; // This is needed to write to EALLOW protected register PieVectTable.ADCINT = &adc_isr; EDIS; // This is needed to disable write to EALLOW protected registers
四、 实验主程序
片上 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 模块初始化和操作函数。
16 路通道的任何 1 个; 6) 排序可以选择 2 个独立的 8 通道排序或者是 1 个大的 16 通道排序; 7) 转换结果存储在 16 个寄存器中;转换结果=4095×(输入的模拟信号
-ADCLO)÷3; 8) 有多重触发 AD 转换方式:软件启动、EVA 和 EVB; 9) 中断控制方式灵活,可以在每次转换结束或每隔一次转换结束触发中断;
#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
AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 0x1 ;
return;
}
6
五、 程序流程图
DSP 实验报告
7
DSP 实验报告
六、 实验准备 1. 将 DSP 仿真器与计算机连接好; 2. 将 DSP 仿真器的 JTAG 插头与 SEED-DEC28335 单元的 J18 相连接; 3. 打开 SEED-DEC28335 的电源。观察 SEED-DTK_MBoard 单元的+5V,
5
DSP 实验报告
InitAdc(); // For this example, init the ADC
PieCtrlRegs.PIEIER1.bit.INTx6 = 1;
IER |= M_INT1; // Enable CPU Interrupt 1
EINT;
// Enable Global interrupt INTM
AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 15;
AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 0x1 ;
// Wait for ADC interrupt
for(;;);
}
interrupt void adc_isr(void)
{
Voltage1[ConversionCount] = AdcRegs.ADCRESULT0 >>4;
#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
AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1;
// Reset SEQ1
AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;
// Clear INT SEQ1 bit
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; // Acknowledge interrupt to PIE
2. ADC 管脚信号 ADC 管脚由模拟量输入部分、ADC 设置部分和 ADC 电源三部分构成。 1) 拟量输入部分:
3
DSP 实验报告