新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 串口發(fā)送MP3遇到的尷尬問(wèn)題

串口發(fā)送MP3遇到的尷尬問(wèn)題

作者: 時(shí)間:2016-11-27 來(lái)源:網(wǎng)絡(luò) 收藏
最近打算打造一款由PC端電腦串口發(fā)送MP3文件數(shù)據(jù)到STM32上,然后有stm32 將數(shù)據(jù)壓包再發(fā)送給vs1003解碼播放出聲音來(lái)。之前的方式是通過(guò)SPI讀SD卡里的文件,再通過(guò)SPI方式發(fā)送出去,這兩種方式都是stm32為主然后分別向兩個(gè)SPI設(shè)備要數(shù)據(jù)發(fā)數(shù)據(jù),這種方式實(shí)現(xiàn)起來(lái)很簡(jiǎn)單。但是如果改為串口發(fā)送音樂(lè)數(shù)據(jù)的話(huà),那么stm32很被動(dòng),要時(shí)刻進(jìn)入中斷停止其他活動(dòng),這樣當(dāng)向vs003發(fā)送語(yǔ)音數(shù)據(jù)時(shí),數(shù)據(jù)沒(méi)發(fā)送完畢,一個(gè)中斷劈來(lái),就崩潰了。我嘗試直接進(jìn)入中斷后,把數(shù)據(jù)在中斷里發(fā)送給vs1003,但實(shí)際上,比以前效果好 ,但斷斷續(xù)續(xù),肯定是解碼不同步,時(shí)間差太大 。

我在想,如果,沒(méi)來(lái)一個(gè)中斷肯定是接受到一個(gè)字節(jié),那么總共要來(lái)512個(gè)中斷,才算滿(mǎn)一個(gè)包,然后把這個(gè)包發(fā)送給vs1003,如果再來(lái)下一個(gè)中斷前,512個(gè)字節(jié)恰好發(fā)送完畢,那么還剩511個(gè)中斷,期間vs1003肯定斷了音。如果511個(gè)中斷來(lái)臨之前音樂(lè)恰好發(fā)送出去,那么又會(huì)響512次,但還是會(huì)斷斷續(xù)續(xù),只不過(guò)比剛才貌似連貫了些。

本文引用地址:http://butianyuan.cn/article/201611/322282.htm


關(guān)鍵詞: 串口發(fā)送MP

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉