基于STM32的可编程函数信号发生器设计

2014-04-29 07:39石孟楠蔡坤陈鸣鸠李光智
电子世界 2014年17期

石孟楠 蔡坤 陈鸣鸠 李光智

【摘要】该文设计了一种基于STM32和DAC8871的可编程函数信号发生器。该装置由STM32子系统、DA转换电路、电压基准电路、Flash存储电路、波形选择电路及显示电路六大部分组成。该装置采用SPI通信方式,可同时产生六种幅值可调(可达±15V)、频率可变的不规则波形信号。

【关键词】STM32;DA转换;不规则波形;函数信号发生器

引言

函数信号发生器是电子测量、电子设备开发及电子工程相关课程实验必备的仪器设备之一,除供通信,仪表和信号采集处理,自动控制系统测试用外,还广泛用于其他非电测量领域。不过,现今多数函数信号发生器仅能产生固定的常规波形信号,如:三角波、阶梯波、方波及正弦波等。为此,笔者提出一种基于STM32的可编程函数信号发生器的设计方法。该方法以STM32单片机为核心,从Flash芯片读取波形信息,通过DAC8871进行DA转换,得到各种非常规波形,并可通过外部中断口实现不同波形的选择,而且可通过电压基准电路调节和末端运放调节输出信号的增益来实现波形幅度的调节,能满足产生任意波形的需求。

1.系统总体结构

本装置的总体结构图如图1所示。本系统主要分为STM32子系统、DA转换电路、电压基准电路、Flash存储电路、波形选择电路以及显示电路六大部分。首先,系统从Flash芯片中读取不规则波形数组信息,通过SPI2口传送入STM32,由外部中断口检测波形的选择,再通过SPI1口将波形数字信号传送到DAC8871进行DA转换,经过电压基准电路以及运放电路对其幅度的调节后,最终输出不规则的模拟信号波形。

图1 系统总体结构图

2.硬件设计

2.1 STM32子系统及Flash存储电路

STM32子系统及Flash存储电路图如图2所示。STM32子系统以意法半导体(ST)公司生产的32位中容量ARM芯片STM32F103RBT6[1]为核心,结合复位电路、晶振电路、PL2303接口转换电路及电源电路构成。Flash存储电路主要由一款8MB存储容量的Flash芯片W25Q64BVSIG[2]组成,采用SPI串行通信模式。如图2所示,STM32子系统与Flash存储电路将通过SPI2口进行通信。图2中key1—key6分别为波形选择按键,该装置采用外部中断触发方式进行输出波形的选择切换。该装置显示器采用LCD1602,如图1中RB[0..7]为数据端,RS、RW、E分别为显示器读写控制端和使能端。

图2 STM32子系统及Flash存储电路

2.2 DA转换电路

DA转换电路可分为DAC8871[3]转换电路部分和运算放大器电路部分,如图3所示。DAC8871是一款由TI公司生产的16位单通道高精度数模转换芯片,采用SPI串行通信方式。/RST为复位控制端,低电平有效。RSTSEL为上电复位选择控制端,决定芯片在上电复位后输出Vout的大小。/CS为片选端,低电平有效,SCLK为DAC8871数据端口时钟,SDI为串行数据通信口,以帧为单位,16位数据为一帧。/LDAC是很重要的控制引脚,它决定了DAC8871的工作模式,当其为低电平时,DAC8871将处于实时更新数据的状态;当其为高电平时,必须在/CS置高的前提下,将/LDAC拉低至少30ns才能更新DAC8871寄存器里的数据。Vcc和Vss为DA芯片工作提供±15V的双电源,Vrefh_F、Vrefh_S、Vrefl_F、Vrefl_S引脚分别接由电压基准电路输出的精密正负电压源,为DAC8871提供数模转换所需参考电压。DAC8871为电压输出型,输出阻抗为6.2k?,输出无缓冲,因此,该DA输出需要外接外部缓冲放大器。该装置中,选择了OPA2604作为DA输出的外接运放,该运放具有大于1MHz的3dB带宽,从而增加了输出的稳定时间。其中,R30为反馈电阻,也为匹配电阻,起到匹配DA芯片输出阻抗作用。

图3 DA转换电路

2.3 电压基准电路

本方案电压基准电路是基于L7805数据手册[4]中一种方案的创新应用,用一款可控精密稳压源TL431[5]代替其中的L78XX系列芯片,原理图如图4所示。三极管Q3、Q4起到开关和电流放大作用,U13为10K电阻器,通过其调节输出电压大小。R27、R28为匹配电阻,将决定基准电压输出的精密性,因此均需采用大小为4.7k?的色环电阻。末端采用T型LC低通滤波电路,滤除高频分量。V+、V-分别为正负基准电压源输出端,作为DAC8871参考电压。

图4 电压基准电路

3.软件设计

本方案中,STM32子系统与DA转换电路及Flash存储电路分别通过SPI1和SPI2口进行SPI串行通信。时钟频率设置为10MHz,SPI1设置为单线单向只发送的主模式,SPI2设置为双线全双工模式。非常规波形数据将通过SPI2存入Flash中,进而再通过SPI2调用波形数据,最后通过SPI1传输到DAC8871进行数模转换,输出信号。

3.1 数据计算

波形数据将以十六进制数组的形式存入Flash芯片中,下述公式可将由MATLAB生成的十进制波形数据转换成实际DA芯片所能识别读取的十六进制数据:

[3]

3.2 程序流程图

图5 系统程序流程图

4.实验结果

如图6.1和图6.2所示,分别为信号源产生的两种非常规波形,由数字示波器测量可得到波形详细的参数。以图6.1波形为例,其峰峰值、周期、频率、占空比分别为:15.8V、1.760ms、568.2Hz、67.4%。信号稳定不失真,且幅度可进行实时调节,最大正电压值可达+15V。

图6.1 信号源波形Ⅰ

图6.2 信号源波形Ⅱ

5.结语

本文以不规则波形信号发生器为研究对象,基于STM32完成了一种操作简单的可编程函数信号发生器的设计与实现。所设计的函数信号发生器可产生各种常规及非常规波形信号,每周期512个采样点,信号幅度可调节,在-15V~+15V之间,频率可调节。是一款实用性强、可调节范围大、精度高、信号稳定、可编程的函数信号发生器,可用于多种需要信号源的场合。

参考文献

[1]STMicroelectronics.STM32RB datasheet [EB/OL].http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/CD00161566.pdf

[2] Winbond.W25Q64BV datasheet [EB/OL].http://www.winbond.com/NR/rdonlyres/591A37FF-007C-4E99-956C-F7EE4A6D9A8F/0/W25Q64BV.pdf

[3]Texas Instruments.DAC8871 datasheet [EB/OL].http://www.ti.com/lit/ds/symlink/dac8871.pdf

[4]STMicroelectronics.L7805 datasheet [EB/OL].http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/CD00000444.pdf

[5]Texas Instruments.TL431 datasheet [EB/OL].http://www.ti.com/lit/ds/symlink/tl431.pdf

作者简介:石孟楠(1992—),广东汕头人,大学本科,现就读于华南农业大学。