第14章ARM9数字音频信号I2S介绍.ppt

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第14章ARM9数字音频信号I2S介绍

第十四章 数字音频信号(I2S)介绍和S3C2410的I2S控制 ;I2S总线是近年出现的一种面向多媒体计算机(Multimedia PC)的音频总线,该总线专门用于音频设备之间的数据传输,为数字立体声提供一个连接至标准编码解码器的总线。 S3C2410内置一个I2S总线控制器,该控制器实现了到一个外部8/16位立体声音频CODEC IC的接口。支持I2S总线数据格式和MSB-justified数据格式。此控制器包含FIFO,支持DMA传输模式。 I2S总线控制器结构如图14-2所示:;其中: ? 两个5 bit预除器(IPSR)。一个(IPSR_A)用于产生I2S总线接口的主时钟,另外一 个(IPSR_B) 用作外部CODEC时钟产生器。 ? 十六字节FIFO。在发送数据时数据被写进TXFIFO,在接收数据时数据从RXFIFO中读取。 ? 主IISCLK产生器(SCLKG):在主模式,由主时钟产生串行移位时钟。 ? 通道产生器和状态寄存器(CHNC):IISCLK和IISLRCK由通道状态寄存器产生并控制。 ? 16 bit移位寄存器(SFTR):在发送数据时,并行数据经由SFTR变成串行数据输出,在接收数据时,串行数据由SFTR转变成并行数据。 UDA1341是飞利浦公司的一款经济型音频CODEC,用于实现模拟音频信号的采集(音频AD)和数字音频信号的模拟输出(DA),并通过I2S数字音频接口,实现音频信号的数字化处理。;14.2 I2S 控制寄存器 S3C2410 I2S相关的寄存器包括I2S控制寄存器IISCON,I2S模式寄存器IISMOD和I2S分频寄存器IISPSR。 I2S控制寄存器及其各位的定义如表14-1和表14-2所列。;表14-2 I2S控制寄存器IISCON各位的定义;表14-4 I2S模式寄存器IISMOD各位的定义 ;I2S分频寄存器及其各位的定义如表14-5和表14-6所列。;14.3 WAV声音格式文件 WAV声音格式文件是Windows环境下的一种常用音频文件格式,它依循着一种称为“资源互换文件格式”(Resources Interchange File Formal)的结构,简称RIFF。 RIFF可以看做是一种树状结构,其基本构成单位为“块”(chunk),犹如树状结构中的节点,每个chunk由“辨别码”、“数据大小”及“数据”所组成。 WAV为WAVEFORM(波形)的缩写。“RIFE”的格式辨别码为“WAVE”。整个文件由两个chunk所组成:辨别码及“Data”。 在“fmt”chunk下包含了一个PCMWAVEFORMAT数据结构,在其之后是原始声音的采样数据,这些数据是可以直接送到IIS总线的数字音频信号。 一个典型的WAV格式文件结构如图14-3所示。;它包含8字节RIFF头、4字节数据类型“WAVE”、0x18字节的“fmt”chunk和4字节数据“data”chunk。因此,WAV文件中从下式中的sizeoff开始的四个字节表示声音数据的大小,dataoff开始的位置为具体的声音数据。 sizeoff = 0x8+0x4+0x18+0x4 dataoff = 0x8+0x4+0x18+0x8;14.4 I2S控制程序编写 1,系统初始化 I2S时钟从系统时钟分频得到,由于音频比系统时钟频率低很多,必须对系统时钟进行适当的降频处理,下面的代码降系统PCLK到33MHx,然后对串口进行初始化。 ChangeClockDivider(1,1): //1:2:4 ChangeMPllValue(Ox96,0x5,0x1); //FCLK=135.428571MHz (PCLK=33.857142MHz) Uart_Init115200); I2S用到的端口有G和E,所以使用这些端口前要把这些端口状态保存起来,使用完毕再恢复这些端口原状态。 save_ G=rGPGCON; save_ E=rGPECON; save_ PG=rGPGUP; save_ PE=rGPEUP;;I2S可以采用DMA中断方式进行语音录音和播放,因此需要设置DMA中断向量。 pISR_DMA2=(unsigned)DMA2_Done; 然后获取语音数据及其大小以及采样频率。其中__IIS_WAV__是一个数组,它定义在 iis_wave.h文件中,它是从一个完整的wav文件转换来的,因此,从中可以获得采样数据大小以及采样频率等信息,其中采样频率位于fmt chunk的第0x0c个字节开始的四个字节中。 Buf=(unsigned char *)__IIS_WAV__; size=*((Buf)+0x2

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档