中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
用STM32F103做個簡易無損音樂播放器,軟解FLAC/MP3/WAV|我愛單片機(jī)
用單片機(jī)做一個音樂播放器,是我兩年前的一個夢想(挖的一個大坑)
那是我還才剛剛?cè)腴T玩51不久
當(dāng)時看了版主@hit00 的幾個帖子,還有另外幾個壇里的帖子
http://bbs.mydigit.cn/read.php?tid=193645
http://bbs.mydigit.cn/read.php?tid=188161

看得心潮澎湃,決心也做一個。因?yàn)槭稚蠜]同款的片子,就用了STC15F408w做主控。
可是,嘗試了許久,都沒弄出來。其中用過PWM輸出,也用過電阻網(wǎng)絡(luò),還考慮過嘗試使用IIS的音頻DAC芯片。
程序上,還專門花了好一久去啃了FAT文件系統(tǒng)的東西,自己寫了一個簡易的文件系統(tǒng),雖然功能簡單,但是讀取速度夠快

板子焊了好多個版本,程序前前后后弄了一年多
這是之前弄出來的一些東西

這是其中一版的板子,自認(rèn)為是我焊得最好看的一片洞洞板


雙聲道的16位電阻網(wǎng)絡(luò)

然而,事實(shí)是殘酷的。
結(jié)果都不能正常的播放,不是毫無聲音,就是聲音斷斷續(xù)續(xù)。
結(jié)論就是,51太慢了+自己水平太臭了。

于是這個夢就被暫時封存了,直到有一天,我又入了另一個大坑——STM32。
當(dāng)我看到STM32的外設(shè)里面帶有SDIO和IIS時,感覺播放音頻這個大坑又能填了。
后來我畫了自己的第一塊PCB,也是自己的第一塊STM32開發(fā)板,吧SDIO卡槽和音頻IIS接口都專門引出來了
原帖看這里(精品貼)

歷時兩月從零開始精心自制stm32開發(fā)板[url]http://bbs.mydigit.cn/read.php?tid=1578422[/url]

電路圖

使用的IIS音頻DAC芯片是一個廉價的CS4344,好像就2-3大洋的樣子

這板子雖然表面上看著還不錯,但是畢竟第一次畫板,經(jīng)驗(yàn)還是缺乏,就拿播放音頻所需的功能,就有兩個錯誤
第一個時封裝沒弄對,耳機(jī)插口放不進(jìn)去,只能這樣了

第二個更坑,sd卡接口畫錯了
只能掰彎引腳曲線救國了

然而畫好板子之后的半年,也沒有去填這個坑,而是主要在學(xué)習(xí)基礎(chǔ)的東西,STM32比51有的東西多太多了,學(xué)了很久還是覺得自己知道的很少。
一兩周,又突然想起曾經(jīng)的那個夢,找出資料來重新開張。
不得不說,stm32真的要強(qiáng)勁不少。借助成熟的FATFS和內(nèi)部的DMA(可以設(shè)置成從內(nèi)存自動搬運(yùn)數(shù)據(jù)到外設(shè)),只用了小半天,幾乎沒費(fèi)什么力氣的,就讓音樂流淌出來。同時,使用上在線調(diào)試的方法,配合邏輯分析儀,相比于傳統(tǒng)的下載看效果的方法,也讓錯誤更容易被找出來。
然而,聽多了,發(fā)現(xiàn),這歌放起來不對勁啊,怎么快這么多,聲調(diào)升高,歌聲像趕著唱完的一樣。仔細(xì)研究,才發(fā)覺在常見頻率44100hz且需要提供MCK的時候,因?yàn)閱纹瑱C(jī)分頻的問題,實(shí)際的頻率的是46875hz,偏差了6%,不奇怪才怪。


再看cs4344的手冊,官方推薦了兩個比較“奇葩”的晶振頻率,不好買啊

于是乎只能在分頻系數(shù)上做手腳了。經(jīng)過計算,發(fā)覺最接近的辦法是主頻小超到80mhz,7分頻得MCK為11.428mhz(接近推薦的11.2896)
256分頻后得到音頻播放頻率為44.6khz,誤差縮小到1%,算是勉強(qiáng)可選,可以接受
理論分析未實(shí)測:如果用gd32,內(nèi)部hsi,8mhz,用矯正寄存器向下微調(diào)到7.91khz附近,再操作,將能得到更精確的頻率
上邏輯分析儀檢測,沒錯



wav播放有了,對STM32來說算是小菜一碟,那一不做二不休,就繼續(xù)看看其他的音頻播放唄。
首先盯上的是MP3,畢竟是最常用的音頻格式。
上網(wǎng)一查果然有前人做過。使用的是 Helix解碼庫。借鑒前人的成果,再一番移植和調(diào)試,mp3也能播放了!(44.1khz 16位,雙聲道)
解碼對內(nèi)存和cpu的占用都不小,內(nèi)存上大概消耗了45k的樣子(103RCT6只有48k,內(nèi)存占用很緊張)
這是播放一幀的耗時

這是解碼一幀的耗時

之間空閑的7ms,可以用來檢測按鈕,驅(qū)動屏幕顯示什么的(目前無屏,以后可以有)

做到這步,我已經(jīng)心滿意足了??墒窃诤闷嫘暮秃脛傩尿?qū)使下,又盯上了解碼FLAC。
事實(shí)上解碼FLAC這步,廢了我好多時間精力

找的flac解碼庫,移植大半天,聲音出來了,但是有斷斷續(xù)續(xù)的毛病……找了半個星期沒找出來,播放層的代碼推倒重新寫了一遍,問題依舊……解碼時間也是小于播放時間的,解碼耗時甚至比mp3還短。還以為我移植有問題……tm居然是庫里面有問題?。。。?!解碼用雙緩存……結(jié)果兩個輸出賦值接口都只給1緩塞了數(shù)據(jù),2緩就全程打醬油,(′д` )…彡…彡修改后,聲音也是流暢的流淌出來。經(jīng)過測試,F(xiàn)LAC解碼只能解leave0-leave2壓縮等級的文件,再高級的失敗的原因是內(nèi)存不夠用了,實(shí)測leave3級占用的內(nèi)存應(yīng)該需要80k,103系列傷不起。

圖滿了,樓下繼續(xù)。

本來還要做APE解碼的,結(jié)果試了下,內(nèi)存不夠,大概需要70k左右吧?只好棄療

這三種音頻,播放解碼的套路,基本都是一樣的。
1、打開文件,檢測是否符合解碼條件(格式,碼率,位率,采樣率什么的)
2、malloc讀取緩存區(qū),解碼緩沖區(qū),兩個播放緩沖區(qū)(wav播放只需要播放緩沖區(qū))
3、讀取并解碼第一幀
4、配置DMA+IIS開始自動傳輸
5、進(jìn)入解碼循環(huán)
6、循環(huán)內(nèi)先做讀取+解碼+寫入到?jīng)]有在播放的播放緩沖區(qū)
7、等待上一緩存器播放完,期間可以檢測按鍵,刷屏
8、播放完成,進(jìn)行切換,返回第六步
9、讀取錯誤,播放完畢,按鍵操作等等,break出循環(huán),關(guān)閉DMA,關(guān)閉文件,free各種緩存

因?yàn)镈MA是自動搬運(yùn)的,由IIS觸發(fā),所以播放過程完全不需要處理器理會,處理器只管解碼就好。

代碼編譯完的大小,有兩個警告,無光痛癢的,不要管
因?yàn)殚_啟了長文件名支持 ,中文支持,用到了cc936.c文件,所以有接近200k的內(nèi)容(絕大部分RO-data)都是存放了utf和gbk的轉(zhuǎn)換表

芯片只能用STM32F103RDT6及以上型號,因?yàn)閮?nèi)存需要配置64k
目前沒有弄屏幕,所以消息全部是串口輸出,波特率是115200
開機(jī)顯示相關(guān)信息,注意此時是80mhz運(yùn)行(8mhz晶振)

遍歷、計數(shù)并輸出SD卡/音樂目錄下的所有音樂(目前沒做遍歷整個儲存卡的程序,只只指定 SD卡/音樂 目錄)
遍歷完成后開始隨機(jī)播放,隨機(jī)播放用了開機(jī)是讀取ADC的16和17通道的值做隨機(jī)種子,兩個通道分別是內(nèi)溫傳感器和內(nèi)部基準(zhǔn)

播放過程中的截圖,不支持的格式和采樣率什么的會自動跳過

flac

按鍵和燈的定義



播放視頻,因?yàn)闆]有合適的外放設(shè)備,找了個小玩具來充當(dāng)下了
實(shí)際上,耳機(jī)聽起來的是很杠杠的
 
 


代碼見樓下
這樓發(fā)代碼

鏈接:http://pan.baidu.com/s/1qYRL488 密碼:vu8n

keil5工程

 IIS.zip (993 K) 下載次數(shù):22 


再帖一個帖子,另一壇友做的,用pos機(jī)改造成mp3的


1元pos機(jī)加個tf(sd)卡變身成mp3播放器,不添加其他芯片
http://bbs.mydigit.cn/read.php?tid=1640836


GD32/STM32也瘋狂!超頻上視頻解碼播放 240*320 10fps
http://bbs.mydigit.cn/read.php?tid=2050795
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
這些常見音頻編碼一定要了解
數(shù)字音頻格式
藍(lán)牙MP3解碼模塊音頻接收板 無損車載音箱功放改裝藍(lán)牙4.1電路板
FLAC和APE有什么區(qū)別?應(yīng)該選擇那種?
12V藍(lán)牙無損解碼板WAV+FLAC+MP3解碼板藍(lán)牙播放器
常見的無損音頻格式
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服