如何設計基于A(yíng)RM的多通道專(zhuān)業(yè)MP3播放器?
1引言
本文引用地址:http://dyxdggzs.com/article/201807/383924.htm隨著(zhù)微電子技術(shù)的飛速發(fā)展,嵌入式產(chǎn)品以其自然的人機交互界面和豐富的多媒體處理能力迅速得以推廣,并取得了巨大成功[1].目前,在多媒體音頻領(lǐng)域中,MP3播放器占據了絕對的主導地位。但現有的MP3播放器驅動(dòng)能力非常有限,只適合個(gè)人使用,不能滿(mǎn)足大型公共場(chǎng)所在不同區域播放不同背景音樂(lè )的多通道播放需要?;谝陨戏治?,本文設計了一種基于S3C44B0X芯片的μClinux環(huán)境下的多通道專(zhuān)業(yè)MP3播放器。
2系統功能分析與結構設計
多通道專(zhuān)業(yè)MP3播放器是專(zhuān)為滿(mǎn)足公共語(yǔ)音廣播市場(chǎng)的需求而設計的,其主要功能包括:(1)音頻解碼和播放功能;(2)通過(guò)USB接口與大容量外部存儲設備進(jìn)行數據傳輸;(3)操作界面統一管理功能;(4)多通道播放功能。
為了提高系統運行效率,實(shí)現多通道播放管理,本系統選用三星公司的S3C44B0X作為核心處理器,主要負責數據轉換,輸出通道的選擇,以及LCD的控制。同時(shí),選用意法半導體的STA013作為解碼芯片,配合AK4393實(shí)現模擬音頻信號的輸出,此外,使用SL811HS和ISP1520提供兩個(gè)主USB接口,以實(shí)現移動(dòng)硬盤(pán)或U盤(pán)的掛接。其系統總體結構如圖1所示:

圖1系統總體結構圖
3系統硬件設計
作為一種典型的嵌入式系統,其開(kāi)發(fā)的優(yōu)點(diǎn)在于軟硬件的可裁剪性[2],在確保有一個(gè)穩定的最小系統以后,再對外圍的設備進(jìn)行擴展。此多通道專(zhuān)業(yè)MP3播放器的核心芯片S3C44B0X是基于ARM7而開(kāi)發(fā)的多功能SOC(Signal Operation Control)。S3C44B0X除具備一般嵌入式芯片所具有的總線(xiàn)、SDRAM控制器和3個(gè)串口等外設之外,還具有TFT LCD控制器、USB Slave、USB Host、I2C總線(xiàn)控制器、SPI控制器、IIS音頻接口、SD
3.1 MP3解碼電路設計
本系統解碼部分的硬件采用了ST公司的STA013解碼芯片以及AKM的AK4393芯片。STA013是一款優(yōu)秀的MP3解碼芯片,它通過(guò)IIC總線(xiàn)來(lái)傳輸控制信息,通過(guò)串行數據線(xiàn)接收語(yǔ)音數據。AK4393是一款高品質(zhì)的立體聲DAC芯片,支持24bit/96KHz取樣,采用“復合比特”技術(shù)使芯片的解碼更為快速和準確。
解碼部分與S3C44B0X的接口電路部分如圖2所示。通過(guò)S3C44B0X的I/O口對STA013發(fā)送音頻數據,解碼過(guò)程由STA013的DSP核來(lái)進(jìn)行。STA013解碼后的數字音頻信號由SDO(串行數據輸出),SCKT(串行時(shí)鐘),LRCKT(左右聲道時(shí)鐘),OCLK(采樣時(shí)鐘)4個(gè)腳輸出到D/A轉換器AK4393.通過(guò)AK4393將得到的模擬音頻信號,再經(jīng)過(guò)功率放大電路放大后就可以直接驅動(dòng)無(wú)源音箱。

圖2解碼部分接口電路圖
此外,由于實(shí)現多通道的播放形式,所以需要在設計過(guò)程中提供多套相同的解碼芯片和DAC.
3.2多通道功能的實(shí)現
系統多通道播放采用的基本方法是(以四通道為例):當系統上電以后,解碼控制信號為了實(shí)現對每一個(gè)解碼通道的具體工作狀態(tài)控制,通過(guò)采用外接一個(gè)四路轉換開(kāi)關(guān)(CD4066),控制各路通道解碼芯片的工作狀態(tài)。轉換開(kāi)關(guān)四路通道的輸入部分連接CPU的IIC總線(xiàn)的IICSDA,通過(guò)與CPU相連的多個(gè)控制引腳(CTRL1,2,3,4),確定控制數據的傳輸方向。四路通道的時(shí)鐘信號則直接連接在CPU上,只有控制數據傳輸時(shí)才發(fā)生作用。
在播放過(guò)程中,CPU實(shí)時(shí)響應各通道傳輸數據的請求,選通該路的解碼芯片,被選通的解碼芯片對從總線(xiàn)上獲取的mp3文件數據進(jìn)行解碼,而未被選通的解碼通道則忽略總線(xiàn)上的音頻數據。當數據請求的中斷請求信號由高變低,系統開(kāi)始響應下一次數據請求。通過(guò)這種各通道交替工作的方式,實(shí)現四通道同步播放的功能。工作原理圖如圖3所示:

圖3多通道工作原理圖
4系統軟件設計
系統軟件包括操作系統、驅動(dòng)程序及播放器應用程序3部分。
4.1操作系統的實(shí)現
在嵌入式系統中,通常并沒(méi)有像BIOS那樣的固件程序,因此整個(gè)系統的加載啟動(dòng)任務(wù)就完全由BootLoader來(lái)完成。BootLoader的任務(wù)是初始化芯片和主板,系統選用的是U-Boot-1.1.2啟動(dòng)程序,因為U-Boot的優(yōu)點(diǎn)在于對多系統和多平臺的支持。由于S3C44B0X沒(méi)有存儲管理單元(MMU),所以無(wú)法移植標準的Linux內核,而μClinux主要是針對沒(méi)有MMU的處理器設計的操作系統[4],因此可以作為播放器的操作系統平臺進(jìn)行移植。通過(guò)修改相應的配置文件和驅動(dòng)程序就可以實(shí)現移植過(guò)程中需要創(chuàng )建的開(kāi)發(fā)板文件。
4.2驅動(dòng)程序的設計
本系統所編譯的μClinux內核中包含有USB、LCD等驅動(dòng)程序,只要根據需要適當的修改便可以應用。但是對于MP3解碼部分芯片的驅動(dòng)需要自己編寫(xiě)。音頻驅動(dòng)程序實(shí)現的主要功能是:(1)系統啟動(dòng)時(shí)可以完成芯片的初始化;(2)具體操作時(shí)可以提供給操作系統合適的軟件接口。音頻驅動(dòng)初始化程序如下:
void STA013_Init(void)
{
if(STA013_SendCommand(RESET_REG,0,0x00)) //復位STA013
STA013_PrintError();
if(STA013_SendCommand(ACT_CON_REG,0,0x00)) //未激活狀態(tài)
STA013_PrintError();
if(STA013_SendCommand(PWR_CON_REG,0,0x00)) //上電
STA013_PrintError();
if(STA013_SendCommand(FS_CON_REG,0,
I STA013L_FsValue[SysInfo.SamplingIndex])) //選擇采樣頻率
STA013_PrintError();
if(STA013_SendCommand(IF_CON_REG,0,0x02+(06))) //選擇16位IIS數據格式
STA013_PrintError();
if(STA013_SendCommand(ANG_CTL_REG,0,0)) // 0x13, 0x12選擇DAC
STA013_PrintError(); 和Line In輸入模式
if(STA013_SendCommand(DGT_CTL_REG,0,0x00)) // DAC靜音
STA013_PrintError();
評論