新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 如何設(shè)計基于ARM的多通道專業(yè)MP3播放器?

如何設(shè)計基于ARM的多通道專業(yè)MP3播放器?

作者: 時間:2018-07-25 來源:網(wǎng)絡(luò) 收藏

1引言

本文引用地址:http://www.butianyuan.cn/article/201807/383924.htm

隨著微電子技術(shù)的飛速發(fā)展,嵌入式產(chǎn)品以其自然的人機(jī)交互界面和豐富的多媒體處理能力迅速得以推廣,并取得了巨大成功[1].目前,在多媒體音頻領(lǐng)域中,播放器占據(jù)了絕對的主導(dǎo)地位。但現(xiàn)有的播放器驅(qū)動能力非常有限,只適合個人使用,不能滿足大型公共場所在不同區(qū)域播放不同背景音樂的播放需要。基于以上分析,本文設(shè)計了一種基于S3C44B0X芯片的μClinux環(huán)境下的專業(yè)播放器。

2系統(tǒng)功能分析與結(jié)構(gòu)設(shè)計

專業(yè)MP3播放器是專為滿足公共語音廣播市場的需求而設(shè)計的,其主要功能包括:(1)音頻解碼和播放功能;(2)通過USB接口與大容量外部存儲設(shè)備進(jìn)行數(shù)據(jù)傳輸;(3)操作界面統(tǒng)一管理功能;(4)多通道播放功能。

為了提高系統(tǒng)運(yùn)行效率,實現(xiàn)多通道播放管理,本系統(tǒng)選用三星公司的S3C44B0X作為核心處理器,主要負(fù)責(zé)數(shù)據(jù)轉(zhuǎn)換,輸出通道的選擇,以及LCD的控制。同時,選用意法半導(dǎo)體的STA013作為解碼芯片,配合AK4393實現(xiàn)模擬音頻信號的輸出,此外,使用SL811HS和ISP1520提供兩個主USB接口,以實現(xiàn)移動硬盤或U盤的掛接。其系統(tǒng)總體結(jié)構(gòu)如圖1所示:

圖1系統(tǒng)總體結(jié)構(gòu)圖

3系統(tǒng)硬件設(shè)計

作為一種典型的嵌入式系統(tǒng),其開發(fā)的優(yōu)點(diǎn)在于軟硬件的可裁剪性[2],在確保有一個穩(wěn)定的最小系統(tǒng)以后,再對外圍的設(shè)備進(jìn)行擴(kuò)展。此多通道專業(yè)MP3播放器的核心芯片S3C44B0X是基于7而開發(fā)的多功能SOC(Signal Operation Control)。S3C44B0X除具備一般嵌入式芯片所具有的總線、SDRAM控制器和3個串口等外設(shè)之外,還具有TFT LCD控制器、USB Slave、USB Host、I2C總線控制器、SPI控制器、IIS音頻接口、SD

3.1 MP3解碼電路設(shè)計

本系統(tǒng)解碼部分的硬件采用了ST公司的STA013解碼芯片以及AKM的AK4393芯片。STA013是一款優(yōu)秀的MP3解碼芯片,它通過IIC總線來傳輸控制信息,通過串行數(shù)據(jù)線接收語音數(shù)據(jù)。AK4393是一款高品質(zhì)的立體聲DAC芯片,支持24bit/96KHz取樣,采用“復(fù)合比特”技術(shù)使芯片的解碼更為快速和準(zhǔn)確。

解碼部分與S3C44B0X的接口電路部分如圖2所示。通過S3C44B0X的I/O口對STA013發(fā)送音頻數(shù)據(jù),解碼過程由STA013的DSP核來進(jìn)行。STA013解碼后的數(shù)字音頻信號由SDO(串行數(shù)據(jù)輸出),SCKT(串行時鐘),LRCKT(左右聲道時鐘),OCLK(采樣時鐘)4個腳輸出到D/A轉(zhuǎn)換器AK4393.通過AK4393將得到的模擬音頻信號,再經(jīng)過功率放大電路放大后就可以直接驅(qū)動無源音箱。

圖2解碼部分接口電路圖

此外,由于實現(xiàn)多通道的播放形式,所以需要在設(shè)計過程中提供多套相同的解碼芯片和DAC.

3.2多通道功能的實現(xiàn)

系統(tǒng)多通道播放采用的基本方法是(以四通道為例):當(dāng)系統(tǒng)上電以后,解碼控制信號為了實現(xiàn)對每一個解碼通道的具體工作狀態(tài)控制,通過采用外接一個四路轉(zhuǎn)換開關(guān)(CD4066),控制各路通道解碼芯片的工作狀態(tài)。轉(zhuǎn)換開關(guān)四路通道的輸入部分連接CPU的IIC總線的IICSDA,通過與CPU相連的多個控制引腳(CTRL1,2,3,4),確定控制數(shù)據(jù)的傳輸方向。四路通道的時鐘信號則直接連接在CPU上,只有控制數(shù)據(jù)傳輸時才發(fā)生作用。

在播放過程中,CPU實時響應(yīng)各通道傳輸數(shù)據(jù)的請求,選通該路的解碼芯片,被選通的解碼芯片對從總線上獲取的mp3文件數(shù)據(jù)進(jìn)行解碼,而未被選通的解碼通道則忽略總線上的音頻數(shù)據(jù)。當(dāng)數(shù)據(jù)請求的中斷請求信號由高變低,系統(tǒng)開始響應(yīng)下一次數(shù)據(jù)請求。通過這種各通道交替工作的方式,實現(xiàn)四通道同步播放的功能。工作原理圖如圖3所示:

圖3多通道工作原理圖

4系統(tǒng)軟件設(shè)計

系統(tǒng)軟件包括操作系統(tǒng)、驅(qū)動程序及播放器應(yīng)用程序3部分。

4.1操作系統(tǒng)的實現(xiàn)

在嵌入式系統(tǒng)中,通常并沒有像BIOS那樣的固件程序,因此整個系統(tǒng)的加載啟動任務(wù)就完全由BootLoader來完成。BootLoader的任務(wù)是初始化芯片和主板,系統(tǒng)選用的是U-Boot-1.1.2啟動程序,因為U-Boot的優(yōu)點(diǎn)在于對多系統(tǒng)和多平臺的支持。由于S3C44B0X沒有存儲管理單元(MMU),所以無法移植標(biāo)準(zhǔn)的Linux內(nèi)核,而μClinux主要是針對沒有MMU的處理器設(shè)計的操作系統(tǒng)[4],因此可以作為播放器的操作系統(tǒng)平臺進(jìn)行移植。通過修改相應(yīng)的配置文件和驅(qū)動程序就可以實現(xiàn)移植過程中需要創(chuàng)建的開發(fā)板文件。

4.2驅(qū)動程序的設(shè)計

本系統(tǒng)所編譯的μClinux內(nèi)核中包含有USB、LCD等驅(qū)動程序,只要根據(jù)需要適當(dāng)?shù)男薷谋憧梢詰?yīng)用。但是對于MP3解碼部分芯片的驅(qū)動需要自己編寫。音頻驅(qū)動程序?qū)崿F(xiàn)的主要功能是:(1)系統(tǒng)啟動時可以完成芯片的初始化;(2)具體操作時可以提供給操作系統(tǒng)合適的軟件接口。音頻驅(qū)動初始化程序如下:

void STA013_Init(void)

{

if(STA013_SendCommand(RESET_REG,0,0x00)) //復(fù)位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數(shù)據(jù)格式

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();


上一頁 1 2 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉