?
S3C44B0X是三星公司針對嵌入式系統(tǒng)推出高性價比微處理器,它是基于ARM7TDMI內(nèi)核的16/32位RISC處理器,工作主頻為66MHz.為了降低成本和節(jié)約產(chǎn)品開發(fā)周期,S3C44BO0X提供了豐富的內(nèi)置部件,包括:內(nèi)部SRAM,LCD控制器,8通道10位ADC,IIC總線接口,IIS總線接口等.其中S3C44B0X IIS接口能用來連接一個外部8/16位立體聲聲音解碼器.CS4334是CIRRUS公司推出的系列音頻解碼芯片.文獻[1,2,3]中對它們的工作原理和應(yīng)用有詳細的論述.
本文詳細研究了S3C44B0X IIS總線接口和CS4334的連接,搭建了以二者為基礎(chǔ)的嵌入式工作平臺.在該平臺上現(xiàn)WAVE音頻文件的播放,并給出了測試程序.
1IIS總線結(jié)構(gòu)
S3C44B0X IIS(Inter-IC Sound)接口對FIFO存取提供DMA傳輸模式代替中斷模式,它可以同時發(fā)送數(shù)據(jù)和接收數(shù)據(jù)也可以只發(fā)或只收.
如圖1所示,總線接口FIFO控制包括總線接口、內(nèi)部寄存器和狀態(tài)機,控制總線接口邏輯和FIFO訪問;3位的雙分頻器包括一個作為IIS總線主設(shè)備時鐘發(fā)生器,另外一個作為外部編碼器的時鐘發(fā)生器;主設(shè)備串行比特時鐘發(fā)生器(主設(shè)備模式),將從主設(shè)備時鐘中分頻得到串行比特數(shù)時鐘;聲道發(fā)生器和狀態(tài)器生成和控制IISCLK和IISLRCK,并且控制數(shù)據(jù)的接收和發(fā)送;16位移位寄存器在發(fā)送數(shù)據(jù)時將數(shù)據(jù)由并變串,接收數(shù)據(jù)時做相反的動作.
IIS總線可以使用正常傳輸模式,DMA傳輸模式和發(fā)送接收同時模式三種傳輸方式.
2 音頻數(shù)模轉(zhuǎn)換芯片CS4334
CS4334是CIRRUS半導(dǎo)體公司生產(chǎn)的音頻數(shù)模轉(zhuǎn)換芯片,具有接口簡單、性能穩(wěn)定以及便于操作等特點,在嵌入式系統(tǒng)中有著廣泛的應(yīng)用. 另外,由于WAVE數(shù)字音頻經(jīng)CS4334轉(zhuǎn)換成模擬音頻后信號較微弱,需要增加一個音頻功率放大器.本文選用的是PHILIPS公司的TDA7050低電平單聲道/立體聲功率放大器.
?
圖1 IIS總線結(jié)構(gòu)框圖
?
圖2S3C44B0X與CS4334以及TDA7050的連接示意圖
3S3C44B0X和CS4334以及TDA7050的連接
S3C44B0X IIS總線接口和CS4334模塊都具有很強的通用性,連接很容易實現(xiàn).連接方法為:將S3C44B0X的端口PF6(IISDO)、 PF8(IISCLK)、PF5(IISLRCK)、PE8(END/AN)分別與CS4334的管腳1、2、3、4連接.CS4334與TDA7050 連接時,只需將CS4334的輸出連接到TDA7050的相應(yīng)輸入管腳即可.具體連接方法如圖2所示.
4 程序設(shè)計
程序設(shè)計假設(shè)S3C44B0X已經(jīng)成功啟動,此處著重介紹播放WAVE文件主函數(shù):
Playwave().IIS_Init( )是初始化IIS接口函數(shù),BDMA0_Done( )是BDMA0中斷處理函數(shù).分別介紹如下.
4.1 IIS接口初始化
代碼如下:
Void IIS_Init(Void){
RPCONF = 0x24900a; //設(shè)置I/O端口PF,使端口PF5~8工作在IIS狀態(tài)
Init_4334(); //初始化CS4334芯片}
4.2 播放WAVE音頻文件函數(shù)
Playwave()函數(shù)運行前會提示先將Wave音頻文件下載到指定RAM區(qū)域,函數(shù)計算出文件大小并提示播放與否,最后返回.
Void Playwave (U32 Addr, U32 Size){
Unsigned Char *PWave;
U32 Samplesize; //WAVE文件長度
U32 Save_PLLCON;
Save_PLLCON = RPLLCON;
RPLLCON= X69<<12)|(0x17<<4)|0;
SerialChgBaud(115200);
PISR_BDMA0=(Unsigned)BDMA0_Done;
RINTMSK=~(BIT_GLOBAL|BIT_BDMA0);//中斷設(shè)置
PWave=(Unsigned Char *)Addr;//Wave文件數(shù)據(jù)地址
PWave+=0x28; //指向Wav采樣長度
Samplesize=*(PWave+0) | *(PWave+1)<<8 | *(PWave+2)<<16 | *(PWave+3)<<24;
PWave+=4; //指向Wav數(shù)據(jù)
Samplesize=(Samplesize>>1)<≪1;
Printf(
Sample Start:0x%X,PWave);
Printf(
Samplesize:0x%X,Samplesize);
Init_4334();
/****** IIS 初始化 ******/
RIISCON=0x22; //使能 DMA,接收空閑,使能分頻
RIISMOD=0x89; //主模式,IIS格式,16位數(shù)據(jù),256fs,32 Fs
RIISPSR=0x33; //分頻因子
RIISFCON=0xa00;//接收、發(fā)送DMA模式,使能FIFO
/****** BDMA0 初始化******/
RBDISRC0=(1<<30)+(1<<28)+(U32)PWave; //DMA源;16位數(shù)據(jù),增長方式
RBDIDES0=(1<<30)+(3<<28)+((U32)RIISFIF); //DMA目的:M2IO,內(nèi)部模塊
RBDICNT0=(1<<30)+(1<<26)+(3<<22)+(1<<21)+(0<<20)+Samplesize;
RBDICNT0 |= (1<<20);//設(shè)置DMA請求源為IIS,中斷方式,手動重載,使能DMA
RBDCON0 = 0x0<<2;
Printf(
Now Play The Wave File ...);
Printf(
Push Any Key To Exit!!!);
RIISCON |=0x1;
While(!Getkey()); //按下任意鍵返回}
5 小結(jié)
采用S3C44B0X內(nèi)置IIS總線和音頻數(shù)模轉(zhuǎn)換芯片CS4334,本文搭建了以二者為核心的工作平臺,并詳細討論了基于此平臺實現(xiàn)播放WAVE音頻文件的方法.由于S3C44B0X及CS4334模塊具有較強的通用性,因此本文給出的實現(xiàn)方法及程序具有使用簡單、運行穩(wěn)定、便于移植等特點.
本文作者創(chuàng)新點在于詳細設(shè)計了基于嵌入式微處理器S3C44B0X和CS4334的WAVE音頻文件播放平臺,融合了ARM處理器功耗小、便攜、代碼執(zhí)行效率高和WAVE音頻文件音質(zhì)好的優(yōu)點,并給出了詳細的連接方法,所設(shè)計程序已經(jīng)在硬件平臺上成功運行.
評論
查看更多