欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    嵌入式 音频接口.docx

    • 资源ID:5179237       资源大小:749.49KB        全文页数:21页
    • 资源格式: DOCX        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    嵌入式 音频接口.docx

    音频接口I2S一、实验目的1 .掌握I2S的工作原理。2. 学习.wav格式音频文件播放原理。3 .掌握在ARM开发板上输出PCM数据流的方法。二、实验内容阅读ARM芯片文档,学习I2S工作原理,以及音频文件播放原理。在目标板上 实现音频测试功能,编程实现一段PCM数据流的播放。三、预备知识1. 用ARM ADS1.2集成开发环境,编写和调试程序的基本过程。2. ARM应用程序的框架结构。3. 深入了解IIS BUS工作原理(请阅读芯片手册)。四、实验设备及工具硬件:ARM嵌入式开发板、用于ARM7TDMI的JTAG仿真器、PC机Pentumn100以上 软件:PC机操作系统win98、Win2000或WinXP、ARM ADS1.2集成开发环境、仿真器驱动程序、实验原理及说明五、实验原理1、声音文件的格式Wave文件使用三个参数来表示声音,它们是:采样位数、采样频率和声道数。 在计算机中采样位数一般有8位和16位两种,而采样频率一般有11025HZ (11KHz), 22050HZ (22KHz)、44100Hz (44KHz)三种。我们以单声道为例,则一般WAVE文件 的比特率可达到88K704Kbps。具体介绍如下:(1) WAVE格式是Microsoft公司开发的一种声音文件格式,它符合RIFF (Resource Interchange File Format )文件规范。(2) 用于保存Windows平台的音频信息资源,被Windows平台及其应用程序 所广泛支持。(3) Wave 格式支持 MSADPCM、CCITT A Law、CCITTLaw 和其它压缩算法, 支持多种音频位数、采样频率和声道,是PC机上最为流行的声音文件格式。(4) 但其文件尺寸较大,多用于存储简短的声音片段。(5) 任何wave文件,从字符串"data”后开始是4字节的PCM数据长度,接着为 PCM裸数据。wave文件可以用advanced mp3/wma recorder软件生成。对于该软件 生成的441khz,16bit立体声文件,0x36偏移处开始为4字节的PCM数据长度,接着 为PCM裸数据。在本实验中,我们将已除去WAVE文件头的纯PCM数据存放在数组中,编译 后,IIS直接从内存读取PCM数据。2、音频系统原理音频系统设计包括软件设计和硬件设计两方面,在硬件上使用了基于IIS总线 的音频系统体系结构。IIS(Inter-IC Sound bus)又称I2S,是菲利浦公司提出的串 行数字音频总线协议。目前很多音频芯片和MCU都提供了对IIS的支持。本实验针对三星公司的S3C44B0X ARM处理器构造了基于IIS的音频系统扬声器图1音频系统体系结构图1是44BOX芯片与CS4334音频芯片的连接示意图。CS4334音频芯片不支持麦克风采样功能。IIS总线只处理声音数据。其他信号(如控制信号)必须单独传输。为了使芯片 的引出管脚尽可能少,IIS只使用了三根串行总线。这三根线分别是:提供分时复 用功能的数据线、字段选择线(声道选择)、时钟信号线。在三星公司的arm芯片中,为了实现全双工模式,使用了两条串行数据线,分 别作为输入和输出。其IIS接口提供两种数据传输模式: NORMAL模式。此模式基于FIFO寄存器。该模式下CPU将通过轮询方式访问 FIFO寄存器,通过IISCON寄存器的第七位控制FIFOo DMA模式。此模式是一种外部设备控制方式。它使用窃取总线控制权的方法 使外部设备与主存交换数据,从而提高系统的吞吐能力。传输/接收模式。该模式下,IIS数据线将通过双通道DMA同时接收和发送 音频数据。本实验使用NORMAL传输模式。NORMAL模式的选择由IISCON寄存器的第六和第 七位控制。设置IIS工作模式由寄存器IISMOD控制。IIS接口其它几个寄存器的设 置详情请参阅芯片手册。通过设置IIS寄存器控制音频设备的初始化,并且初始化设备的工作参数(包括 速度、声道、采样宽度);此外,在对音频操作时还要注意:IIS总线一次采样得到 的数据必须一次处理,否则不能正确播放数据。六、实验步骤(1) 学习上述IIS及音频播放工作原理,了解IIS接口各寄存器的功能和各位 的意义。(2) 流程图:.主函数流程图端口初始化V设CPU主频V串口初始化V调用PCM播放函数TPl ay_Pcni函数流程图初始化枭样地址和采样大小创建一个新工程,并在工程中创建三个文件夹 main, driver, s3c44b0x,并添IISC(JN=OX1;IIS可以开始采样I加以下文件:s3c44b0x : 44bConfig.c 44bInit.s(4) 定义与IIS有关的各个寄存器地址和一些特殊的位命令。主要有以下各寄存器:rllSCON rllSMOD rllSPSR rllSFCON/* IIS */(volatile unsigned *)0x1d18000)(volatile unsigned *)0x1d18004)(*(volatile unsigned *)0x1d18008)(*(volatile unsigned *)0x1d1800c)#define#define#define#define#ifdef _BIG_ENDIAN#define rIISFIF(volatile unsigned short *)0x1d18012)#else /Little Endian#define rIISFIF(volatile unsigned short *)0x1d18010)#endif将上述定义加入到工程中(44b0X.h)。(5) 建立一个包含音频播放函数的库文件(iis.c)将其加入到工程的driver文件 夹中,以及一个*上文件包含PCM音频数组及大小。音频播放函数具体代码见光盘。void Play_Pcm(unsigned char * addr, U32 size);(6) 在主函数中先做串口、CPU主频等的初始化,再调用音频播放函数即可。主 函数按照上面流程图即可写出。将包含主函数的文件加入到工程main文件夹中。(7) 配置编译器,编译工程。打开JTAG调试AXF文件,用ADS调试,直到逻辑无 错误,达到预期实验效果。A、设置头文件的访问路径B、在ARM Linker里设置代码工作地址、数据工作地址。C、在ARM Linker里设置输入段在生成的映像文件中的位置,为了保证程序启动后能从44binit.s的init标号处开始运行。我们向下图一样设置。DebugRpl SeftingE?actory Setting! Revert IImp or t F:=ltlh1. . . Exp or t FarwL .OK I Cancel IApply七、实验结果将上述程序调试编译通过之后,在开发板上调入.axf文件运行,音箱自动播 放PCM数据音乐。注意播放音频数据格式:pcm数据格式,441KHz,单声道,16位采样.八、思考题1.如何播放WAVE格式的音频文件?2 .尝试播放采样率不同的PCM数据,比较其中差别。实验四、I2C串行通讯实验一、实验目的1 .掌握I2C原理及特点。2 .学习掌握I2C串行通讯传输数据原理及其编程方法。二、实验内容阅读芯片手册,学习掌握I2C串行通讯传输数据原理及其编程方法。三、预备知识1. 用ARM ADS1.2集成开发环境,编写和调试程序的基本过程。2. ARM应用程序的框架结构。3. I2C工作原理四、实验设备及工具硬件:ARM嵌入式开发板、用于ARM7TDMI的JTAG仿真器、PC机Pentumn100以上、串口线软件:PC机操作系统win98、Win2000或WinXP、ARM ADS1.2集成开发环境、仿真 器驱动程序、I2C实验原理及说明五、实验原理1. I2C原理1) 什么是I2C总线:I2C总线由两根线组成,一根串行时钟总线SCL和一根串行数据总线SDA, I2C 总线系统有主控CPU控制,所有的受控元器件(集成电路)都挂接在这条线上,因 此称为总线,电路简洁,可以省去以往CPU的很多I/O引出脚。这种总线可以设计 成很多种通讯配置。SCL线和SDA线都通过上拉电阻接正电源VDD。2) I2C总线的特点:主控CPU与各被控集成电路间实行双向数据通信,即主控CPU可以向被控集成 电路发送数据,被控集成电路也可向主控CPU回传数据,但被控IC是接收还是发送 数据,则由主控CPU控制。这一特点,使得I2C总线不仅可以用于CPU对挂接元器 件各个部分的操作,而且CPU还能够通过I2C总线获取元器件电路中的各种参数, 可以应用在许多电器上真正实现智能化的双向控制。I2C总线的串行数据传送与一般UART的串行数据传送无论从接口电气特性、传 送状态管理以及程序编制特点都有很大不同,了解这些特点十分重要。(1) 二线传输。"C总线上所有的节点,如主器件(单片机、微处理器)、外围器 件、接口模块等都连到同名端的SDA、SCL上。(2) 系统中有多个主器件时,这些器件都可作总线的主控制器(无中心主机), I2C总线工作时任何一个主器件都可成为主控制器,多机竞争时的时钟同步与总线仲 裁都由硬件与标准软件模块自动完成,无须用户介入。(3) I2C总线传输时,采用状态码的管理方法。对应于总线数据传输时的任何一 种状态,在状态寄存器中会出现相应的状态码,并且会自动进入相应的状态处理程 序中进行自动处理,无须用户介入,用户只须将Philips公司提供的标准状态处理 程序装入程序存储器一定的空间即可。(4) 系统中所有外围器件及模块采用器件地址及引脚地址的编址方法。系统中 主控制器对任何节点的寻址采用纯软件寻址方法,避免了片选线的线连接方法。系 统中若有地址编码冲突可通过改变地址引脚的电平设置来解决。(5) 所有带I2C接口的外围器件都具有应答功能。片内有多个单元地址时,数 据读、写时都有地址自动加1功能。这样,在I2C总线对某一器件读写多个字节时 很容易实现自动操作,即准备好读、写入口条件后,只须启动I2C总线就可自动完 成n个字节的读、写操作。(6) I2C总线电气接口为开漏晶体管组成,开路输出没有连到电源的钳位二极 管,而连到I2C总线的每个器件上,其自身的电源可以独立(但须共地),总线上各 个节点可在系统带电情况下接入或撤出。3) I2C总线的数据结构形式:使用串行数据传输方式,数据的第一部分为传送起始信号;第二部分为受控电 路的地址;第三部分是读/写位,它指出被控的工作方式是接收还是发送;第四 部分为传送的数据。I2C数据传送格式的特点:1 .无论何种方式起始、停止,寻址字节都由主控器发送,数据字节的传送方向 则遵循寻址字节中方向位的规定。2. 寻址字节只表明器件地址及传送方向,器件内部的n个数据地址由器件设计 者在该器件的PC总线数据操作格式中指定第一个数据字节作为器件内的单元地址 (SUBADR)数据,并且设置地址自动加减功能,以减少单元地址寻址操作。3 .每个字节传送都必须有应答信号相随。4. I2C总线被控器在接收到起始信号后都必须复位它们的总线逻辑,以便对将 要开始的被控器地址的传送进行预处理。4) 数据传送过程:在I2C总线上挂接的所有被控IC都有一个自己的地址,CPU在发送数据时,I2C 总线上的所有被控IC都会将CPU发出的位于起始信号后面的地址与自己的地址相比 较,如果两者相同,则该被控IC认为自己被CPU选中,然后按照读/写位规定的工 作方式接收或发送数据。IIC总线数据传送的起始与停止:I2C总线数据传送时有两种时序状态被分别定义为 起始信号和终止信号,如图8.1所示。SDA -一 / j SCL . s| /: P;起羸1言号航信号图8.1 I2C总线的起始信号和终止信号起始信号:在时钟线保持高电平期间,数据线出现由高电平向低电平变化时启动DC总线,为DC总线的起始信号。终止信号:在时钟线保持高电平期间,数据线上出现由低到高的电干变化时将 停止"C总线的数据传送,为I2C总线的终止信号。起始信号与终止信号都是由主控制器产生。总线上带有DC总线接口的器件很容易检测到这些信号。I2C总线上传送的每一个字节均为8位,但每启动一次I2C总线,其后的数据传 输字节数是没有限制的。每传送一个字节后都必须跟随一个应答位,并且首先发送 的数据位为最高位,在全部数据传送结束后主控制器发送终止信号,如图8.2所示。 I-MSBSDA接收器传出确认宿号字节传送完成接收器内产生中断信号接收器传由1确认信刀SCL9ACK当处理中断服务时时钟线保持低9ACKLSJ起始信号Lp_.l终正信号图8.2 I2C总线上的数据传送2.S3C44B0X开发板上的I2C原理S3C44B0X RISC微处理器能够支持多主控的IIC总线接口。要对多主控的IIC总线进行操作, 就必须对以下几个寄存器进行赋值:多主控IIC总线控制寄存器一IICCON多主控IIC总线控制/状态寄存器一IICSTAT多主控IIC总线读/写数据移位寄存器一IICDS多主控IIC总线地址寄存器一IICADD起始与停止信号都由主控设备来产生。在起始条件初始化后,第一个数据字节的一个7位的 地址值被放到总线上,这个地址值可以决定是哪个受控设备被选中了。第8位决定了数据传输的 方向(读或写)。每一个被放到SDA串线数据线上的数据都必须是8位的字节。数据传输可以是无限多个字节。每个字节的传输都有应答信号产生。要从数据位的最高位开始发送,在全部数据传送结束后主控制器发送终止信号。>SDAData BusSCL <MCLKAS3C44B0X IIC总线接口的四个操作模式:主发送模式-主接收模式从发送模式-从接收模式端口初始化ncscLHCSDA nSLRCK引脚WD2 ECSCLGPFO nCSDAGPFl .TTOT Th-PCONF寄存器设置端口初始化 Port_init():rpconf=0xa(1010);/PF0:IICSCL;Register Address R/WDescriptionReset ValuePCONF 0x01D20034 |""R/W| Configures the pins of port F 0x0000""PF1=IICSDAPCONFBitDescriptionPFO1000 = InputQI = Output10 = IICSCL1 1 = ReservedPF13=200 = InputQI = Output10 = IICSDA1 1 = ReservedPF25:400 = Input01 = Output10 = nWAIT11 = ReservedPF37:600 = InputQI = Output10 = nXBACK11 =nXDACKOPF49割00 = Input01 = Output10 = nXBREQ11 = nXDREQOPFS12:10000 = Input001 = Output010 = nRTS1011 = SIOTxD100 = IISLRCKOthers =施 servedPFE15:13000 = Input001 = Output010 = TxDI011 = SIORDY100 = IISDOOthers = ReservedPF7l&:16000 = Input001 = Output010 = RxD1011 = SIORxD100 = IISDIOthers = ReservedPF8 - z |rPUPF=0x3; / pull-Up disai华涎烈如1= Output010 = nCTS1ble = 0011LK1(W = IISCLKOthers = ReservedPUPFBitDescriptionPF8:OB:D0: the pull up resistor attached to the corresponding port pin is enabled. 1: the pull up nesistor 15 disabled.中断寄存器设置RegisterAddressR/WDescriptionReset ValueINTMSK0x01E0000CR/WDetermines which interrupt source is masked. The masked interrupt source will not be serviced.0 = Interrupt service is available1 = Interrupt service is masked0x07ffffffINTMSKBitDescriptioninitial stateReserved270Global260 = Service available1 = Masked1EINTO250 = Service available1 = Masked1EINT1240 = Service available1 = Masked1EINT2230 = Service available1 = Masked1EINT3220 = Service available1 = Masked1EINT4/5/6/7210 = Service available1 = Masked1INT_TICK2G0 = Service available1 = Masked1INT_ZDMA0190 = Service available1 = Masked1INT_ZDMA1四0 = Service available1 = Masked1INT_BDMA0170 = Service available1 = Masked1INT_BDMA1160 = Service available1 = Masked1INT_WDT150 = Service available1 = Masked1INT_UERR0.'1140 = Service available1 = Masked1INT_TIMERO130 = Service available1 = Masked1INT_TIMER1120 = Service available1 = Masked1INT_TIMER2110 = Service available1 = Masked1INT_TIMER3W0 = Service available1 = Masked1INT_TIMER490 = Service available1 = Masked1INT_TIMERS田0 = Service available1 = Masked1INT_URXD0U0 = Service available1 = Masked1INT_URXD160 = Service available1 = Masked1INTJIC50 = Service available1 = Masked1INT_SIO40 = Service available1 = Masked1INT_UTXD030 = Service available1 = Masked1INT_UTXD120 = Service available1 = Masked1INT_RTC10 = Service available1 = Masked1INT_ADC00 = Service available1 = Masked1rINTMSK=(BIT_GLOBAL|BIT_IIC);/开中断IICCON设置RegisterAddressR/WDescriptionReset ValueIICCONOX01D60000R/WIIC-Bus control registerCOJO_XXXXIICCONBitDescriptionInitial StateAcknovJedge enable I7lIlC-bus ackiwv? edge enable bit0=Disable ACK generation1 Enable ACK generationIn Tx mode; the ICSDA is free in the ack time.In Rx mode, the IICSDA is L in the ack time.0Tx clock source selection6Source clock of IIC-Ijus transmit clock prescaler selection bitQ= IICCLK fwciK/161= IICCLK =fM=LK/5l20Tx/Rk Interrupt enable回I C-Bus Tx.'Rx interrupt enable/disable bit Disable interrupt, 1 Enable nterrupt0Interrupt pending flag '3:,4I C-bus Tx/Rx interrupt pending flag. Writing 1 is impossible. When this bit is read as 1, the IICSCL is tied to L and the IIC is stopped. To resume the operation; clear this bit as 0.0 = 1 No interrupt pendingfwhen read),2) Clear pending condition & Resume the operation Ohen write).1=1 Interrupt is pending (v;hen read)2) N/A (when write)0Transmit clock value 即IICSTAT 设置P:0I C-Bus transmit clock prescalerI C-Bus transmit clock frequency is determined by this 4-bit prescaler value; according to the following formula:UndefinedRegisterAddressDescriptionReset Value1 CSTAT0x01060004IIC-Bus control/statLE registerC0O0_C003IICSTATBitDescriptionInitial StateMode selection7:6IlC-bus naster.'slave Tx.'Rx mode select bits:00: Slave receive meds01: Slave transmit mode10: Master receive made11: Mas:er transm i: mode0Busy signal statusSTART STOP condition5IIC-Bus busy signal status bit0 = read; IlC-bus not busy (when read) write) IlC-bus STOP signal generation1 = read; IlC-bus busy(hsn read;write) IlC-bus START signal generation.The data in IICDS will be transferred au:ona: tally just after the start signal.0Serial output enable4IlC-bus ds:a outpu: enable/disable bit: D=3isable Rx/Tx, 1 = Enable RxJTx0Arbitration status flag3IlC-bus arbizration oracedure s:atus flag biz: 0 = Bus arbitradon successful1 = Bus arb: rati on failed during serial l/Q0Address-as-slave status flag2IlC-bus sddress-as-slave status flag bit:D = cleared when START/STOP condition was detected1 = deceived slave address matches :he address value in the IICADD.0Address zero status flag1IlC-bus address zero sta:us flag bit:0 = cleared when START/STOP condition was detected.1 = Received slave address is GOOODDDObDLast-received bi: status flag0IlC-bus last-received bit s:atus flag bit0 = Last-received bit is 0 (ACK was received)1 = Last-receive bit is 1 (ACK was not received)0IICADD设置(主控IIC总线地址寄存器)RegisterAddressR/WDescriptionReset ValueIICADD0X01D60008R/WIIC-Bus address registerX>0<X_XX)0<IICADDBitDescriptionInitial StateSlave address7:07-bit slave address, latched from the IlC-bus:When serial output enabled in the IICSTAT, IICADD is write- enabled. The IICADD value can be read any time, regardless of the current serial output enable (IICSTAT) setting.Slave address = 7:1Not mapped = 0xxxx_xxxxIICDS寄存器设置(IIC-BUS TRANSMIT/RECEIVE DATA SHIFT REGISTER - IICDS )RegisterAddressR/WDescriptionReset ValueIICDSX01D6000CR/WIIC-Bus IransmilTeceive data shift registerXXXX_XXXXIICDSBitDescriptionInitial StateData shiftE&-bit data shift regiszer for I IO-bus Tx.'Rx o Deration:When serial ou:put enable = 1 in the IICSTAT. IICDS is write-enabled. The IICDS value can read any:ime; regardless of:he current serial output enable bit (IICSTAT settingXXXX_XXXX六、实验步骤(1) 学习上述实验原理,了解ARM上相应寄存器的功能和各位的意义。(2) 流程图:/IIC#define#define#define#definerIICCON rllCSTAT rllCADD rllCDS(volatile(volatile(volatile(volatileunsignedunsignedunsignedunsigned*)0x1d60000)*)0x1d60004)*)0x1d60008)*)0x1d6000c)将上述定义加入到工程中(44b0X.h)。(5) 在上面的文件中添加下面的执行函数,并且建立一个库文件iic.c),将其加 入到工程的driver文件夹中。函数主要为如下几个:void Wr24C040(U32 slvAddr,U32 addr,U8 data) ; / IIc 总线向某一地址写数据功能。void Rd24C040(U32 slvAddr,U32 addr,U8 *data) ; / IIc 总线向某一地址读数据功能。(6) 主函数及中断处理函数即按上面流程图编写代码即可,并将包含主函数的文件 添加到工程的main文件夹中。注:本实验中通过I2C总线在CPU和E2PROMN间发送/接收数据的,发送时,CPU作为主发送设 备,E2PROM作为接收。接收时,CPU作为主接收设备,E2PROM作为发送。(7)配置编译器,编译工程。打开JTAG调试AXF文件,用ADS调试,直到逻辑无 错误,达到预期实验效果。A、设置头文件的访问路径B、在ARM Linker里设置代码工作地址、数据工作地址。;ODebugRel SettingsOKCancel IApplyC、在ARM Linker里设置输入段在生成的映像文件中的位置,为了保证程序启 动后能从44binit.s的init标号处开始运行。我们向下图一样设置。七、当工程编译通过执行时,就会在串口调试助手的显示区显示:IIC总写0到255数据到 KS24C080。然后等待接收键盘输入字符r :实验结果如接收到,则开始MKS24C080进行读取数据存入到数组中,并从串口读出数组中的数据

    注意事项

    本文(嵌入式 音频接口.docx)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开