基于FFT的音频分析

FFT用于信号的频谱分析,本项目基于K60开发板(渡鸦)。

信号采集

在测试初期的信号采集选择了用K60片上ADC以单端模式对1KHz方波进行采集。采用方波的原因:第一,方波的频谱是sa函数,可以清楚的看到谐波。第二,片上ADC的动态范围为0~3.3V,对负电压采集需要进行处理。
##FFT将ADC采集的时域信号变换到频域
ADC采集的信号以数组的形式存放起来,经过FFT算法将时域转换到频谱。在FFT中信号的值只赋给了实部,并令虚部为零,做实信号的快速傅里叶变换。采样点数64,采样频率20k,频率分辨率为10k/32。也就是说FFT后的第一个点表示直流,第二个点表示10k/32Hz,以此类推,第32个点表示10kHz。

频谱绘制

频谱绘制在ILI9320液晶屏上,以画单个像素点的方式画出频谱幅度。具体一些参数要在调试的时候慢慢试。

注意事项和不足的改进

第一,使用过的指针在不继续使用时一定要释放,将资源留出来。
第二,注意main函数中初始化旋转因子指针和定时器初始化的顺序,因为在定时器中断中操作了旋转因子,但此时旋转因子的初始化肯被打断而造成硬中断。
不足的改进:定时器中断中使用ADC对信号进行采集,当采集的信号点数到了做FFT的点数时,直接进行FFT变换,功率计算等。造成在FFT计算的时间内无法实现对信号的采集,针对这种情况,可以通过任务切换,设置优先级来提升采集的实时性,但是具体还跟单片机的处理能力有关,单片机需要处理的任务多,计算量大。单片机的性能越好处理的越快,以避免有些数据采集不到。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值