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