DSP课程设计 3.docx
- 文档编号:25512176
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:12
- 大小:388.62KB
DSP课程设计 3.docx
《DSP课程设计 3.docx》由会员分享,可在线阅读,更多相关《DSP课程设计 3.docx(12页珍藏版)》请在冰豆网上搜索。
DSP课程设计3
深圳大学考试答题纸
(以论文、报告等形式考核专用)
二○一四~二○一五学年度第1学期
课程编号
课程名称
单片机/ARM/DSP技术实践
主讲教师
评分
学号
姓名
专业年级
教师评语:
题目:
基于DSP2812的课程设计
一、实验要求
由外接的信号发生器产生一正弦信号(电压范围:
0~3V),通过DSP的AD功能对此正弦信号进行采集,通过DSP的SCI功能与PC机之间进行通信,把所采集的AD信号发送至PC机端,在超级终端上进行实时显示。
二、实验原理
2.1ADC概述
ADC,即模/数转换器,将模拟量转换成数字量,提供给控制器使用。
TMS320F2812片上有一个12位分辨率、具有流水线结构的模/数转换器,其机构框图如图1所示。
其前端为2个8选1多路切换器和2路同时采样/保持器,构成16个模拟输入通道,模拟通道的切换由硬件自动控制,并将各模拟通道的转换结果顺序存入16个结果寄存器中。
图1ADC机构框图
2.2ADC模块特点
(1)带2个8选1多路切换器和双采样/保持器的12位的ADC,共有16个模拟输入通道;
(2)模拟量输入范围:
0.0V-3.0V;
(3)转换率:
在25MHZ的ADC时钟下为80ns;
(4)转换结果存储在16个结果存储器中;
(5)转换结果=4095*(输入的模拟信号-ADCLO)/3;
(6)多种A/D触发方式:
软件启动、EVA和EVB;
(7)灵活中断方式:
可以在每次转换结束或每隔一次转换结束触发中断;
3.ADC转换步骤
(1)初始化DSP系统;
(2)设置PIE中断矢量表;
(3)初始化ADC模块;
(4)将ADC中断的入口地址装入PIE中断矢量表中,开中断;
(5)软件启动ADC转换;
(6)等待ADC中断;
(7)在ADC中断中读取ADC转换结果,软件启动下一次ADC中断。
三、实验实现
3.1硬件方案设计
本实验以TMS320F2812为核心控制部件,利用软件编程,通过ADC模块对试验箱上的信号发生器发出的正弦信号进行采集,由于试验箱上的信号发生器只能调节到2V,所以此次实验只针对2V的正弦信号,再通过串口线与PC机连接,将采集转换的数字信号传送到PC机端的串口助手,并还原成采集时的电压值。
硬件框架图如图2所示。
本次ADC采用SEED-DEC2812的AD接口的ADCINA6通道。
图2硬件框架图
3.2软件设计
程序主体沿用AD采样例程,用定时器产生中断,在中断程序中对电压信号进行AD转换并将转换值通过串口发送到电脑,在电脑上用串口助手对采样值进行实时显示。
主要工作:
是在AD程序的基础上初始化串口、修改中断程序及更改采样率、波特率参数。
程序要解决问题:
1、采样值的转换
2、采样率及波特率的设置
串口初始化程序可以直接使用SCI例程中的初始化程序,下面只介绍中断程序设计及采样率、波特率参数设置
中断程序设计
在中断程序中对电压信号进行采集,然后将采集到的12位有效值转换成实际电压值,取电压值的三位有效数字以字符形式用串口发送,这里要注意的是AD采集的12位有效数字在寄存器中是靠左放置的,需要右移四位后才能对其转换。
图3中断程序图
SCI波特率设置
SCI波特率的大小决定串口能每秒传送的数据多少,若太小则会限制采样率,本实验选择串口助手的最大波特率115200b/s,则:
1、每秒理论上能传送的字节数:
115200/10=11520B
2、波特值BRR由公式
可得BRR=40,在串口初始化程序中设置SciaRegs.SCILBAUD=0x28,可以把波特率设置成115200b/s。
图4串口初始化程序图
采样率设置
采样率受波特率和信号频率两方面控制
1、115200b/s波特率下最大采样率为
2、信号频率为100HZ,根据采样定理采样率要大于
综合考虑设采样率为1000HZ在单位周期内采样十次,采样率可以通过在主程序中ConfigCpuTimer(&CpuTimer2,150,1000)设置,通过设置周期值(1000us)可以确定采样率1000。
图4部分主程序程序图
3.3软件调试
软件调试是通过对程序的编译、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。
本设计的软件调试使用CCS3.3测试软件进行调试,即可看到正确的测试结果,从而最终实现利用ADC采集正弦信号。
四、实验结果分析
1.实验箱的信号发生器上的设置如图5所示。
图5信号发生器设置
2.PC端上串口助手显示接收的数据,如图6所示。
图6串口调试助手界面
3.采用matlab对上图的数据进行绘图,如图7所示,横坐标为时间/s,y轴为幅值,图中可以较直观的显示出经AD采集到的正弦信号发送到PC机上也是正弦信号的数据。
图7MATLAB绘制图
五、实验结论
通过本次实验我们掌握DSP芯片功能及其在实际中的应用方法,对于DSP基础知识的了解。
学习到了很过关于DSPAD模块和SCI的知识,并且更加巩固和掌握了课堂上所学的课本知识,是自己对DSP技术有了更进一步的认识和了解。
本实验是由实验箱的信号发生器产生一正弦信号(电压范围:
0~2V),通过DSP的AD功能对此正弦信号进行采集,通过DSP的SCI功能与PC机之间进行通信,把所采集的AD信号发送至PC机端,在超级终端上进行实时显示。
本实验最终达到了实验要求,实现了电压值的实时显示。
附录
实验代码如下所示:
#include
#include"DSP28_Device.h"
#include"comm.h"
///////////////////////////////////////////////////////////////////
#defineSAMPLERATE1
unsignedintuart_sendtype;
unsignedintSampleRate;
unsignedintSampleLong=1024;
///////////////////
unsignedinti,j;
unsignedintAd_data[10]={0};
charsend[5]={0};
floatresults=0;
floattemp=0;
//////////////////
unsignedintconvcount=0;
volatileunsignedintadconvover=0;
//Prototypestatementsforfunctionsfoundwithinthisfile.
interruptvoidISRTimer2(void);
interruptvoidad(void);
voidmain(void)
{
/*初始化系统*/
InitSysCtrl();
#ifSAMPLERATE==1
SampleRate=ADSAMPL8K;
#endif
/*关中断*/
DINT;
IER=0x0000;
IFR=0x0000;
/*初始化PIE中断*/
InitPieCtrl();
/*初始化PIE中断矢量表*/
InitPieVectTable();
//初始化cputimer
InitCpuTimers();
InitSci();
/*设置中断服务程序入口地址*/
EALLOW;//ThisisneededtowritetoEALLOWprotectedregisters
PieVectTable.TINT2=&ISRTimer2;
PieVectTable.ADCINT=&ad;
EDIS;//ThisisneededtodisablewritetoEALLOWprotectedregisters
/*开中断*/
IER|=M_INT1;//ADC中断
EINT;//EnableGlobalinterruptINTM
ERTM;//EnableGlobalrealtimeinterruptDBGM
/*启动AD采样*/
/*AD采样率*/
adconvover=0;
switch(SampleRate){
caseADSAMPL8K:
//采样率为1k
DINT;
/*设置CPU*/
ConfigCpuTimer(&CpuTimer2,150,1000);
StartCpuTimer2();
/*开中断*/
IER|=M_INT14;
EINT;
InitAdc();
SampleRate=0;
break;
default:
break;
}
for(;;)
{
}
}
interruptvoidad(void)
{
IFR=0x0000;
PieCtrl.PIEACK.all=0xffff;
Ad_data[0]=AdcRegs.RESULT0;
temp=Ad_data[0]>>4;
results=(temp/4095.0)*3.0;
results=results*100;
send[3]=(int)results%10+0x30;
results=results/10;
send[2]=(int)results%10+0x30;
send[1]='.';
results=results/10;
send[0]=(int)results+0x30;
send[4]='\n';
for(i=0;i<5;i++)
{
SciaRegs.SCITXBUF=send[i];
while(!
SciaTx_Ready());
}
}
interruptvoidISRTimer2(void)
{
AdcRegs.ADC_ST_FLAG.bit.INT_SEQ1_CLR=1;
AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;
}
串口初始化子程序
void InitSci(void)
{
// Initialize SCI-A:
*UART_MODE = 0x44;
EALLOW;
GpioMuxRegs.GPFMUX.all = 0x0030;
EDIS;
/* loopback 8 bit data */
SciaRegs.SCICCR.all = 0x07;
SciaRegs.SCICTL1.all = 0x03;
SciaRegs.SCICTL2.all = 0x03;
SciaRegs.SCIHBAUD = 0x00;
SciaRegs.SCILBAUD = 0x28;//波特率为115200b/s
SciaRegs.SCICTL1.all = 0x23;
PieCtrl.PIEIER9.bit.INTx1 = 1;
//PieCtrl.PIEIER9.bit.INTx2 = 1;
//tbd...
// Initialize SCI-B:
//tbd...
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP课程设计 DSP 课程设计