[相关资料]关于FFT结果的意义,可以看一下圈圈以前写的**

[复制链接]
 楼主| computer00 发表于 2009-3-7 01:29 | 显示全部楼层 |阅读模式
本实验源代码包下载:<a href="https://bbs.21ic.com/upfiles/img/20093/20093712445301.rar" target=_blank>https://bbs.21ic.com/upfiles/img/20093/20093712445301.rar</a><br /><br />频谱分析演示视频1:<a href="https://bbs.21ic.com/upfiles/img/20093/20093712258851.rar" target=_blank>https://bbs.21ic.com/upfiles/img/20093/20093712258851.rar</a><br /><br />频谱分析演示视频1:<a href="https://bbs.21ic.com/upfiles/img/20093/2009371240995.rar" target=_blank>https://bbs.21ic.com/upfiles/img/20093/2009371240995.rar</a><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;经过中午和整晚的忙活,圈圈的第三个AT91SAM7S64程序终于跑起来拉。<br />这是一个简单的FFT测试程序,LCD为NOKIA5110&nbsp;84*48点的单色LCD屏。<br />使用AD6对音频信号进行采样,然后经过FFT后,将其频谱显示在LCD上。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;程序首先初始化系统时钟,将主时钟设置为48.05MHz。然后将对应<br />的LCD的IO口设置为输出状态并使能。然后对LCD进行初始化。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;本程序所用的实验平台是21IC的古道热肠设计的“DIY优盘开发板”,<br />详细的原理图可以去古道热肠的blog下载。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;由于音频信号是交流信号,先要对其进行平移到1/2Vcc才能采样。<br />从板上的J6引出GND、VCC、AD6这3根线。然后分别在GND和AD6、VCC和<br />AD6上连接一个10K欧姆的电阻,将AD6偏置到1/2Vcc处。然后再用一个<br />1K欧姆的电阻和一个10uF的电容串联后连接到AD6上。电阻的作用是保护<br />芯片,电容的作用是隔直。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;将程序下载到学习板中,然后将音频信号(例如电脑音频输出或者<br />接到音箱的喇叭线上)接到上面的电路中,播放一段音乐,就可以看到<br />信号的频谱拉。<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;这个例子比较简单,使用的是128点的FFT,显示频谱只用前面64点,<br />因为后面64点是跟前面64点对称的。程序设置的采样频率为44.1KHz,<br />所以第64点(最右边)的频率就是22.05KHz。最左边那条(无信号输入<br />时约1.6V高度)为直流成分。你可以将直接将一个直流电压加在AD6上<br />看它显示的电压值。由于交流成分分散,所以对交流成分显示时是做<br />了适当的比例放大的,否则交流值显示很小。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;实际上,对音频频谱的显示,通常纵坐标是取对数,横坐标是按照<br />倍频关系来的,这里为了程序简单,都是用的线性关系。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;另外,为了显示效果美观,增加了峰值保持并下坠的效果(类似<br />千千静听或者windows多媒体播放器中频谱显示的效果)。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;不再废话了,感兴趣的就赶紧下载代码去玩玩吧~~~欢迎大家多多<br />交流~~~<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;圈圈&nbsp;&nbsp;&nbsp;2009-03-07&nbsp;01:18
wswh2o 发表于 2009-3-7 08:50 | 显示全部楼层

qiang

  
wswh2o 发表于 2009-3-7 08:57 | 显示全部楼层

视频太不清楚

还不如上照片
 楼主| computer00 发表于 2009-3-7 09:15 | 显示全部楼层

手机拍的,拍照片也不清晰...准备继续改进一下,分频段处

现在是做128点的FFT,频率平均显示的,这样在低频段的分辨力就很不够。<br />另一个缺点128点的时间不够,为了降低刷新率,人为延迟了一段时间,这样实时性不好。<br /><br />决定将点数提高到512点,然后对不同频段进行处理,将频率高的部分多个点合并。这样显示效果应该会好一些。
古道热肠 发表于 2009-3-7 11:00 | 显示全部楼层

哈哈,不错,"自古英雄出少年"

贴几个图片看看吧,那3GP文件下了也没软件看.好象现在的PMP是支持这格式的.
 楼主| computer00 发表于 2009-3-7 11:15 | 显示全部楼层

回5楼:这个3gp的文件,暴风音影和windows媒体播放器都能播放

我在电脑上播放能打开才发上来的,不然大家咋看呢~~~<br /><br />由于这个音频显示是动态的,静态的照片看起来没意思啊...<br /><br />呆会发改进过的程序上来,嘿嘿~~~~<br /><br />古道你也赶紧烧进去玩玩吧,哈哈~~~~即使不接音频信号,手指按到J6里面的线上也能出频谱的~~~<br /><br />
古道热肠 发表于 2009-3-7 11:18 | 显示全部楼层

号召项目组的组员及广大网友向圈圈学习.

学习圈圈的迎难而上,有理想,有目标,有行动,有结果的实干精神.<br />自己定一个目标,然后再去实践,再总结,再实践,迭代式开发,逐步完善和完美.<br />就拿文件系统来说吧,移植好FAT后,可以乘胜前进,可以做个读写字库文件,并提取汉字点阵的接口API嘛,想显什么汉字就显什么汉字,跟PC机一样的方便.<br />再如网络部分,能否搞个支持RS232转网络的功能呢,这个很有趣的.
 楼主| computer00 发表于 2009-3-7 11:43 | 显示全部楼层

改进版程序(改成了512点FFT,并对频率轴和幅度都进行了压

单击次处下载更新版程序:<a href="https://bbs.21ic.com/upfiles/img/20093/200937111126472.rar" target=_blank>https://bbs.21ic.com/upfiles/img/20093/200937111126472.rar</a><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;又对程序进行了一些修改,将128点FFT改成了512点,更能反映<br />实际信号的情况。在频率轴上不再是线性显示,第0点为直流信号,<br />1~13点每两点间频率间隔为86Hz,第14~23点每两点间频率间隔为2*86Hz,<br />第24~33点每两点间频率间隔为3*86Hz,第34~43点每两点间频率间隔<br />为4*86Hz,第44~53点每两点间频率间隔为6*86Hz,第54~63点每两点<br />间频率间隔为9*86Hz。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;在幅度轴上,使用了开根号进行压缩。试用了对数压缩,发现<br />压缩得太厉害,最后决定使用开根号压缩。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;由于采样和计算时间增加,原来的延迟50ms被去掉。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;圈圈&nbsp;&nbsp;2009-03-07&nbsp;&nbsp;11:06<br /><br />较清晰视频下载:<a href="https://bbs.21ic.com/upfiles/img/20093/20093711391189.rar" target=_blank>https://bbs.21ic.com/upfiles/img/20093/20093711391189.rar</a><br /><br />图片:<br /><img src="https://bbs.21ic.com/upfiles/img/20093/200937113656662.jpg"><br /><br /><img src="https://bbs.21ic.com/upfiles/img/20093/200937113733829.jpg"><br /><br /><img src="https://bbs.21ic.com/upfiles/img/20093/200937113746856.jpg">
古道热肠 发表于 2009-3-7 11:48 | 显示全部楼层

哈哈,这回看到图片了,很有趣

用您这项目稍做修改,可做成一个低频的示波器.
 楼主| computer00 发表于 2009-3-7 11:49 | 显示全部楼层

嘿嘿,7楼所说的,正是俺所想做的~~~~

准备搞个GPS模块,读到GPS数据后,在数据库(当然是放在外挂的FLASH中了,使用FAT文件格式,<br />可以通过USB口当作U盘更新数据库。另外当然还有7楼所说的汉字字库文件了)中进行查询,<br />找到最近以及周围的一些地点,直接用汉字显示周边地理位置,并可以查询从当前点到<br />指定地点的距离、方位等等...有必要的话,再搞个语音模块也不错~~~可以直接读出来……<br /><br />俺没钱玩大尺寸的LCD,只好搞这么简单的LCD,用汉字显示GPS的地理位置了...
 楼主| computer00 发表于 2009-3-7 11:51 | 显示全部楼层

是可以做示波器,前段时间见有人用STM32做过,USB口传数据的

可以直接移植过来用吧~~~~
xwj 发表于 2009-3-7 12:18 | 显示全部楼层

呵呵,我 我... 我刚睡醒,还没刷牙

蛋蛋的效率可真高啊...
 楼主| computer00 发表于 2009-3-7 12:34 | 显示全部楼层

我晕...俺午饭都吃完回来了...你才起来?

  
xwj 发表于 2009-3-7 12:34 | 显示全部楼层

To 古道热肠:

遇到视频播放不了的话,就去下载个“完美解码”,就都能放了<br />同时其他播放器也能够播放了
 楼主| computer00 发表于 2009-3-7 13:15 | 显示全部楼层

晕...不知道15楼从哪看出来的超频啊?我的程序跑得很正常啊

  
 楼主| computer00 发表于 2009-3-7 13:52 | 显示全部楼层

提供一些仿真的数据给你参考一下吧:

FFT耗时(包括位倒序和FFT运算)<br /><br />1024点——&nbsp;约58ms<br />&nbsp;512点——&nbsp;约22ms<br />&nbsp;256点——&nbsp;约11ms<br />&nbsp;128点——&nbsp;约4.4ms<br />&nbsp;&nbsp;64点——&nbsp;约1.8ms<br /><br /><br />当然,这个FFT计算部分肯定还可以进一步优化,因为俺写的程序总是以实现结果为最大目标,<br />不会在性能上做很深入的研究……感兴趣、又有时间的慢慢去优化吧...更变态的甚至可以用汇编去写一个...
 楼主| computer00 发表于 2009-3-7 14:06 | 显示全部楼层

[相关资料]关于FFT结果的意义,可以看一下圈圈以前写的**

FFT结果的物理意义:<a href="https://bbs.21ic.com/club/bbs/list.asp?boardid=10&t=2963923&tp=FFT%u7ED3%u679C%u7684%u7269%u7406%u610F%u4E49" target=_blank>https://bbs.21ic.com/club/bbs/list.asp?boardid=10&t=2963923&tp=FFT%u7ED3%u679C%u7684%u7269%u7406%u610F%u4E49</a><br /><br /><br />补上本实验附加的电路图:<br /><img src="https://bbs.21ic.com/upfiles/img/20093/200937145654180.gif">
huangqi412 发表于 2009-3-7 17:24 | 显示全部楼层

原来俺版本高,圈圈版本低

  
wangkj 发表于 2009-3-7 17:26 | 显示全部楼层

你搞个音频示波器多好??

  
 楼主| computer00 发表于 2009-3-7 17:33 | 显示全部楼层

俺是直接把音频信号接在功放输出上的,直接接电脑声卡还

“慢好多哦,&nbsp;64点应该在&nbsp;40us”你这程序优化得也太好了点,<br /><br />我光把64点的正常序排成倒序的,都花掉了53us…………
您需要登录后才可以回帖 登录 | 注册

本版积分规则

247

主题

14712

帖子

212

粉丝
快速回复 在线客服 返回列表 返回顶部