ARM Cortex-M3 LM3S1138實(shí)現(xiàn)嵌入式網(wǎng)絡(luò)播放系統(tǒng)
摘要: 針對(duì)一般嵌入式播放系統(tǒng)無網(wǎng)絡(luò)功能,提出一種網(wǎng)絡(luò)播放系統(tǒng)硬件平臺(tái)設(shè)計(jì)方案,。該方案采用ARM Cortex-M3構(gòu)架的LM3S1138作為主控制器,以USB控制器CH375,、網(wǎng)絡(luò)器件ENC28J60和音頻解碼器VSl003作為外圍器件,采用μC/OS作為操作系統(tǒng),。并給出系統(tǒng)軟件的設(shè)計(jì)方法,,包括設(shè)備驅(qū)動(dòng)程序設(shè)計(jì)和應(yīng)用程序設(shè)計(jì)。通過測(cè)試,,該系統(tǒng)能流暢下載和播放網(wǎng)絡(luò)歌曲,,并能廣泛應(yīng)用于家電產(chǎn)品,、車栽電子產(chǎn)品和公共廣播場(chǎng)所。
Abstract:
Key words :
摘要:針對(duì)一般嵌入式播放系統(tǒng)無網(wǎng)絡(luò)功能,,提出一種title="網(wǎng)絡(luò)播放系統(tǒng)">網(wǎng)絡(luò)播放系統(tǒng)硬件平臺(tái)設(shè)計(jì)方案,。該方案采用ARM Cortex-M3構(gòu)架的LM3S1138作為主控制器,以USB控制器CH375,、網(wǎng)絡(luò)器件ENC28J60和音頻解碼器VSl003作為外圍器件,,采用μC/OS作為操作系統(tǒng)。并給出系統(tǒng)軟件的設(shè)計(jì)方法,,包括設(shè)備驅(qū)動(dòng)程序設(shè)計(jì)和應(yīng)用程序設(shè)計(jì),。通過測(cè)試,該系統(tǒng)能流暢下載和播放網(wǎng)絡(luò)歌曲,,并能廣泛應(yīng)用于家電產(chǎn)品,、車栽電子產(chǎn)品和公共廣播場(chǎng)所。
隨著網(wǎng)絡(luò)應(yīng)用的普及,,為普通嵌入式系統(tǒng)增加網(wǎng)絡(luò)功能,,能更好滿足消費(fèi)者對(duì)網(wǎng)絡(luò)資源的需求。這里采用基于ARM Cortex-M3的微控制器LM3S1138實(shí)現(xiàn)一種具備網(wǎng)絡(luò)功能的播放終端系統(tǒng),,該系統(tǒng)不僅具有良好的播放效果,,還可從網(wǎng)絡(luò)音樂服務(wù)器上點(diǎn)播音樂并實(shí)時(shí)播放。
1 網(wǎng)絡(luò)播放系統(tǒng)的設(shè)計(jì)方案
該網(wǎng)絡(luò)播放系統(tǒng)由服務(wù)器,、用戶終端和音響設(shè)備組成,。其中,服務(wù)器通過以太網(wǎng)提供音樂資源,,用戶終端通過網(wǎng)絡(luò)下載音頻數(shù)據(jù)再實(shí)現(xiàn)音頻解碼,,音響設(shè)備實(shí)現(xiàn)音樂播放。圖1給出該系統(tǒng)設(shè)計(jì)框圖,。
該系統(tǒng)設(shè)計(jì)采用基于ARM Cortex-M3的控制器LM3Sll38作為主控制器。該控制器改進(jìn)了代碼密度,,減少中斷延時(shí),,實(shí)現(xiàn)Thumb-2指令集,并具有更低功耗,,適用于嵌入式微處理器,;網(wǎng)絡(luò)模塊采用以太網(wǎng)控制器ENC602J28;音頻編解碼器采用VSl003,,該器件擁有自主產(chǎn)權(quán)的DSP處理器核,,具有高性能、低功耗等特性,;并采用USB總線接口器件CH375擴(kuò)展存儲(chǔ)模塊,。支持海量存儲(chǔ),。
將嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-II移植到主處理器上,實(shí)現(xiàn)多任務(wù)的調(diào)度管理,。系統(tǒng)工作時(shí),,通過操作播放器上的配置按鈕,設(shè)置服務(wù)器和用戶終端的相關(guān)網(wǎng)絡(luò)配置,,點(diǎn)擊播放器中的連接按鈕,,發(fā)送連接服務(wù)器請(qǐng)求,服務(wù)器收到用戶終端的連接請(qǐng)求,,驗(yàn)證終端帳號(hào)正確后開始網(wǎng)絡(luò)連接,,向用戶傳送點(diǎn)播的資源列表,用戶終端在播放器界面顯示列表,,此時(shí),,用戶可以選擇點(diǎn)播的歌曲,然后將音樂文件下載到存儲(chǔ)設(shè)備中,,下載完畢后,,服務(wù)器關(guān)閉網(wǎng)絡(luò)連接,播放器就可播放已下載歌曲,。
2 系統(tǒng)硬件模塊設(shè)計(jì)
2.1 以太網(wǎng)接口
ENC28J60是獨(dú)立的以太網(wǎng)控制器,,采用業(yè)界標(biāo)準(zhǔn)的SPI串行接口,具有10 Mb/s SPI接口,,符合IEEE802.3協(xié)議,,內(nèi)置10 Mb/s以太網(wǎng)物理層器件(PHY)及介質(zhì)訪問控制器(MAC)。另外,,它還具有可編程8 KB雙端口SRAM緩沖器,,此緩沖存儲(chǔ)器具有靈活可靠的數(shù)據(jù)管理機(jī)制,以高效方式進(jìn)行信息包的存儲(chǔ),、檢索和修改,,以減輕主控器件的內(nèi)存負(fù)荷。
圖2為網(wǎng)絡(luò)接口硬件連接示意圖,。ENC28J60通過SPI總線實(shí)現(xiàn)與LM3Sll38的數(shù)據(jù)傳輸,,CS為片選信號(hào),SCLK為時(shí)鐘信號(hào),,MOSI/MISO為數(shù)據(jù)傳輸串口,。此外,ENC28J60還與網(wǎng)絡(luò)變壓器HR901l70A相連,,引出剛45接口,。
2.2音頻接口
VSl003音頻編解碼器為VSl0XX系列第3代產(chǎn)品,包括MP3/WMA/MIDI解碼和ADPCM編碼2個(gè)單器件,。其內(nèi)置有高性能,、低功耗的DSP處理核(VSDSP),,工作內(nèi)存,可供用戶程序使用的5.5 KB RAM,,串行SPI總線接口,,高質(zhì)量的采樣頻率可調(diào)的過采樣D/A轉(zhuǎn)換器以及16位的過采樣A/D轉(zhuǎn)換器。圖3為音頻編解碼器模塊硬件連接示意圖,,VSl003采用SPI總線與LM3Sll38實(shí)現(xiàn)通信,。其中,SCLK為輸入時(shí)鐘,,CS為片選信號(hào),,MOSI/MISO為數(shù)據(jù)串口,Demand為命令有效信號(hào),,VSl003外接音頻輸出設(shè)備,。
2.3 USB控制接口
CH375是一款支持USB-HOST主機(jī)方式和USB-DE-VICE/SLAVE從設(shè)備方式的器件,主機(jī)端點(diǎn)輸入和輸出緩沖區(qū)各64字節(jié),,支持常用的12 Mb/s全速USB設(shè)備,,支持USB設(shè)備的控制傳輸、批量傳輸,、中斷傳輸,。內(nèi)置固件處理海量存儲(chǔ)設(shè)備的專用通訊協(xié)議,支持Bulk-Only傳輸協(xié)議和 SCSI,,UFI,,RBC或等效命令集的USB存儲(chǔ)設(shè)備。
圖4為USB控制接口模塊硬件連接示意圖,,CH375通過UART串口與LM3S1138傳輸數(shù)據(jù),,*****為中斷信號(hào),TXD/RXD為數(shù)據(jù)傳輸串口,,CH375連接USB存儲(chǔ)設(shè)備,。
3 基于μC/OS-II系統(tǒng)軟件設(shè)計(jì)
μC/OS-II是專門為嵌入式應(yīng)用設(shè)計(jì)的實(shí)時(shí)操作系統(tǒng)內(nèi)核,其具有以下優(yōu)點(diǎn):源代碼公開,,代碼結(jié)構(gòu)清晰,,注釋詳盡,組織有條理,,具有良好的可擴(kuò)展性和可移植性,最多可以管理60個(gè)任務(wù),。該系統(tǒng)移植的μC/OS-II由用戶層,、中間件層、μC/OS-II源碼層,、μC/OS-II移植層和驅(qū)動(dòng)庫組成,。用戶層存放用戶代碼及設(shè)置,,其中Main.c是用戶編寫任務(wù)處,Main.h定義堆棧大小及優(yōu)先級(jí),;中間件層Middleware存放UART,、 SPI等串口通信中間件和TCP/IP協(xié)議棧LwIP;μC/OS-II源碼層Source存放μC/OS-II的源代碼,;μC/OS-II移植層 Port存放μC/OS-Ⅱ基于LM3S的移植代碼,,包括OS_CPU_C.C,OS_CPU_A.A,,OS_CPU.C等3個(gè)必要文件,;驅(qū)動(dòng)庫層是直接面向硬件設(shè)備層,它是硬件設(shè)備和應(yīng)用程序之間的樞紐,,直接與系統(tǒng)底層的硬件設(shè)備打交道,,按照硬件設(shè)備的具體工作方式讀寫設(shè)備寄存器。將寄存器的數(shù)據(jù)與應(yīng)用軟件交互,,ENC28J60,、VSl003和CH375的驅(qū)動(dòng)函數(shù)都在該層。
3.1網(wǎng)絡(luò)驅(qū)動(dòng)程序
本系統(tǒng)采用ENC28J60以太網(wǎng)控制器,,需編寫網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序,,實(shí)現(xiàn)低層網(wǎng)絡(luò)接口及硬件函數(shù)驅(qū)動(dòng)。該驅(qū)動(dòng)程序設(shè)計(jì)主要包含網(wǎng)卡的初始化和數(shù)據(jù)的發(fā)送接收,。
網(wǎng)卡初始化的驅(qū)動(dòng)程序包括定義發(fā)送緩沖區(qū)大小,、發(fā)送緩沖區(qū)數(shù)、ENC28J60的片選信號(hào),、ENC28J60的復(fù)位引腳以及網(wǎng)卡自檢,。具體程序代碼如下:
網(wǎng)卡數(shù)據(jù)傳輸?shù)尿?qū)動(dòng)程序包括申請(qǐng)IP地址,建立與服務(wù)器的連接,,以及數(shù)據(jù)的接收和發(fā)送等,,圖5為其程序流程。
3.2文件系統(tǒng)
文件系統(tǒng)是一種以結(jié)構(gòu)化格式存儲(chǔ)和信息檢索的實(shí)現(xiàn)方法,,可使用戶方便快捷的管理存儲(chǔ)數(shù)據(jù),。文件系統(tǒng)一般包括 FAT32/16,NTFS,,ext2/3,,NFS等,本設(shè)計(jì)采用FATl6,,可支持2 GB的最大分區(qū),,用于管理U盤中的音頻文件,該文件系統(tǒng)的實(shí)現(xiàn)主要針對(duì)USB接口器件CH375進(jìn)行驅(qū)動(dòng)開發(fā)。
在CH375驅(qū)動(dòng)設(shè)計(jì)中,,先實(shí)現(xiàn)FAT32/16文件系統(tǒng)層,,再實(shí)現(xiàn)文件級(jí)API應(yīng)用層。文件系統(tǒng)層采用CH375開發(fā)商提供的U盤文件級(jí)子程序庫來實(shí)現(xiàn),,CH375的 U盤文件級(jí)子程序庫具有以下特性,;支持常用的FAT16和FAT32文件系統(tǒng),磁盤容量可達(dá)100 GB以上,,支持多級(jí)子目錄,。支持8.3格式的大寫字母和中文文件名,支持小寫字母或長文件名,,支持文件打開,、刪除、讀寫以及搜索等,。文件系統(tǒng)移植好后,,再進(jìn)行API應(yīng)用層驅(qū)動(dòng)設(shè)計(jì)。應(yīng)用層驅(qū)動(dòng)包括CH375引腳配置,、文件讀寫緩沖區(qū)配置,、CH375讀寫程序的設(shè)計(jì)。在讀寫程序的設(shè)計(jì)中,,要注意對(duì)CH375的延時(shí)操作,,滿足CH375的時(shí)序要求。
3.3音頻驅(qū)動(dòng)程序
音頻驅(qū)動(dòng)的設(shè)計(jì)主要是針對(duì)VSl003的初始化設(shè)置和實(shí)現(xiàn)音頻數(shù)據(jù)流的傳輸,,并對(duì)應(yīng)用層提供API接口,,這里完成了音頻播放功能程序的設(shè)計(jì)。
在該程序設(shè)計(jì)中,,首先對(duì)LMll38和VSl003控制接口的(MISO,、MOSI、SCK,、CS,、Demand)引腳進(jìn)行相應(yīng)配置,VSl003初始化配置完成后,,開始等待系統(tǒng)的播放標(biāo)志置位,,播放標(biāo)志為“0”時(shí),重新初始化VSl003,,播放標(biāo)志為“l”時(shí),,接收到系統(tǒng)的播放消息,使能SPI接口,,選擇將要播放的數(shù)據(jù)包,,把音頻數(shù)據(jù)寫入SPI的緩沖存儲(chǔ)區(qū),然后再發(fā)送給VSl003的數(shù)據(jù)寄存器,,當(dāng)音頻數(shù)據(jù)發(fā)送完成后,,開始由 VSl003處理這些音頻數(shù)據(jù),實(shí)現(xiàn)模擬音頻數(shù)據(jù)的輸出,。該函數(shù)能夠流暢地完成音頻播放功能,。
3.4用戶應(yīng)用程序
系統(tǒng)的應(yīng)用程序主流程如圖6所示。
系統(tǒng)主任務(wù)啟動(dòng)后,,先初始化人機(jī)界面庫函數(shù),,它提供了操作界面的按鍵中斷處理函數(shù)以及LCD的顯示函數(shù);再讀取初始系統(tǒng)配置數(shù)據(jù),,如本地IP,、服務(wù)器IP、用戶賬號(hào),、密碼等,,完成網(wǎng)絡(luò)、音頻編解碼以及存儲(chǔ)等模塊的初始化,;然后,,主任務(wù)再創(chuàng)建多個(gè)子任務(wù),包括ENC28-J60task,,CH375task,,VSl003task,humaninteRFacetask,,接著進(jìn)入消息循環(huán),,消息循環(huán)是整個(gè)應(yīng)用程序的核心部分,通過消息循環(huán),,系統(tǒng)不斷獲取用戶操作消息,,并做出相應(yīng)處理,實(shí)現(xiàn)系統(tǒng)功能,;當(dāng)收到一個(gè)退出消息時(shí),,系統(tǒng)強(qiáng)制主任務(wù)跳出消息循環(huán),關(guān)閉播放器操作界面,,系統(tǒng)退出應(yīng)用程序,。
4 系統(tǒng)測(cè)試及分析
系統(tǒng)調(diào)試成功后,可流暢地從服務(wù)器中下載音頻數(shù)據(jù),,保存到外接USB設(shè)備中,,然后再通過音頻解碼從音響播放出來。圖7為該系統(tǒng)主界面,,系統(tǒng)音質(zhì)良好,,達(dá)到設(shè)計(jì)要求。
本系統(tǒng)設(shè)計(jì)采用基于ARM Cortex-M3的嵌入式器件LM3S1138作為主控制器件,采用ENC28J60作為網(wǎng)絡(luò)接口器件,,在μC/OS-II平臺(tái)上構(gòu)建一個(gè)實(shí)時(shí)的網(wǎng)絡(luò)播放系統(tǒng),。該系統(tǒng)能夠?qū)崿F(xiàn)網(wǎng)絡(luò)點(diǎn)播功能。如將ENC28J60更成為具有USB接口的無線網(wǎng)卡,,則該系統(tǒng)還具有無線網(wǎng)絡(luò)功能,。而隨著以太網(wǎng)技術(shù)的深入發(fā)展,將嵌入式系統(tǒng)與網(wǎng)絡(luò)結(jié)合,,在嵌入式實(shí)時(shí)操作系統(tǒng)中引入TCP/IP協(xié)議棧,,以支持嵌入式設(shè)備接入網(wǎng)絡(luò),成為嵌入式領(lǐng)域重要的研究方向,,且對(duì)于一些基于網(wǎng)絡(luò)接口的嵌入式系統(tǒng)都將具有廣泛的應(yīng)用前景,。
此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。