STM32音乐频谱分析_第1页
STM32音乐频谱分析_第2页
STM32音乐频谱分析_第3页
STM32音乐频谱分析_第4页
已阅读5页,还剩4页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精品文档STM32 音乐频谱分析2011-12-11 03:06:03|分类:制作类 |标签: | 举报 | 字号大中小订阅呵呵,在昨天的基础上,进行了改进。采样频率为12.3Khz , 256 点 FFT。视频:其实这玩意不难做,音频信号采集,我的方法是将电脑出来的信号用TDA2822放大,然后给单片机AD口,剩下就是软件上的了。说起 TDA2822,还是挺不错的一款功率放大芯片,本只想用来做信号放大用的,但baidu 了下它和看它的数据手册,都多用来做小功率功放。呵呵,那就也做一个吧。TDA2822的典型应用电路如下:这电路很普通,没什么特别,参数也不用调整,直接搭出来,就正常的工作。1欢

2、迎下载精品文档接下来就是将放大后的信号给单片机,这里问题就来了,电路中C4, C5 是干什么,给单片机的话要不要加?于是开始baidu ,google ,但没找到合适解答,于是翻了翻模电书,里面还真讲到功率放大器,TDA2822 是 OTL功放,输出电容起耦合作用,因为OTL功放在在静态时输出端都会有Vcc/2 伏的输出,这样会搞坏喇叭,所以需要加个电容,隔离。单片机处理的话就不用输出电容了。如果用示波器一看,结果就很明显,如下图,下面的信号是加了电容,上面是没加。做好电路后理所当然的准备将功放输出端接到单片机上,但突然一想,不对啊,功放我给11.1V 供电,那输出不就有5V 左右电压?而 S

3、TM32是 3.3V ! 不烧了才怪!幸好 TDA2822工作电压范围在1.812V 间,所以就给它3.3V 行了。这样一来基本就没问题了。第二个的输出电容还是保留,作个对比。2欢迎下载精品文档好了,接下来就是程序了。首先就得确定采样率,就是间隔多久采一个点。刚开始不是很懂,用的40kHz,也成,但要是做音频频谱分析没必要那么高了。这里有些资料:音频的频率范围及表现力度音频的频率范围、音质的评价标准一般认为20Hz20kHz 是人耳听觉频带,称为“声频 ”。这个频段的声音称为“可闻声 ”,高于 20kHz 的称为“超声 ”,低于 20Hz 的称为 “次声 “。所谓声音的质量,是指经传输、处理后

4、音频信号的保真度。目前,业界公认的声音质量标准分为4 级,即:数字激光唱盘CD-DA质量,其信号带宽为10Hz20kHz;调频广播FM质量,其信号带宽为20Hz15kHz;调幅广播AM质量,其信号带宽为50Hz7kHz;电话的话音质量,其信号带宽为200Hz3400Hz。可见,数字激光唱盘的声音质量最高,电话的话音质量最低。除了频率范围外,人们往往还用其它方法和指标来进一步描述不同用途的音质标准。音频频率范围一般可以分为四个频段,即:低频段( 30150HZ);中低频段( 30 150HZ);中低频( 150500HZ);中高频段( 500 5000HZ);高频段( 5000 20kHZ)。3

5、0150HZ频段:能够表现音乐的低频成分,使欣赏者感受到强劲有力的动感。150 500HZ频段:能够表现单个打击乐器在音乐中的表现力,是低频中表达力度的部分。500 5000HZ 频段:主要表达演唱者或语言的清淅度及弦乐的表现力。5000 20kHZ 频段:主要表达音乐的明亮度,但过多会使声音发破。-所以我选则12kHz 左右的采样率。3欢迎下载精品文档下面的 DSP_Lib 文件夹就是ST 公司提供的DSP库。 FFT,PID 等都是用汇编写的。将 ST 提供的 FFT 表加载到内存中,速度是快一些,1024 点只需 1.7ms 左右,我觉得效率算是蛮高了。接下来就是代码了:#include

6、 <stm32f10x_lib.h>。4欢迎下载精品文档#include <math.h>#include "stm32_dsp.h"#include "table_fft.h"#include "sys.h"#include "usart.h"#include "delay.h"#include "timer.h"#include "LED.h"#include "ADC.h"#include "32

7、64LED.h"#define NPT 256/ FFT point#define FAST1/指示条下落速度#define SLOW50/绿点下落速度#define STOP35/绿点停顿速度u16 TableFFT;u16 AD_Count=0;u16 time,time2;void powerMag(void);/计算幅值u32Data_INNPT;/* Complex input vector */u32Data_OUTNPT;/* Complex output vector */u32 lBUFMAGNPT/2;/*保存幅值 */u16Result64;/最终结果u8Pos

8、64=0;/ 绿点位置u8Dot64=0;/ 记录每点停顿时间u32 TMP;int main(void)u16 i,k;s16 tmp;Stm32_Clock_Init(9);/ 系统时钟设置72Mhzdelay_init(72);/延时初始化Timer3_Init(5,7199);/0.6ms中断一次LED 显示Timer4_Init(7,760);/ 约 74us 中断一次,AD采集LED_Init();LEDs_Init();/ 点阵初始化Adc_Init();time=time2=0;。5欢迎下载精品文档AD_Count=0;while(1)cr4_fft_256_stm32(Dat

9、a_OUT, Data_IN, NPT);/ 做 256 点 fft运算powerMag();/算幅值for(i=1;i<65;i+)/点平移 , 去除静态波动tmp=lBUFMAGi/2-5;/显示幅值为实际幅值的一半并减去5,这样效果较好if(tmp<0)tmp=0;else if(tmp>31)tmp=31;if(tmp>=Resulti-1)Resulti-1=tmp;/得到每列上绿点的高度if(Resulti-1>=Posi-1)Doti-1=0;Posi-1=Resulti-1;/ 更新绿点高度for(i=0;i<64;i+)for(k=0;k&

10、lt;32;k+)/画红点if(k<Resulti) Draw_Point(i,k,RED,2);else Draw_Point(i,k,0,0);Draw_Point(i,Posi,GREEN,2);/ 画绿点if(time2>FAST&&Resulti>=1) Resulti-;if(Doti>=STOP)/ 停顿判断 if(time>SLOW&&Posi>=1) Posi-; Doti+;if(Doti>=250)Doti=250;if(time>SLOW)time=0;if(time2>FAST) t

11、ime2=0;else time2+;/* Calculate powermag* 计算各次谐波幅值* 先将 lBUFOUT分解成实部 (X) 和虚部 (Y) ,然后计算幅值 (sqrt(X*X+Y*Y)*/。6欢迎下载精品文档void powerMag(void)s32 lX,lY;u32 i;float X,Y,Mag;for(i=0;i<65;i+)/只显示 64 个点,所以计算得到前面65 个点的幅值就行了。lX= (Data_OUTi << 16) >> 16;lY= (Data_OUTi >> 16);X = (float)lX) /64;

12、Y = (float)lY) /64; Mag = sqrt(X*X + Y*Y)/NPT;lBUFMAGi= (u32)(Mag * 65536);void TIM4_IRQHandler(void)/定时器 4 中断服务程序约 74us 中断一次ADC1->SQR3&=0XFFFFFFE0;/规则序列1ADC1->SQR3|=2;/ 通道 2 采集ADC1->CR2|=1<<22;/启动规则转换通道TMP=ADC1->DR;Data_INAD_Count=TMP<<16;AD_Count+;if(AD_Count>255) AD_Count=0;TIM4->SR&=(1<<0);/ 清除中断标志位void TIM3_IRQHandler(void) /定时器 3 中断服务程序u16 i;if(TIM3->SR&0X0001)/ 溢出中断oe=0;/关显示for(i=0;i<64;i+)/移出缓存区的上半屏一行数据wr_595(SBFLinei);for(i=0;i<64;i+)/移出缓存区的下半屏一行数据wr_595(SBFLine+16i);out_595();/ 锁存数据GPIOC->ODR&=0x00FF;GPIOC->ODR|=(15-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论