电子文章 | 电子资料下载 | 家电维修 | 维修资料下载 | 加入收藏 | 全站地图
您现在所在位置:电子爱好者维修技术维修教程知识电子制作用CS43L42音频解码器和EP7212嵌入式处理器设计的MP3文件播放系统

用CS43L42音频解码器和EP7212嵌入式处理器设计的MP3文件播放系统

09-08 11:52:53 | http://www.5idzw.com | 电子制作 | 人气:674
标签:电子小制作,http://www.5idzw.com 用CS43L42音频解码器和EP7212嵌入式处理器设计的MP3文件播放系统,http://www.5idzw.com
a. DAI接口

EP7212/7312的数字音频接口(DAI)主要用于支持高质量立体声的音频处理。图4是CS43L42与嵌入式微处理器EP7212的DAI接口电路。该接口主要由以下五个信号组成:

(1)LRCK,左/右帧同步。

(2)SCLK,位时钟,等于MCLK的1/2,每帧有128位。

(3)MCLK,2x过采样时钟,仅在从模式下输入。

(4)SDOUT,数字音频数据输出。

(5)SDIN,数字音频数据输入。

用MSB/Left数据调整格式意味着数据在帧同步信号(LRCK)电位改变后立即被计时。MSB在第一位时是左调整,这与I2S格式相比有些不同,I2S格式的数据在改变电位后要延迟一个时钟。数据帧每帧是128位长,这样每个声道64位长。帧的大小和LRCK的运行周期在EP7212/7312中不能被设置。SCLK可从MCLK中得到,频率等于1/2 MCLK。缺省模式中,DAI处于主模式。该模式下自己产生的MCLK时钟等于9.216MHz。这样,SCLK等于4.608MHz。对于需要SCLK有不同速率的应用,DAI可以被设置成从模式。在从模式下,外部源通过MCLK引脚给MCLK提供主时钟,然后分成两半生成SCLK。不管DAI模式如何设置,SCLK和LRCK通常都设置成输出。数据一般在SCLK的上升沿锁入,在下降沿释放。

DAI接口是一种高质量的数字音频接口,可以连接与DAI接口兼容的音频设备。EP7212 的DAI接口通过位时钟和帧同步时钟产生128bit帧数据。数字音频数据的接收和发送均采用全双工方式,对应于12采样深度的接收FIFO和8采样深度的发送FIFO。在DAI 接口信号中,MCLK是主时钟,它是音频采样频率的256倍,SCLK为音频采样频率的128倍,LRCK固定为采样频率。由于本系统中的MCLK连接外部时钟发生器,频率为11.2896MHz?所以采样频率为44.1KHz。其DAI接口时序图如图5所示。

图5

    DAI的帧长128bit?其中包括一个音频采样数据,在这128bit中,仅有32bit为实际的音频数据,其余输出均为零。左/右时钟作为帧同步信号,左/右时钟从高到低表示右声道的16bit数据,从低到高表示左声道的16bit数据。

b. DAI接口初始化

DAI初始化程序中首先应设置控制寄存器, 接着选择外部时钟有效以及在左发送FIFO数据少于一半时产生中断。然后清除状态寄存器上溢、下溢位,之后使DAI接口、发送FIFO和接收FIFO有效。最后打开DAI中断。

4.2 MP3文件的解码

ARM公司提供有基于ARM处理器音频文件解码库,它能够有效地解码MP3格式的歌曲,而输出16bit立体声PCM数据。

a. 解码库所定义的结构

·tSampleRate定义了解码数据PCM的采样率

typedef enum tagSampleRate

{

SR 11 025kHz?

SR 12kHz?

SR 44 1kHz?

SR 48kHz?

SR 32kHz?

SR Reserved

} tSampleRate ?

·tMPEGStatus 给出了MP3函数返回状态值。

typedef enum tagMPEGStatus

{

eNoErr?

eNoSyncword?

eCRCError?

eBrokenFrame?

eEndOfBitstream?

eDataOverflow?

} tMPEGStatus ?

·tMPEGBitstream?给出MPEG比特流的指针,bufptr定义为比特流的字指针,bitidx定义为字中的索引(0-31)。

typedef struct tagMPEGBitstream

{

unsigned int * bufptr?

unsigned int bitidx?

} tMPEGBitstream?

·tMPEGHeader?包括MPEG音频报头信息,sam-ple_rate为PCM采样频率,samplesperchannel为每个声道的采样数,numchans为声道数,packed info为报头信息,bits required为下一次调用函数需要bit数,free format是指比特流的格式。

typedef struct tagMPEGHeader

{

tSampleRate sample rate?

unsigned int samplesperchannel?

unsigned int numchans?

unsigned int packed info?

unsigned int bits required?

unsigned int free format?

} tMPEGHeader?

    b. MP3解码库所提供的函数

·InitMP3Audio?tMPEGInstance *inst?

功能:初始化解码器解码指针。

·MP3SearchForSyncword?tMPEGInstance *inst?tM-PEGBitstream *bs?length?

功能:查找MPEG数据中的同步字。

·MP3DecodeInfo?tMPEGInstance * inst?tMPEGBit-stream * bs?tMPEGHeader * pmpeg hdr?

功能:从MPEG帧中获得报头的信息。

·MP3DecodeData?tMPEGInstance *inst? short *left?short * right? tMPEGBitstream * bs?

功能:从MP3数据解码成PCM数据,并将其存到left、right指向的缓冲区中。

c. MP3程序解码流程及在FIQ中断中的实现

上一页  [1] [2] [3]  下一页

,用CS43L42音频解码器和EP7212嵌入式处理器设计的MP3文件播放系统