基于STM32F1 的频谱分析仪

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机课程设计

基于STM32F1 的频谱分析仪

班级:电子信息工程1111班姓名(学号):

指导老师:

题目:基于STM32F1 的频谱分析仪

关键词:频谱分析仪,STM32F1,快速傅立叶变换,FFT,双色点阵

摘要

本设计是基于STM32F1的频谱分析仪。以STM32F103RBT6为控制核心,双色点阵屏为显示器。硬件上由电源管理,通信模块,放大电路,以及单片机最小系统组成。算法上采用简洁稳定的快速傅立叶变换作为主要的核心算法,辅以自动增益控制,实现信号从时域到频域的变换。通过双色点阵屏显示,具有直观,清晰等特点。

1.引言

目前,由于频谱分析仪价格昂贵,学校里只有少数实验室配有频谱仪。

但是电子信息类教学,如果没有频谱仪辅助观察,同学们只能从书本中抽象理解信号的特征,严重影响教学实验效果。

正对这种现状,提出了一种基于STM32F1的简易频谱分析仪的设计方案,其优点是成本低,能够直观的反映信号在频域的特征。

2.系统方案

本设计采用STM32F1作为核心处理器,该处理器内核架构ARM Cortex-M3,具有高性能、低成本、低功耗等特点。

主控板包括电源模块、红外通信模块、TDA2822放大模块等;信号经过放大电路放大之后,由芯片自带的ADC将模拟信号转换为数字信号,再由主控芯片对数字信号进行快速傅立叶变换,驱动双色点阵屏显示。

软件算法的核心内容就是快速傅立叶变换。如下图为本设计总体框图。

3.系统硬件设计

针对前面提出的整体设计方案,本设计采取模块化策略,将各个功能部分开来设计,最后组合起来。

3.1 电源管理模块

系统的核心芯片为STM32F103,常用工作电压为3.3V,同时内部的ADC工作的参考电压也是3.3V,一般的外部电源的电压都为5V,要使系统正常工作,需要将5V的电源电压稳压到3.3V。常用的78系列稳压芯片已不再适用,必须选择性能更好的稳压芯片。

经综合考虑,本电路采用LM1117-3.3作为电源部分的核心芯片。外部电源5V输入LM1117-3.3稳压为3.3V。由于点阵屏显示部分的电流较大,但是不在我们主控板上,所以暂不做考虑。电路图如下。

3.2 信号放大模块

TDA2822是OTL功放,输出电容起耦合作用,因为OTL功放在在静态时输出端都会有Vcc/2伏的输出,这样会搞坏扬声器,所以需要加个电容,隔离。单片机处理的话就不用输出电容了。STM32的AD模拟口输入的电压不能太大,超过了ADC的参考电压可能就直接烧毁了,还好TDA2822的工作电压范围广,直接给它3.3V供电就行。输出的1.6V连到单片机的模拟口。

3.3 单片机最小系统

该部分主要就是复位电路以及晶体振荡器:

3.4 红外遥控电路3.5 PCB设计图

4.系统软件设计

软件设计上由控制核心STM32F1对采样转换得到的数字信号进行处理,计算出各个频率分量的幅值,驱动点阵屏显示。下图是软件流程:

4.1.快速傅立叶变换以及相关原理

数字信号的傅里叶变换,通常采用离散傅里叶变换(DFT)方法。DFT 存在的不足是计算量太大,很难进行实时处理。计算一个N 点的DFT ,一般需要2N 次复数乘法和N(N-1)次复数加法运算.因此,当N 较大或要求对信号进行实时处理时,往往难以实现所需的运算速度。1965年,J.W.Cooly 和J.W.Tukey 发现了DFT 的一种快速算法,经其他学者进一步改进, 很快形成了一套高效运算方法,这就是现在通用的快速傅里叶变换, 简称FFT( The Fast Fourier Transform)。快速傅里叶变换的实质是利用式(1)中的权函数nk N W 的对称性和周期性,把N 点DFT 进行一系列分解和组合,使整个DFT 的计算过程变成一系列叠代运算过程,使DFT 的运算量大大简化,为DFT 及数字信号的实时处理和应用创造了良好的条件。

快速傅里叶变换算法如下:

错误!未找到引用源。

由(1)式可知,对每一个n ,计算X(n)须作N 次复数乘法及N-1次复数加法,要完成这组变换共需错误!未找到引用源。次乘法及N(N-1)次复数加法。但以下介绍的快速傅里叶变换的算法,可大大减少运算次数,提高工作效率。 当2r N =时,n 和k 可用二进制数表示:

1212012022r r r r r r n n n n n n n ------=+++=错误!未找到引用源。

1212012022r r r r r r k k k k k k k ------=+++=

又记 N W e

ρπ-=,则(1)式可改写为 0011011112001200()()r p r r r r k k k X n n n x k k k W =-=----==∑∑∑ (2)

式中:1212120120(22)(22)r r r r r r r r P nk k k k n n n --------==++

+⨯+++ 12112212011202(22)2(22)2r r r r r r r r r r r r n n n k n n n k P W W W ------------++++++=

120120(2

2)r r r r K n n n W ----+++ (3) 因为22[]1r r N N W W e πρ===所以(2)可改成

001101

1112

001200()()r r r r r k k k X n n n x k k k =-=----=∑∑∑12112212120112020120(22)2(22)2(22)r r r r r r r r r r r r r r r r n n n k n n n k K n n n W W W ----------------+++++++++ (4) 2012013

00020()()r r r k x n n k k x n k k -=--=∑102(2)22r n n r k W -+- (5) 12001

1()()r r r r X n n n x n n n ---= 则式(5)即为式(4)的分解形式。将初始数据代入式(5)的第一个等式,可得每一组计算数据,一般将痗L-1组计算数据代入式(5)的第L 个等式,计算后可得第L 组计算数据(L =1,2,…,γ),计算公式也可表示为 101102

00120()()r r r r k x n k k x k k k -=---=∑121200(22)r r r r n n n k W ----+++= 10121201012120(0)(0)P l r r r l r r r x n n n k k k x n n n k k k W --------+ (6) 式中121120222r r r l l P n n n -----=+++ (7)

根据式(6),第L 个数组中每个120120()()l l r r r r x k x n n n k k k ----= 的计算只依赖于上一个数组的两个数据这两个数据的标号相差12/2Y l N -=,即/2l j i n =+,而且这两个数据只用于计算第L 个数组中标号的数据(等号右端为二进制数)。当1l n -分别取0和1时,分别有,/2l k i k j i n ===+。因此,用上一组的两个数据计算所得的两个新数据仍可储存在原来位置,计算过程中只需要N 个存储器。将()l x i 与(/2)l l x i n +称为第L 个数组中的对偶结点对。计算每个对偶结点对只需一次乘法,事实上由式(6)可得

相关文档
最新文档