




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机课程设计基于STM32F1 的频谱分析仪班 级:电子信息工程1111班姓名(学号):指导老师 : 题 目:基于STM32F1 的频谱分析仪关键词:频谱分析仪,STM32F1,快速傅立叶变换,FFT,双色点阵摘要 本设计是基于STM32F1的频谱分析仪。以STM32F103RBT6为控制核心,双色点阵屏为显示器。硬件上由电源管理,通信模块,放大电路,以及单片机最小系统组成。算法上采用简洁稳定的快速傅立叶变换作为主要的核心算法,辅以自动增益控制,实现信号从时域到频域的变换。通过双色点阵屏显示,具有直观,清晰等特点。1. 引言目前,由于频谱分析仪价格昂贵,学校里只有少数实验室配有频谱仪。但是电子信息类教学,如果没有频谱仪辅助观察,同学们只能从书本中抽象理解信号的特征,严重影响教学实验效果。正对这种现状,提出了一种基于STM32F1的简易频谱分析仪的设计方案,其优点是成本低,能够直观的反映信号在频域的特征。2. 系统方案 本设计采用STM32F1作为核心处理器,该处理器内核架构ARM Cortex-M3,具有高性能、低成本、低功耗等特点。主控板包括电源模块、红外通信模块、TDA2822放大模块等;信号经过放大电路放大之后,由芯片自带的ADC将模拟信号转换为数字信号,再由主控芯片对数字信号进行快速傅立叶变换,驱动双色点阵屏显示。 软件算法的核心内容就是快速傅立叶变换。如下图为本设计总体框图。信号采集TDA2822信号放大MAX275 6KHz滤波STM32进行快速傅立叶变换32*64双色点阵屏显示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 ,一般需要次复数乘法和N(N-1)次复数加法运算.因此,当N较大或要求对信号进行实时处理时,往往难以实现所需的运算速度。1965年,J.W.Cooly和J.W.Tukey发现了DFT的一种快速算法,经其他学者进一步改进, 很快形成了一套高效运算方法,这就是现在通用的快速傅里叶变换, 简称FFT( The Fast Fourier Transform)。快速傅里叶变换的实质是利用式(1)中的权函数的对称性和周期性,把N点DFT进行一系列分解和组合,使整个DFT的计算过程变成一系列叠代运算过程,使DFT的运算量大大简化,为DFT及数字信号的实时处理和应用创造了良好的条件。快速傅里叶变换算法如下:由(1)式可知,对每一个n,计算X()须作N次复数乘法及N-1次复数加法,要完成这组变换共需次乘法及N(N-1)次复数加法。但以下介绍的快速傅里叶变换的算法,可大大减少运算次数,提高工作效率。当时,n和k可用二进制数表示:又记,则(1)式可改写为 (2)式中: (3)因为所以(2)可改成 (4) (5)则式()即为式()的分解形式。将初始数据代入式()的第一个等式,可得每一组计算数据,一般将痗L-1组计算数据代入式()的第L个等式,计算后可得第L组计算数据(L,),计算公式也可表示为= (6)式中 (7) 根据式(),第L个数组中每个 的计算只依赖于上一个数组的两个数据这两个数据的标号相差,即,而且这两个数据只用于计算第L个数组中标号的数据(等号右端为二进制数)。当分别取和时,分别有。因此,用上一组的两个数据计算所得的两个新数据仍可储存在原来位置,计算过程中只需要N个存储器。将与称为第L个数组中的对偶结点对。计算每个对偶结点对只需一次乘法,事实上由式()可得式中: ;别为式()中取,时对应的P值。因,于是对偶结点的有如下关系:,因此式()可表示为P的求法:在中,i写成二进制数右移位,就成为颠倒位序得式()吕,前面的个等式,每个等式均对应一组数据进行计算,每组数据都有N/对结点,根据式(),每对结点只需作次乘法和次加法,因此,每组数据只需N/2次乘法和N次加法,因而完成组数据的计算共需N/2次乘法和N次加法。音频的频率范围及表现力度:音频的频率范围、音质的评价标准一般认为20Hz20kHz是人耳听觉频带,称为“声频”。这个频段的声音称为“可闻声”,高于20kHz的称为“超声”,低于20Hz的称为“次声“。所谓声音的质量,是指经传输、处理后音频信号的保真度。目前,业界公认的声音质量标准分为4级,即:数字激光唱盘CD-DA质量,其信号带宽为10Hz20kHz;调频广播FM质量,其信号带宽为20Hz15kHz;调幅广播AM质量,其信号带宽为50Hz7kHz;电话的话音质量,其信号带宽为200Hz3400Hz。可见,数字激光唱盘的声音质量最高,电话的话音质量最低。除了频率范围外,人们往往还用其它方法和指标来进一步描述不同用途的音质标准。 音频频率范围一般可以分为四个频段,即: 低频段(30150HZ); 中低频段(30150HZ); 中低频(150500HZ); 中高频段(5005000HZ); 高频段(500020kHZ)。30150HZ频段:能够表现音乐的低频成分,使欣赏者感受到强劲有力的动感。150500HZ频段:能够表现单个打击乐器在音乐中的表现力,是低频中表达力度的部分。5005000HZ频段:主要表达演唱者或语言的清淅度及弦乐的表现力。500020kHZ频段:主要表达音乐的明亮度,但过多会使声音发破。由于我们主要是对音频信号进行处理,并且一般音频信号的能量一般集中在低频部分,所以我们选择12KHz的采样频率比较合适。FFT结果的物理意义:一个模拟信号,经过ADC采样之后,就变成了数字信号。采样定理告诉我们,采样频率要大于信号频率的两倍采样得到的数字信号,就可以做FFT变换了。N个采样点,经过FFT之后,就可以得到N个点的FFT结果。为了方便进行FFT运算,通常N取2的整数次方。假设采样频率为Fs,信号频率F,采样点数为N。那么FFT之后结果就是一个为N点的复数。每一个点就对应着一个频率点。这个点的模值,就是该频率值下的幅度特性。具体跟原始信号的幅度有什么关系呢?假设原始信号的峰值为A,那么FFT的结果的每个点(除了第一个点直流分量之外)的模值就是A的N/2倍。而第一个点就是直流分量,它的模值就是直流分量的N倍。而每个点的相位呢,就是在该频率下的信号的相位。第一个点表示直流分量(即0Hz),而最后一个点N的再下一个点(实际上这个点是不存在的,这里是假设的第N+1个点,也可以看做是将第一个点分做两半分,另一半移到最后)则表示采样频率Fs,这中间被N-1个点平均分成N等份,每个点的频率依次增加。例如某点n所表示的频率为:Fn=(n-1)*Fs/N。由上面的公式可以看出,Fn所能分辨到频率为为Fs/N,如果采样频率Fs为1024Hz,采样点数为1024点,则可以分辨到1Hz。1024Hz的采样率采样1024点,刚好是1秒,也就是说,采样1秒时间的信号并做FFT,则结果可以分析到1Hz,如果采样2秒时间的信号并做FFT,则结果可以分析到0.5Hz。如果要提高频率分辨力,则必须增加采样点数,也即采样时间。频率分辨率和采样时间是倒数关系。假设FFT之后某点n用复数a+bi表示,那么这个复数的模就是An=根号a*a+b*b,相位就是Pn=atan2(b,a)。根据以上的结果,就可以计算出n点(n1,且n=N/2)对应的信号的表达式为:An/(N/2)*cos(2*pi*Fn*t+Pn),即2*An/N*cos(2*pi*Fn*t+Pn)。对于n=1点的信号,是直流分量,幅度即为A1/N。由于FFT结果的对称性,通常我们只使用前半部分的结果,即小于采样频率一半的结果。程序中,我的采样频率Fs=12KHz,FFT采样点数N=256,分辨率=Fs/N=46.875Hz,也就是说每两个相邻的柱条所代表的频率成分相差46.875Hz。5.测试250Hz正弦波信号测试:600Hz正弦波信号测试:200Hz正弦波信号测试:从图中可以看出,输入信号中含有更高频率成分的杂波,在图中表现为一个低频率的信号成分显示出来,这是因为我们没有滤波的原因。应该对信号先经过6KHz低通滤波器,但考虑到成本,我们舍弃了这一部分。5.部分代码1.求各个频率分量幅值的函数:/* Calculate powermag* 计算各次谐波幅值* 先将lBUFOUT分解成实部(X)和虚部(Y),然后计算幅值(sqrt(X*X+Y*Y)*/void powerMag(void) u32 lX,lY; u32 i; float X,Y,Mag; for(i=0;i129;i+) /只显示64个点,所以计算得到前面65个点的幅值就行了 lX = (Data_OUTi 16;/得到运算结果的虚部lY = (Data_OUTi 16);/得到运算结果的实部if(lX&0x8000)X=(lX&0x7fff)+1;elseX=lX&0x7fff;if(lY&0x8000)Y=(lY&0x7fff)+1;elseY=lY&0x7fff;X /= 64;/除以64,要不然数值太大Y /= 64;/除以64,要不然数值太大Mag = sqrt(X*X + Y*Y)/NPT;/计算幅值lBUFMAGi = (u32)(Mag * 65536);/存在lBUFMAG中 2.点阵屏的刷新,采用在CPU内部开辟一个RAM缓存,显示在LED屏上,当需要改变显示的内容时,只需更改相应的代码即可,而不是每次显示都得重新刷代码,大大提高了刷新率,缺点是占用RAM
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学音乐教学:校园植物主题歌曲创作与演唱指导论文
- 运动损伤知识普及对学生身体素质的促进论文
- 艺术插花室管理制度
- 花茶厂员工管理制度
- 茶叶审评室管理制度
- 陶瓷特价砖管理制度
- 财务会计课题申报书:《高职院校财务会计教学瓶颈与对策》课题申报材料
- 课题申报书:新质生产力驱动下职业教育专业结构优化与转型升级探索
- 建筑工程技术施工员专业介绍
- 大班社会收获果实少儿英语幼儿教育教育专区
- TB10092-2017 铁路桥涵混凝土结构设计规范
- 《脑室内出血》课件
- 长城招聘的心理测评答案
- 中小学食堂工作从业人员安全培训会议记录(40学时全)
- 酒店保洁服务投标方案(完整技术标)
- 中山市公安局三乡分局辅警招聘考试题库2023
- 穴位埋线疗法疗法
- 装饰装修工程售后服务具体措施
- 16J607-建筑节能门窗
- 小学二年级数学下册无纸化测试题
- 原材料安全库存管理制度
评论
0/150
提交评论