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

出处:维库电子市场网 发布于:2023-07-27 14:55:18

  摘要:介绍了CIRRUS LOGIC公司生产的音频解码芯片CS43L42与嵌入式处理器EP7212的接口实现方法,分析了基于嵌入式处理器EP7212/7312和CS43L42芯片的MP3文件播放系统,给出了由其组成的完整硬件连接图和有效的软件实现方法。
  关键词:嵌入式处理器;数字音频接口DAI;CS43L42;MP3;EP7212
  1 引言
  目前存储声音信息的音频数据格式主要有PCM文件、VOC文件、MIDI文件、MP3文件等。对导航系统来说,要实现音频文件的播放,存储器容量是一个需要考虑的问题。由于导航系统的存储空间有限,所以要求存储的文件压缩率高。与其它文件格式相比,MP3音频文件具有较高的压缩率和不逊色于CD的音质,所以在导航系统中音频文件的存储选用MP3格式。
  MP3的全称为MPEG1 Layer-3音频文件,MPEGMoving Picture Experts Group 在汉语中译为活动图像组,特指活动影音压缩标准。MPEG音频文件是MPEG1标准中的声音部分,也叫MPEG音频层,它根据压缩质量和编码复杂程度划分为三层,即Layer1、Layer2、Layer3,分别对应MP1、MP2、MP3这三种声音文件,并根据不同的用途,使用不同层次的编码。MPEG音频编码的层次越高,编码器越复杂,压缩率也越高,MP1和MP2的压缩率分别为4:1和6:1~8:1,而MP3的压缩率则高达10:1~12:1,也就是说,一分钟CD音质的音乐,未经压缩需要10MB的存储空间,而经过MP3压缩编码后只有1MB左右。不过MP3对音频信号采用的是有损压缩方式,为了降低声音失真度,MP3采取了“感官编码技术”,即编码时先对音频文件进行频谱分析,然后再用过滤器滤掉噪音电平,接着通过量化的方式将剩下的每一位重新排列,形成具有较高压缩率的MP3文件,从而使压缩后的文件在回放时能够达到比较接近原音源的声音效果。
  虽然MP3是一种有损压缩方式,但它以极小的声音失真换来较高的压缩比,因此在较多的场合得以应用。尤其是随着数字技术的发展,MP3压缩方式在便携式电子产品中得到了越来越广泛的应用,深受追求时尚、新潮的青年朋友的喜爱。
  2 CS43L42播放芯片
  CS43L42是CIRRUS LOGIC公司生产的音频解码芯片,它可工作在1.8~3.3V,关掉线性放大器时功耗仅16mW非常适合于MP3、MD播放器等低功耗场合的应用。该芯片是一款完全意义上的数模转换器,它包括1bit D/A转换、模拟滤波、音量控制、线性电压输出以及耳机放大器。通过改变主频率,其允许的输入采样频率可从2k~100kHz变化。该器件具有数字重音、峰值限制和去加重等特性。此外,由于采用了POPGUARD技术,CS43L42还可有效防止加电、断电时产生的瞬间冲击。
  CS43L42具有DAI接口,能够与嵌入式处理器EP7212/7312较好的配合。它具有三种模式:双线模式、SPI模式、STAND ALONE模式。通过引脚CP/SA和AD0/CS/DEM0置相应状态可以设置这三种模式。当CP/SA引脚为低电平时,芯片为STAND ALONE模式,当CP/SA为高电平时,只要检测到引脚AD0/CS/DEM0电平从低到高变化,则进入SPI模式,否则为双线模式。在STAND ALONE模式下,可用SCL/CCLK/DIF1和SDA/CDIN/DIF0引脚来设置数据、左/右时钟以及主时钟之间的关系。在双线模式和SPI模式下,则可以通过对寄存器进行操作来实现静音、声道衰减和音量控制等功能。各引脚的功能如下:
  1脚(RST):复位信号,低有效。
  2脚(LRCK):左/右帧同步。
  3脚(SDATA):串行音频数据,数据随串行时钟引入。
  4脚(AD0/CS/DEM0):在SPI模式下,用于使能控制端口。
  5脚(SCLK/DEM1):位时钟,等于MCLK的1/2,每帧有128位。
  6脚(VL):数字电源电压,典型值为1.8V~3.3V。
  7脚(MCLK):2x过采样时钟,仅在从模式下输入。
  8脚(SCL/CCLK/DIF1):串行控制接口时钟。
  9脚(SDA/CDIN/DIF0):串行控制数据输入输出。
  10脚(N.C.):无连接,悬空。
  11脚(CP/SA):控制模式和等待模式控制。
  12脚(VQ_HP):耳机静态电压接口。
  13脚(REF_GND):连接到模拟地。
  14脚(FILT+):正向基准电压,用于内部采样电路。
  15脚(VQ_LINE):线输出静态电压接口。
  1621脚(HP_A,HP_B):耳机输出。
  17脚(GND):连接到模拟地。
  18脚(VA):模拟电源电压,典型值为1.8V~3.3V。
  19脚(VA_LINE):线性扩音器电源端,典型值在1.8V~3.3V。
  20脚(VA_HP):耳机放大电源端,典型值为0.9V~3.3V。
  22,23脚(AOUTB AOUTA):模拟输出端。
  24脚(MUTEC):静音控制。
  3 CS43L42的硬件连接电路
  如系统中芯片工作在STAND_ALONE模式,则将DIF1、DIF0分别设置为低、高电平表示接收左起有效的24位数据。CS43L42的典型外围连接电路。电容C由下式给出:
  C=(RL+560)/[4π Fs(RL·560)]
  4 MP3播放软件设计
  MP3文件播放的软件设计任务如下:
  (1)初始化EP7212 的DAI接口。
  (2)将MP3文件解码成PCM文件并存放于开辟的两个缓冲区(左、右两个声道)。
  (3)在FIQ(快速中断请求)中将PCM格式的数据写到DAI接口,同时播放声音(未有数据时播放静音)。
  4.1 EP7212的DAI接口介绍和初始化
  a. DAI接口
  EP7212/7312的数字音频接口(DAI)主要用于支持高质量立体声的音频处理。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接口时序
  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中断中的实现
  该系统中MP3文件的解码流程。该文件可在FIQ中断中实现播放。由于DAI FIFO对应于FIQ中断,因此,它可以通过控制寄存器来设置FIFO的中断方式,并可在程序中将产生中断的位置设置在左发送FIFO中少于四个采样数据时。由于在FIQ中断中保存有MP3解码缓冲区的地址,因此,若在进入FIQ后各写四个采样数据到左右FIFO中,那么,对于44.1kHz文件来说,FIQ发生的速率将为11kHz。为了保证左右FIFO的正确填充,一般需要交替写两个FIFO。此时如果MP3缓冲区无数据,则可写0(静音)到两个FIFO中,这样,程序就可以跳出FIFO中断接着处理数据。需要说明的是:无论程序是否需要录音,都要从接收缓冲区读四个数据,这样可确保DAI FIFO处于同步状态而不会产生失真。另外,在FIQ处理程序的,还要清除溢出状态位,这样可以防止FIQ始终中断。

版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

广告
上传BOM文件: BOM文件
*公司名:
*联系人:
*手机号码:
QQ:
应用领域:

有效期:
OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
一键连接广大的电子世界。

在线人工客服

买家服务:
卖家服务:

0571-85317607

客服在线时间周一至周五
9:00-17:30

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!