当前位置:首页 > 芯闻号 > 基础知识科普站
[导读]S3C44B0X是三星公司针对嵌入式系统推出高性价比微处理器,它是基于ARM7TDMI内核的16/32位RISC处理器,工作主频为66MHz.为了降低成本和节约产品开发周期,S3C44BO0X提供了丰富的内置部件.

S3C44B0X是三星公司针对嵌入式系统推出高性价比微处理器,它是基于ARM7TDMI内核的16/32位RISC处理器,工作主频为66MHz.为了降低成本和节约产品开发周期,S3C44BO0X提供了丰富的内置部件,包括:内部SRAM,LCD控制器,8通道10位ADC,IIC总线接口,IIS总线接口等.其中S3C44B0X IIS接口能用来连接一个外部8/16位立体声声音解码器.CS4334是CIRRUS公司推出的系列音频解码芯片.文献[1,2,3]中对它们的工作原理和应用有详细的论述.

本文详细研究了S3C44B0X IIS总线接口和CS4334的连接,搭建了以二者为基础的嵌入式工作平台.在该平台上现WAVE音频文件的播放,并给出了测试程序.

1IIS总线结构

S3C44B0X IIS(Inter-IC Sound)接口对FIFO存取提供DMA传输模式代替中断模式,它可以同时发送数据和接收数据也可以只发或只收.

如图1所示,总线接口FIFO控制包括总线接口、内部寄存器和状态机,控制总线接口逻辑和FIFO访问;3位的双分频器包括一个作为IIS总线主设备时钟发生器,另外一个作为外部编码器的时钟发生器;主设备串行比特时钟发生器(主设备模式),将从主设备时钟中分频得到串行比特数时钟;声道发生器和状态器生成和控制IISCLK和IISLRCK,并且控制数据的接收和发送;16位移位寄存器在发送数据时将数据由并变串,接收数据时做相反的动作.

IIS总线可以使用正常传输模式,DMA传输模式和发送接收同时模式三种传输方式.

2 音频数模转换芯片CS4334

CS4334是CIRRUS半导体公司生产的音频数模转换芯片,具有接口简单、性能稳定以及便于操作等特点,在嵌入式系统中有着广泛的应用. 另外,由于WAVE数字音频经CS4334转换成模拟音频后信号较微弱,需要增加一个音频功率放大器.本文选用的是PHILIPS公司的TDA7050低电平单声道/立体声功率放大器.

3S3C44B0X和CS4334以及TDA7050的连接

S3C44B0X IIS总线接口和CS4334模块都具有很强的通用性,连接很容易实现.连接方法为:将S3C44B0X的端口PF6(IISDO)、 PF8(IISCLK)、PF5(IISLRCK)、PE8(END/AN)分别与CS4334的管脚1、2、3、4连接.CS4334与TDA7050 连接时,只需将CS4334的输出连接到TDA7050的相应输入管脚即可.具体连接方法如图2所示.

基于嵌入式微处理器S3C44B0X音频文件播放的实现

基于嵌入式微处理器S3C44B0X音频文件播放的实现

4 程序设计

程序设计假设S3C44B0X已经成功启动,此处着重介绍播放WAVE文件主函数:

Playwave().IIS_Init( )是初始化IIS接口函数,BDMA0_Done( )是BDMA0中断处理函数.分别介绍如下.

4.1 IIS接口初始化

代码如下:

void IIS_Init(void){

rPCONF = 0x24900a; //设置I/O端口PF,使端口PF5~8工作在IIS状态

Init_4334(); //初始化CS4334芯片}

4.2 播放WAVE音频文件函数

Playwave()函数运行前会提示先将wave音频文件下载到指定RAM区域,函数计算出文件大小并提示播放与否,最后返回.

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);//中断设置

pWave=(unsigned char *)addr;//wave文件数据地址

pWave+=0x28; //指向wav采样长度

samplesize=*(pWave+0) | *(pWave+1)<<8 | *(pWave+2)<<16 | *(pWave+3)<<24;

pWave+=4; //指向wav数据

samplesize=(samplesize>>1)<<1;

printf(nsample start:0x%x,pWave);

printf(nsamplesize:0x%x,samplesize);

Init_4334();

/****** IIS 初始化 ******/

rIISCON=0x22; //使能 DMA,接收空闲,使能分频

rIISMOD=0x89; //主模式,IIS格式,16位数据,256fs,32 fs

rIISPSR=0x33; //分频因子

rIISFCON=0xa00;//接收、发送DMA模式,使能FIFO

/****** BDMA0 初始化******/

rBDISRC0=(1<<30)+(1<<28)+(U32)pWave; //DMA源;16位数据,增长方式

rBDIDES0=(1<<30)+(3<<28)+((U32)rIISFIF); //DMA目的:M2IO,内部模块

rBDICNT0=(1<<30)+(1<<26)+(3<<22)+(1<<21)+(0<<20)+samplesize;

rBDICNT0 |= (1<<20);//设置DMA请求源为IIS,中断方式,手动重载,使能DMA

rBDCON0 = 0x0<<2;

printf(nNow play the wave file ...);

printf(nPush any key to exit!!!);

rIISCON |=0x1;

while(!getkey()); //按下任意键返回}

5 小结

采用S3C44B0X内置IIS总线和音频数模转换芯片CS4334,本文搭建了以二者为核心的工作平台,并详细讨论了基于此平台实现播放WAVE音频文件的方法.由于S3C44B0X及CS4334模块具有较强的通用性,因此本文给出的实现方法及程序具有使用简单、运行稳定、便于移植等特点.

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭