音频信号分析仪设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
音频信号分析仪设计
学院:电子信息学院
专业:电子信息工程
姓名:
学号:
指导老师:
摘要
本音频信号分析仪由STM32为主控制器,通过AD转换,对音频信号进行采样,把连续信号离散化,然后通过FFT快速傅氏变换运算,在时域和频域对音频信号各个频率分量以及功率等指标进行分析和处理,然后通过高分辨率的LCD对信号的频谱进行显示。
该系统能够精确测量的音频信号频率范围为20Hz-10KHz,其幅度范围为50mVpp-5Vpp,分辨力分为20Hz和100Hz两档。
测量功率精确度高达5%,并且能够准确的测量周期信号的周期,是理想的音频信号分析仪的解决方案。
关键词:FFT STM32 音频信号分析
Abstract
The audio signal analyzer is based on a STM32 microprocessor, through the AD converter for audio signal sampling, the continuous signal discrete, and then through the FFT fast Fourier transform computing, in the time domain and frequency domain of the various audio frequency signal weight and power, and other indicators for analysis and processing, and then through the high-resolution LCD display signals in the spectrum. The system can accurately measure the audio signal frequency range of 20 Hz-10KHz, the range of 50mVpp-5Vpp,resolution of 20 Hz and 100 Hz correspondent. Power measurement accuracy up to5%, and be able to accurately measuring the periodic signal cycle is the ideal audio signal analyzer solution.
Key words:FFT STM32 audio signal analyzing
目录
一、系统设计方案与论证 (1)
1.1 系统总体设计 (1)
1.2 CPU的选择 (1)
1.3 前端信号调理电路 (2)
1.4 AD转换模块 (2)
1.5 LCD液晶显示模块 (2)
二、硬件设计 (2)
2.1 阻抗匹配电路 (2)
2.2 峰值检测电路 (3)
2.3 电压抬高电路 (4)
2.4 可变增益放大电路 (4)
2.5 低通滤波电路 (6)
三、软件设计 (6)
3.1 FFT程序 (7)
3.2 功率谱测量方法 (8)
3.3 周期性判断方法 (9)
3.4 ADC采样程序 (9)
3.5 LCD显示程序 (10)
四、系统调试 (10)
4.1 硬件调试 (10)
4.2 软件调试 (13)
4.3 总体调试 (14)
五、测试结果 (15)
六、总结 (16)
附录 (16)
参考文献 (20)
一、系统设计方案与论证
1.1 系统总体设计
总体设计思路:信号经过电压跟随器后进入峰值检测然后经过两个电压比较器把输入信号分2段,然后分别进入不同的增益放大电路进行放大,经过电压抬升后进入ADC进行采样,然后利用STM32进行软件编程来进行FFT计算,判断是否为周期信号,求出输入信号的频率、功率、频谱等,然后在同步显示在液晶屏上。
总体设计框图如下:
图1-1 系统总体框图
1.2CPU的选择
本设计中MCU使用的CPU是STM32F103xx增强型系列。
STM32系列微控制器是由ST意法半导体公司一ARM Cortex-M3为内核开发生产的32位微控制器(单片机),专为高性能、低成本、低功耗的嵌入式应用专门设计。
工作频率为72MHz,内置高速存储器(最高可达512K字节的内存和64K字节的SRAM),可以用于存储程序和节点在工作过程中采集到的数据。
具有丰富的增强型I/O端口和连接到两条高性能外设总线(Advanced Peripheral Bus,APB)的外设。
该系列单片机还内置了快速的中断控制器,使得中断间的延迟时间大大降低。
因此系统设计中选用STM32F103微处理器拥有如下如下优点:
7组16位GPIO口、5组USART串口、多个外部中断口;
外设包含多个定时器、SPI通信口、FSMC液晶控制口、12位ADC转换口;
最大功耗118mW,待机功耗7uW,属于高性能低功耗微处理器。
1.3 前端信号调理电路
由于设计指标要求输入阻抗为50欧姆,所以在前端电路信号输入处加了一个跟随电路,利用一个50欧姆的电阻与一运放的输入端并联,满足50欧姆输入阻抗的要求,在选择运放方面,可选择带宽增益积较高、输入失调电压较小比较适合音频信号的NE5532。
直接利用运放电路来搭建各种增益放大电路,利用比较器和继电器来选择不同的信号的不同放大倍数,可以满足要求,电路元件较小且较容易控制,实现了小信号大增益,大信号小增益。
音频信号的频率范围是20Hz 到10KHz,为了有效的滤除各种干扰信号,可加入一个10KHz的低通滤波器,利用OP07及其外围元件设计一种有源低通滤波器。
1.4AD转换模块
STM32F10XXX微控制器产品系列,内置最多3个先进的12位A/D转换模块,转换时间最快为1us,这个ADC模块还具有自校验功能,能够在环境条件变换时提高转换精度。
ADC基本参数为12位分辨;输入范围0至3.6V。
完全可以满足本次设计的需要。
1.5 LCD液晶显示模块
采用3.2寸TFT模块ILI9320,具有8080时序16bit并行总线接口,分辨率320乘以240,显示面板16M色彩。
具有很高的稳定性。
二、硬件设计
2.1阻抗匹配电路
在NE5532的同相端,也即信号输入端并联一50欧姆的电阻,满足50欧姆的输入阻抗。
图2-1 阻抗匹配电路
图2-2 阻抗匹配电路仿真结果
2.2峰值检测电路
为了很好的实现不同信号的不同放大倍数,在比较电路前加了一峰值检测电路,如图所示,利用的是二极管的单向导电性和电容的充放电特性来检测并保持峰值的。
当输入信号大于二极管的导通电压时,二极管导通给电容充电,当信号达最大后开始变小时,利用电容的电压不突变特性保持峰值且输出到后级电路,利用场效应管和三极管电路在一定时间内释放掉所保持的峰值,接着检测随后的峰值。
图2-3 峰值检测电路
图2-4 峰值检测电路仿真结果
2.3 电压抬高电路
由于STM32的ADC负参考电压为0,故需将电压抬升到0以上,该电路实现了1.5V的电压抬升。
图2-5 电压抬高电路
2.4 可变增益放大电路
放大电路同时设置了×5,×0.5两个放大通道,分别对50mv到300mv,300mv 到5V的峰峰值范围内的信号进行不同放大,这样将可测量信号的动态范围扩展到了50mV;控制器通过继电器来选择不同的放大通道。
图2-6 5倍放大电路及仿真结果图2-7 0.5倍放大电路及仿真结果
2.5 低通滤波电路
本滤波电路的截止频率为10KHz。
图2-8 低通滤波电路
图2-8 低通滤波电路仿真结果
三、软件设计
在本设计中,控制及计算部分都由STM32来实现。
其中STM32完成液晶显示、FFT算法实现、功率计算、A/D 转换控制,增益选择控制等,系统流程图如下:
图3-1 程序流程图
3.1 FFT 程序
采用FFT 实现采集的音频信号频域分析,得到音频信号中各频率分量的大小。
FFT 运算主要分为位倒置和蝶形运算两个功能部分。
其中位倒置程序流程如图3-2。
蝶形运算设计:由X1(k)、X 2(k)表示X(k)的运算是一种特殊的运算-碟形运算
{)()()()()()(2121k X W k X k X k X W k X k X k N k N -=+=
实现上式运算的流图称作蝶形运算(N/2个蝶形)。
由上式可以看出蝶形运算主要是系数k N W 的确定。
而第L 级的系数因子为(L=1,2,3...,M )。
图3-2 位倒置程序流程图
J L W 2,(J=0,1,2,...,12
1
--L )
即第L 级的蝶形运算系数因子类型数为12-L 个。
设系统共有M 级,可得
L M M
M
L M L
J J
J
W
W
W
--==2*22*22
即有M N 2=,L M J k -=2*。
3.2 功率谱测量方法
本设计采用直接的经典功率谱估计法:它是把抽样序列)(n x 的N 个观测数据视为一能量有限的序列,直接计算)(n x 的离散傅立叶变换,得)(k X ,然后再取其幅值的平方,并除以N ,作为序列)(n x 真实功率谱的估计。
有限长序列的傅立叶变换定义为: 正变换:∑-=--==1
021,...,1,0,)()(N n nk N
j N k e
n x k X π (1)
反变换:∑-=-==1
21,...,1,0,)(1)(N n nk N j N k e k X N n x π
(2)
根据Parseval 定理:一个序列在时域计算的能量与在频域计算的能量是相等
的。
即:∑∑-=-==1
021
2
|)(|1|)(|N k N n k X N n x ,可得到各个频谱对应的功率与在时域测量功
率之间的关系。
⎰-=22
2
)(1)(T
T dt t f T t v ⎰⎰--+++==2222
2221122
]sin sin sin [1
)(1)(T T T
T n n dt t u t u t u T dt t f T t v ωωω T u u u
T n ]2
22[12
2221+++= 2
22112)(2n u u u t v ++=∴
式中,)(t v 为信号的有效值,n u u u ,,21 为各频点的幅值。
3.3 周期性判断方法
信号周期性的判断可利用周期信号所具有的自相关特征。
假设采样所得的时间序列N i T i x i x s 2,1),()(=⋅=,其中s T 为采样周期,利用一长为n 的滑窗来计算该采样序列的结构函数)(n F ,即
式中,max 1n n ≤≤,n N M -=,一般取5/max N n ≈,以保证上式中即使在max n n =时,也有较多的数据差值求平均。
)(n F 可以用来表征时间间隔为s nT 的两个时间点处信号的相似性。
假设时间序列是周期性的,其周期s p T n T ⋅=。
当p n n =或p n 的整数倍时,
0)(=n F ;即使信号被噪声污染,0)(≠n F ,但在一定的信噪比范围内,在p
n n =处,)(n F 仍然会取得最小值,从而也可识别信号的周期性并测量其周期。
3.4 ADC 采样程序
∑=-=M
i n i x i x M n F 1
)]
()([1)(
本系统设计实现20Hz档和100Hz档的精度。
当选用20Hz档时,利用定时器2设置ADC采样时钟为40.96K,采样2048点;当选用100Hz档时,设计采样时钟为51.2K,采样512点。
定时器计预分频因子计算,可设置定时周期为5,则20Hz档时count=72M/6/40.96K=293,50Hz档时,count=72M/6/51.2K=233。
3.5 LCD显示程序
LCD的软件设计由LCD的初始化程序、数值的显示程序组成,为了实时更新数据,此部分软件采用了定时器中断,时间间隔为5s,即每隔5秒都会进行一次数据的读取,并更新显示在LCD上。
程序流程图如下:
4.1 硬件调试
4.1.1阻抗匹配电路
如图4-1所示,当输入信号峰峰值550mV,频率6KHz时。
经阻抗匹配后的信号峰峰值530mV,频率6KHz,基本无噪声。
达到预期效果。
图4-1 阻抗匹配电路调试
4.1.2峰值检测电路
如图4-2所示,当输入一个正弦波,输出为输入的峰值。
达到预期效果。
图4-2 峰值检测电路调试
4.1.3电压抬高电路
如图4-3所示,电压抬高电路,测得抬升后最大电压和最小电压分别为2.16V 和1.04V,可推得抬升电压为1.6V。
与预期一致,电路满足要求。
图4-3 电压抬高电路调试
4.1.4可变增益放大电路
如图4-4所示,当峰峰值2V,频率1KHz信号经过0.5倍放大电路时。
信号幅度变为1V,频率1KHz,基本无噪声。
达到预期效果。
图4-4 0.5倍放大电路调试
如图4-5所示,当峰峰值1V,频率6KHz信号经过5倍放大电路时信号幅度变为5V,频率6KHz,基本无噪声。
达到预期效果。
图4-5 5倍放大电路调试
4.1.5低通滤波电路
如图4-6所示,当输入信号峰峰值1V,频率20KHz时。
经低通滤波后的信号峰峰值350mV,频率20KHz,滤波效果明显。
图4-6 低通滤波电路调试
4.2 软件调试
软件的调试主要是在Keil上进行,初步编译完成后,生成相关的.hex文件,将hex烧入STM32开发板中,检查软件是否实现了自己想要的功能。
检测程序功能效果,再经过编译修改,最终得到理想的程序代码。
软件调试建立在硬件调
试成功的基础之上。
4.3 总体调试
将前级硬件电路与STM32开发板连接起来,再将LCD显示屏与开发板相接。
接上电源,输入信号。
启动程序,观察LCD显示结果。
图4-7 整体实物图
图4-8 LCD显示结果
五、测试结果
本次此时的输入信号由信号发生器产生。
将测得值与理论值比较。
当输入波形为正弦波时,结果如表5-1所示。
表5-1 正弦波测试结果
从多次测量结果可以看出本系统可以实现对信号功率的准确测量,功率误差均小于4% 。
当输入波形是方波时,结果如表5-2所示。
表5-2 方波测试结果
本系统对方波的测量同样很准确,总功率误差小于5%。
六、总结
我们所制作的音频信号分析仪完成了题目的要求,系统整体性能良好。
实现对频率范围在20Hz至10KHz音频信号频率成分的分析。
通过多通道放大电路将系统可测电压(峰-峰值)的动态范围扩展到50mV至5V;通过改变AD转换器的采样频率,实现频率分辨力100Hz、20Hz两挡可调;频谱分析结果可使用液晶屏实时显示;通过对频谱数据特征的提取判断信号的周期性。
附录
部分程序源代码
FFT程序
#include <math.h>
#define PI 3.1415926535897932384626433832795028841971
struct compx {float real,imag;};
void create_sin_tab(float *sin_t,int PointNum);
void FFT(struct compx *xin);
void My_FFT(struct compx *s,int N);
float *SIN_TAB;
int FFT_N=2048 ;
struct compx EE(struct compx a,struct compx b)
{
struct compx c;
c.real=a.real*b.real-a.imag*b.imag;
c.imag=a.real*b.imag+a.imag*b.real;
return(c);
}
void create_sin_tab(float *sin_t,int PointNum)
{
int i;
SIN_TAB=sin_t;
FFT_N=PointNum;
for(i=0;i<=FFT_N/4;i++)
SIN_TAB[i]=sin(2*PI*i/FFT_N);
}
float sin_tab(float pi)
{
int n=0;
float a=0;
n=(int)(pi*FFT_N/2/PI);
if(n>=0&&n<=FFT_N/4)
a=SIN_TAB[n];
else if(n>FFT_N/4&&n<FFT_N/2)
{
n-=FFT_N/4;
a=SIN_TAB[FFT_N/4-n];
}
else if(n>=FFT_N/2&&n<3*FFT_N/4)
{
n-=FFT_N/2;
a=-SIN_TAB[n];
}
else if(n>=3*FFT_N/4&&n<3*FFT_N)
{
n=FFT_N-n;
a=-SIN_TAB[n];
}
return a;
}
float cos_tab(float pi)
{
float a,pi2;
pi2=pi+PI/2;
if(pi2>2*PI)
pi2-=2*PI;
a=sin_tab(pi2);
return a;
}
void FFT(struct compx *xin) {
int f,m,i,k,l,j=0;
register int nv2,nm1; struct compx u,w,t;
nv2=FFT_N/2;
nm1=FFT_N-1;
for(i=0;i<nm1;i++)
{
if(i<j)
{
t=xin[j];
xin[j]=xin[i];
xin[i]=t;
}
k=nv2;
while(k<=j)
{
j=j-k;
k=k/2; }
j=j+k;
{
int le,lei,ip; f=FFT_N;
for(l=1;(f=f/2)!=1;l++) ; for(m=1;m<=l;m++) {
le=2<<(m-1);
lei=le/2;
u.real=1.0;
u.imag=0.0;
w.real=cos_tab(PI/lei);
w.imag=-sin_tab(PI/lei);
for(j=0;j<=lei-1;j++) {
for(i=j;i<=FFT_N-1;i=i+le) {
ip=i+lei;
t=EE(xin[ip],u);
xin[ip].real=xin[i].real-t.real;
xin[ip].imag=xin[i].imag-t.imag;
xin[i].real=xin[i].real+t.real;
xin[i].imag=xin[i].imag+t.imag;
}
u=EE(u,w); } }
}
}
void My_FFT(struct compx *s,int N)
{
int i;
FFT(s); for(i=0;i<N;i++)
{
s[i].real=sqrt(s[i].real*s[i].real+s[i].imag*s[i].imag)/(i==0?N:N/2); } }
参考文献:
[1].陈志旺等、《STM32嵌入式微控制器快速上手》、2012年1月、第一版、电子工业出版
社
[2].康华光等、《模拟电子技术基础》、2006年1月、第一版、高等教育出版社
[3].闫石、《数字电子技术基础》、2006年5月、第一版、高等教育出版社
[4].陈莹、《单片机原理与接口技术》、2012年8月、第一版、机械工业出版社
[5].范书瑞等、《Cortex-M3嵌入式处理器原理及应用[M]、2011年1月、第一版、电子工业
出版社。