MSP430控制的基于DDS的波形发生器设计.docx
- 文档编号:8776686
- 上传时间:2023-05-14
- 格式:DOCX
- 页数:50
- 大小:3.86MB
MSP430控制的基于DDS的波形发生器设计.docx
《MSP430控制的基于DDS的波形发生器设计.docx》由会员分享,可在线阅读,更多相关《MSP430控制的基于DDS的波形发生器设计.docx(50页珍藏版)》请在冰点文库上搜索。
华中科技大学电子与信息工程系
2011年TI杯电子设计大赛项目总结报告
题目:
MSP430控制的基于DDS的波形发生器设计
组长:
何永天(提高0801班U200814111)
组员:
李恋阳(提高0801班U200812892)
袁园(提高0802班U200813900)
杨春风(电信0804班U200812791)
吴文彬(电信0806班U200812863)
指导老师:
陈林
日期:
2011.7.8
目录
1 设计目标 4
1.1 基本功能 4
1.2 扩展功能 4
2 团队组成 5
3 系统设计方案 5
3.1 几种初步方案 5
3.1.1 方案一 5
3.1.2 方案二 6
3.1.3 方案的比较 6
3.2 器件选型 7
3.2.1 单片机 7
3.2.2 数模转换DAC 7
3.2.3 压控增益放大器 7
3.2.4 运算放大器 8
4 系统硬件设计与实现 8
4.1 系统框图 8
4.2 系统电路图 9
4.3 器件清单 9
4.4 模块分析 10
4.4.1 DDS 10
4.4.2 幅度控制 11
4.4.3 放大稳压 13
4.4.4 自选波形 14
4.4.5 键盘 14
4.4.6 LCD显示 15
5 系统软件设计与实现 16
5.1 总体设计框图 16
5.2 初始化 17
5.3 DDS 18
5.4 LCD显示 19
5.5 DAC 21
5.6 键盘 22
6 系统测试与结果 26
6.1 总体方案选择 26
6.1.1 原方案 26
6.1.2 遇到的障碍:
27
6.1.3 改进方案:
27
6.2 硬件电路测试 27
6.2.1 VCA810压控放大器 27
6.2.2 OPA1632 28
6.2.3 级联 28
6.2.4 关于换备选方案 28
6.3 系统联调结果 28
6.3.1 三角波、正弦波、方波测试结果 28
6.3.2 扩展波形的测试结果 32
6.3.3 扩展扫频功能的测试结果 33
7 结束语 33
7.1 目标完成情况 33
7.2 感想 33
8 参考文献 34
9 附录 34
9.1 电路图 34
9.2 源码清单 35
50
1.设计目标
设计并制作一个波形发生器,该波形发生器能产生正弦波、方波、三角波和由用户编辑的特定波形,并根据用户输入选择产生指定类型与参数的波形,同时在必要的辅助输出显示设备上显示产生波形的类型与参数。
1.1基本功能
l具有产生正弦波、方波、三角波三种周期性波形的功能;
l输出波形的频率范围为100Hz-20KHz(非正弦波频率按10次谐波计算);重复频率可调,频率步进间隔≤100Hz。
l输出波形幅度范围0-5V(峰峰值),可按步进0.1V(峰峰值)调整。
l由外界按键输入选择产生波形的种类、频率与峰峰值;
l界面显示输出波形的类型、重复频率(周期)和幅度。
1.2扩展功能
l输出波形频率范围扩展至100Hz-200KHz。
l用键盘或其它输入装置产生任意波形。
l增加稳幅输出功能,当负载变化时,输出电压幅度变化不大于±3%(负载电阻变化范围:
100Ω)。
l可产生单次或多次(1000次以下)特定波形(如产生1个半周期三角波输出)。
l具有掉电存储功能,可存储掉电前用户编辑的波形和设置。
l其它(如增加频谱分析、失真度分析、频率扩展大于200KHz、扫描输出等功能)。
2团队组成
我们的工作分为以下模块(详细分工在个人报告中叙述)
l前期:
收集资料、方案设计、器件选型
l硬件部分:
电路参数设计、proteus制图及硬件仿真、各单级调试、PCB布线、通用版布线、电路焊接、排查焊接错误
l软件部分:
LCD模块、键盘扫描模块、DDS模块、调频、扫频、模块间接口设计与实现、自选波形模块(DA部分)、软件联调
l后期:
硬件级联调试、软件联调报告书写、文档排版、幻灯片演示、视频制作、答辩展示
3系统设计方案
3.1几种初步方案
3.1.1方案一
由MSP43F149单片机产生三角波、正弦波和方波,并且控制波形之间的转换,以及波信号的频率和幅度。
用LCD液晶显示模块显示波形的种类和相关参数。
单片机输出数字信号,通过DAC进行数模转换。
采用低通滤波器滤除DAC转换过程中形成的高频小锯齿波,运算放大器进行放大,电压跟随器稳幅,最后送入示波器显示信号。
3.1.2方案二
用DDS(直接数字合成DirectDigitalSynthesis)芯片产生三角波、正弦波和方波,并用MSP430单片机送控制字给DDS以控制波形之间的转换,以及波信号的频率,通过TI公司的VCA810压控放大器芯片进行调幅。
然后通过滤波器滤除高频噪声,通过放大电路对信号进行放大,之后通过缓冲对信号进行稳幅,最后送入示波器显示信号,用单片机产生任意波形和其他扩展功能。
3.1.3方案的比较
方案一的基本思路是用单片机发出指令输出相应的数字量,然后通过DA产生要求的模拟量,但是存在一个致命的问题,那就是本次的频率基本要求为100Hz-20KHz,扩展要求是100-200KHz,但是通常的MSP430系列单片机的晶振一般为8M左右,指令周期是机器周期,可达1/8ms,所以对生成方波来说还可以,而要合成三角波或正弦波则存在很多问题,程序实现难度很大,所以我们最终放弃了这个方案。
方案二的基本思路是走两条路,使用DDS芯片产生三种基本波形,用单片机实现任意波形以及控制和显示等功能,容易对功能进行扩充,且外围电路简单,系统可靠性较高,编程实现较为简单,整个系统成本较低,我们最终选择了这个方案。
信号初步产生之后都要经过滤波、放大、缓冲输出等电路,各个方案下的设计大同小异,主要还是需要稳定可靠,带宽很宽。
3.2器件选型
3.2.1单片机
选用MSP430F5438单片机,因为在种类和数量繁多的单片机中,TI的MSP430系列颇具特色,并具有良好的性能。
3.2.2数模转换DAC
按照设计好的方案,扩展功能中的任选波形用DA来实现,有2种方法:
外接DAC0832或者自带的DAC5571。
l自带的DAC5571
优点:
使用较简单(因为有完整的test代码和文档,而且已经集成在5438的开发板上);缺点:
速度上不去(因为5438自带的操作DA用来产生任选波形的代码要放在main中,但main函数比较庞大,影响了任选波形的频率)
l外接DAC0832
优点:
可以自己去设计DA的驱动函数,产生的任选波形的频率较高;缺点:
设计和搭电路较复杂(0832的输出端还要加运放来将电流输出转换成电压输出)
我们选择第一种自带DA
3.2.3压控增益放大器
比较两个选择:
VCA810和VCA822。
具体来说,我们比较它们的增益带宽积,输出(驱动)电流,及我们对芯片的熟悉程度。
最后决定选择VCA810,利用DAC产生控制电压改变放大器的增益。
控制电压和放大器增益成线性,方便实现精确的增益控制。
VCA810的最小增益步进仅取决于DAC的位数,可以实现增益微调,为闭环改善放大器的性能提供方便。
3.2.4运算放大器
主要考虑因素有增益带宽积,输出驱动电流(表明带负载的能力),噪声电压,电路复杂程度,对芯片的熟悉程度和价格,对于常用的几个比较结果如下:
lOPA1632:
增益带宽积:
180MHZ;输出驱动电流:
150mA
lOPA551:
带宽:
3MHZ;,增益带宽积:
3MHZ;输出驱动电流:
200mA
lOPA552:
带宽:
12MHZ,增益带宽积:
3MHZ;输出驱动电流:
200mA
lNE5532:
小信号带宽:
10MHZ,输出驱动电流:
60mA
lTHS4031:
增益带宽积:
100MHZ,输出驱动电流:
90mA
lTHS4521:
带宽:
145MHZ,输出驱动电流:
100mA
luA741:
增益带宽积:
1MHZ,输出驱动电流:
25mA
l综合考虑,opa1632各项性能比其他芯片要好很多,因此决定选用opa1632
4系统硬件设计与实现
4.1系统框图
由MSP430单片机通过3个SPI接口控制AD9833产生各种频率的正弦波、三角波、方波,经放大整形电路后输出,并通过独立的按键切换输出的波形,也可改变频率和幅度以及频率和幅度变化的步进(通过软硬件的配合)。
通过TFT液晶模块和独立按键进行人机交互。
系统上电后检查启动按键是否按下,当启动按下被按下时,启动各个模块,与此同时检查被按下的按键值。
当检查到不同的按键被按下时,由MSP430通过SPI控制AD9833进行相应的改变。
4.2系统电路图
其中DDS模块较为复杂,上图只是外部接口。
其详细电路设计如下图所示:
4.3器件清单
lmsp430f5438开发板(1个)
lVCA810压控增益放大器(1个)
lOPA1632放大器(3个)
lAD9833(1个)
lUA741放大器(1个)
l电阻,电容,导线若干
4.4模块分析
4.4.1DDS
1)AD9833介绍
AD9833是ADI公司的一款低功耗的DDS器件,能够输出正弦波、三角波、方波。
AD9833无需外接元件,输出频率和相位可通过软件编程设置,易于调节。
其频率寄存器为28位,主频时钟为25MHz时,其精度为0.1Hz;主频时钟为lMHz时.精度可达0.004Hz.
AD9833内部有5个可编程寄存器:
1个16位控制寄存器,用于设置器件_T作模式;2个28位频率寄存器和2个12位相位寄存器,分别用于设置器件输出正弦波的频率和相位。
它的SIN-ROM查询表把输入的地址相位信息映射成正弦波幅值的数字量信号,驱动D/A转换器输出模拟量。
输出正弦波频率为:
fout=FREQREG(fMCLK/228)
式中:
FREQREG为频率控制字,由频率寄存器FREQOREG或FREQlREG的值给定,其范围为
0≤M<228-1
fMCLK为参考时钟频率。
2)从单片机输入控制字
AD9833模块有3根串行接口线,分别是FSYNC、SCLK和SDATA,与SPI、QSPI、MI-CROWIRE和DSP接口标准兼容,在串口时钟SCLK的作用下,数据是以16位的方式加载到设备上,FSYNC引脚是使能引脚,电平触发方式,低电平有效。
进行串行数据传输时,FSYNC引脚置低,在16个SCLK的下降沿数据通过SDATA引脚被送到AD9833的输入移位寄存器。
因此,此处我们通过3个100Ω的电阻进行限流,并将这3个引脚接到单片机MSP430F5438的P9.4、P9.3和P9.2脚,通过单片机来控制AD9833。
下图是SCI串行数据通信的时序图:
3)从Vout的各种输出
OPBITENBit
MODEBit
DIV2Bit
VOUTPin
0
0
X
正弦波
0
1
X
三角波
1
0
0
DAC数据的MSB/2
1
0
1
DAC数据的MSB
其中MSB/2和MSB对应为方波,且MSB/2为MSB频率的一半。
即正弦波,三角波,方波对应的频率控制字分别为:
0x2000,,0x2002,0x2028(MSB方波),0x2020(MSB/2方波)。
4)完整工作流程简介
l虽然MSP430单片机具有硬件SPI总线功能,但是一次只能传输8位数据位,而AD9833在接收数据时是16位数据位,因此,需要用软件模拟SPI总线;
lAD9833在接收16位数据时是高位在前,低位在后;
l先发送控制寄存器字然后发送想要的频率字;
l发送数据前必须把FSYNC置成低电平,发送完以后把FSYNC置成高电平;
l当对AD9833初始化时,为了避免DAC产生虚假输出,RESET必须置为1,直到配置完毕,需要输出时才将RESET置为0。
RESET为0后的8~9个MCLK时钟周期就可在DAC的输出端观察到波形。
l在+5V的电源电压下DDS的输出峰峰值为:
0.6V,但测试后发现三角波和正弦波的输出峰峰值在0.68V左右,而方波的输出峰峰值超过6V,这也成为后面处理的一个考虑的比较多的问题
4.4.2幅度控制
1)我们考虑了如下四种方案:
i.由数控电位器组成的电阻分压网络控制幅度。
ii.采用峰值检波器获得输出端的电压幅值,经A/D采样后得到输出端当前的电压幅值,然后就得到了输出当前的电压幅值,然后通过与预设的输出幅值比较就可以知道输出下降的情况。
并由单片机控制放大器增加放大倍数,直至输出幅值调整到预期值。
iii.采用一级D/A转换实现。
直接将DDFS产生的信号作为参考电压输入到D/A中,这样D/A就成为一个数控可变增益放大器,通过改变D/A的转换数据就可以控制输出幅度。
iv.数模转换和幅度控制部分采用双D/A技术,由单片机控制,第一级D/A的输出波形作为第二级D/A的基准电压源,以此来控制信号发生器的输出电压幅度。
最后经分析和试验,方案四电路简单、通过软件控制、可控性强,故采用这种方案。
2)VCA810介绍
本实验中,调幅部分我们选用TI公司的VCA810芯片,VCA810是一个宽带、连续变化、电压控制增益放大器。
它提供了一个对差分输入单端输出转换与高阻抗输入用来改变增益控制的增益线性范围为-40dB到+40dB在dB/V。
供给电压±5V、VCA810增益控制电压在0V时为-40dB,在-2V为+40dB。
增加地面控制电压将衰减信号>80dB。
信号带宽和压摆率保持在整个增益调节范围内保持恒定。
这40db/V增益控制在±1.5db(最高误差范围±0.9db),让应用程序在一个AGC增益控制电压精确到作为接收信号强度指示器(RSSI)的使用精度为±1.5db。
通过调节控制电压(Vc)来控制压控增益放大器VCA810的放大增益,从而控制正确的输出。
VCA810作为压控增益的主要部分,其增益与控制电压的关系为:
G=-40(VC+1)
其中,Vc表示控制电压,可见,VCA810的增益与其控制电压成线性关系,只要用单片机控制D/A输出一线性变化的控制电压给Vc,便可得到线性变化的电压增益输出
理论上VCA810可调的放大倍数为1/100~100,实际上由于DDS输出的正弦波和三角波幅度为680mV,方波的幅度为6.8V左右,而且VCA的工作电压只有-5V~+5V,所以放大倍数不可能为100倍,差不多达到7、8倍,但是缩小则可以到1/100。
为了确保调节的精确,我们采用VCA810的缩小功能,提供给它的参考电压为0~-1V。
经过这一级缩小后,再送入后级放大。
3)uA741反相模块
由于我们采用的MSP430单片机自带DA模块,所以没有外接DA,利用单片机给DA写控制字,使DA输出幅值可变的电压作为VCA810的参考电压。
从DA输出的电压幅度值范围为0~3.3V,而VCA810要求的参考电压为0~-1V,所以需要反相和缩小,利用简单的uA741实现,电路如下:
4.4.3放大稳压
1)OPA1632介绍
设计运算放大器时,我们考虑了许多不同型号的运放,功能各异,主要考虑增益带宽积,输出驱动电流(表明带负载的能力),噪声电压,(电路复杂程度,芯片熟悉程度,价格)等等。
TI公司的OPA1632是音频运算放大器,性能比较好。
增益带宽积为180MHZ,输出驱动电流为150mA。
可以工作在较高频率下而不出现失真,且驱动能力较好。
2)功能实现
该实验中,我们主要用OPA1632设计放大电路和电压跟随器。
放大电路主要分为同相比例放大器和反相比例放大器两种。
反相比例放大器同相比例放大器
反相放大电路有如下特点:
l运放两个输入端电压相等并等于0,故没有共模输入信号,这样对运放的共模抑制比没有特殊要求。
lvN=vP,而vP=0,反相端N没有真正接地,故称虚地点。
l电路在深度负反馈条件下,电路的输入电阻为R1,输出电阻近似为零。
l输入输出关系:
Vo=-RfRlVs
同相比例运算电路的特点如下:
l输入电阻很高,输出电阻很低。
l由于vN=vP=vS,电路不存在虚地,且运放存在共模输入信号,因此要求运放有较高的共模抑制比。
l输入输出关系:
Vo=(1+RfRl)Vs
由于实际放大倍数比理论值低,所以我们设计Rf=100千欧,R1=5.1千欧,放大倍数约为21倍。
4.4.4自选波形
实现自选波形有两种不同的理解和方法:
l手动描波形,由硬件接收,然后描点显示出来;
l写好一组波形,存在flash内部,通过按键选择
我们实现的是第二种,首先用MATLAB描出想要产生的任意波形,然后取出大量的点写入代码中,将波形描绘出来。
按照设计好的方案,扩展功能中的任选波形用DA来实现,有2种方法:
外接DAC0832或者自带的DAC5571。
l自带的DAC5571
优点:
使用较简单(因为有完整的test代码和文档,而且已经集成在5438的开发板上);缺点:
速度上不去(因为5438自带的操作DA用来产生任选波形的代码要放在main中,但main函数比较庞大,影响了任选波形的频率)
l外接DAC0832
优点:
可以自己去设计DA的驱动函数,产生的任选波形的频率较高;缺点:
设计和搭电路较复杂(0832的输出端还要加运放来将电流输出转换成电压输出)
综上考虑,我们选择使用自带的DAC处理。
4.4.5键盘
本实验中,我们通过按键实现波形切换和调频、调幅。
通过开关实现波形的切换比较简单只需通过输出波形后不断返回到检测开关的子程序中,判断是否有别的开关拨动,如果有别的开关拨动则执行别的程序,否则输出原来的波形,不过如果要能够识别别的开关发生变化,必须将此开关关掉否则会识别不了别的键按下。
当然开关的调频和调幅的实现也一样,不过首先先输出一个波形,然后再检测开关是否需要调频或者调幅,如果需要则转入到相应的程序中,最后再重新输出波形。
下面是我们设计的按键对应控制的功能:
4.4.6LCD显示
我们使用的是BW-DK5438开发板自带的TFT液晶屏,用SPI的SCK端来驱动液晶的写信号,当全屏刷新、区域填充时,刷新速度可达10Mpps,因此可以流畅的运行。
下图是TFT液晶接口示意图:
5系统软件设计与实现
5.1总体设计框图
5.2初始化
1)功能介绍
由于初始化代码由开发板自带,且并不很多实际内容,故仅列出初始化流程,省略具体代码。
2)核心代码
主函数中主要功能包括初始化、扫频功能实现、自选波形功能实现以及键盘扫描。
伪代码如下:
Init();//初始化函数
while
(1)//主函数循环
{
__delay_cycles(2048000);//键盘扫描延迟
if(扫描使能)//扫频功能函数
{
FreqCoeff=(FreqCoeff+1)%99;//当前档位下频率系数递增
DDS输出;LCD显示;
}
elseif(Mode==3)//自选波形函数
{
while(ReadKey()==0xFF)//当无键盘按下时,执行自选波形DAC循环输出
{
自选波形DAC绘制;
}
}
ScanKey();//扫描键盘
}
5.3DDS
1)功能介绍
主要是对AD933进行SPI模拟与单片机进行连接,再根据按键输入的数据分别转换成正弦波、三角波和方波进行输出的程序。
其中转换的格式固定,但是AD9833输出频率时是先低位后高位,区别于SPI模拟时单片机给AD9833数据时是先高位后低位。
FSYNC为使能,低电平可传数据,刚开始必须为高电平,SCLK为时钟,在下降沿对应数据,SDATE为传数据(频率控制字),16位,但可能单片机输出一次性为8位,必须先高8位后低8位给AD9833的SDATA
2)核心代码:
voiddds(void)
{
//WDTCTL=WDTPW+WDTHOLD;//Stopwatchdogtimer
unsignedlongfreq_value;//不是频率!
是计算出的频率控制字
AD9833_SPI_PORT_Init();
output_init();
switch(FreqStep)//根据频率计算频率控制字
{
case0:
freq_value=(unsignedlong)(FreqCoeff*0x400*1.05);
break;
case1:
{
if(FreqCoeff==7)
freq_value=(unsignedlong)(0x11800*1.05);
elseif(FreqCoeff==8)
freq_value=(unsignedlong)(0x13000*1.05*1.05);
elseif(FreqCoeff==9)
freq_value=(unsignedlong)(0x15800*1.05*1.05);
else
freq_value=(unsignedlong)(FreqCoeff*0x2800*1.05);}
break;
case2:
freq_value=(unsignedlong)(FreqCoeff*0x19000*1.05);
break;
case3:
freq_value=(unsignedlong)(FreqCoeff*0xFA000*1.05);
break;
default:
freq_value=0;
break;
}
switch(Mode)//不同Mode调用不同output函数
{
case0:
output_square(freq_value);//Mode=0对应方波
break;
case1:
//Mode=1对应三角波
output_triangle(freq_value);
break;
case2:
//Mode=2对应三角波
output_sinusoid(freq_value);
break;
default:
output_sinusoid(0x00005000);
}
5.4LCD显示
1)功能介绍
完成液晶初始化、显示功能。
由于TFT性能优良、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MSP430 控制 基于 DDS 波形 发生器 设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)