最近打算打造一款由PC端電腦串口發(fā)送MP3文件數(shù)據(jù)到STM32上,然后有stm32 將數(shù)據(jù)壓包再發(fā)送給vs1003解碼播放出聲音來。之前的方式是通過SPI讀SD卡里的文件,再通過SPI方式發(fā)送出去,這兩種方式都是stm32為主然后分別向兩個SPI設(shè)備要數(shù)據(jù)發(fā)數(shù)據(jù),這種方式實現(xiàn)起來很簡單。但是如果改為串口發(fā)送音樂數(shù)據(jù)的話,那么stm32很被動,要時刻進入中斷停止其他活動,這樣當(dāng)向vs003發(fā)送語音數(shù)據(jù)時,數(shù)據(jù)沒發(fā)送完畢,一個中斷劈來,就崩潰了。我嘗試直接進入中斷后,把數(shù)據(jù)在中斷里發(fā)送給vs1003,但實際上,比以前效果好 ,但斷斷續(xù)續(xù),肯定是解碼不同步,時間差太大 。我在想,如果,沒來一個中斷肯定是接受到一個字節(jié),那么總共要來512個中斷,才算滿一個包,然后把這個包發(fā)送給vs1003,如果再來下一個中斷前,512個字節(jié)恰好發(fā)送完畢,那么還剩511個中斷,期間vs1003肯定斷了音。如果511個中斷來臨之前音樂恰好發(fā)送出去,那么又會響512次,但還是會斷斷續(xù)續(xù),只不過比剛才貌似連貫了些。
本文引用地址:http://www.ex-cimer.com/article/201611/322282.htm
評論