DIY之樂:基于PIC32的以太網音箱設計案例,硬件框圖、器件選型、數據結構、軟件流程
4.2以太網終端設備軟件設計
4.1.1緩沖區數據結構設計
下面是一個數據單元的結構體。ucIndex為數據包序號;uiHeader該數據類型;uiSize為解碼的數據個數,數據單位為字節;ucBuffer為MP3解碼后的PCM碼流;fiInfo為針砭信息。解碼后的最大的數據長度為2304,因此將ucBuffer定義最大長度為2400。
考慮到網絡的傳輸的可能出現一些抖動、PC軟件定時器的誤差和需要給MP3解碼預留時間,因此需要在終端設備中緩沖一定的數據量。又由于,MP3音頻要實時播放因此不需要緩沖太大的數據量。
在本次設計中,在終端設備里將上面的數據結構定義為20個緩沖區。當數據緩沖解碼到數據緩沖區個數的一半時,開始播放PCM碼流。
4.1.2以太網終端設備軟件設計
以太網終端設備模塊有三個分別是EthernetSpeaker.c、EthernetSpeakerPlayer.c和MP3Api.c。EthernetSpeaker.c的功能是負責網絡通訊模塊,EthernetSpeakerPlayer.c是DA驅動模塊,MP3Api.c中包含MP3庫載入初始化,和MP3解碼函數。
圖13以太網音響終端設備程序流程圖
圖13描述了以太網終端設備程序流程圖,通過SW3按鍵向PC程序發送請求數據。圖14中描述了以太網終端設備的SP3 TX空的中斷服務程序。
圖14以太網終端設備SPI TX空中斷服務程序流程圖
5總結
本文實現了以太網音響在現有的以太網上可以播放MP3文件,解決了傳統模擬廣播系統的模擬的信號的缺點。實現了PC服務器勻速發送MP3幀文件,終端設備軟解碼并實時播放。最后的成品可以在局域網上流暢播放、控制終端設備。設計基本達到了賽前的設計需求。當然,本次設計還是有遺憾和不足之處,遺憾的是由于PIC32不支持I2S,所以只有用SPI驅動DA,導致了只能播放單聲道。
DIY機械鍵盤相關社區:機械鍵盤DIY
模擬信號相關文章:什么是模擬信號
數字通信相關文章:數字通信原理
評論