本帖最后由 okwh 于 2017-7-15 11:20 编辑
【LPC54114双核任务三】――C0、I2S/DMIC/wm8904与音频
I2S(Inter—IC Sound)总线是飞利浦在1986年定义(1996年修订)的数字音频传输标准,用于数字音频数据在系统内部器件之间传输,例如编解码器CODEC、DSP、数字输入/输出接口、ADC、DAC和数字滤波器等,采用独立的导线传输时钟与数据,避免时差诱发的失真,成本低廉。(脉冲编码调制PCM (Pulse Code Modulation) 就不揭示了,可把I2S看做PCM的一种。其他的音频传输标准还有Intel HDA(Intel High Definition Audio) ,S/PDIF和Ethernet AVB等) I2S是比较简单的数字接口协议,没有地址或设备选择机制。在I2S总线上,只能同时存在一个主设备和发送设备。提供时钟的设备为主设备,主设备可以是发送设备,也可以是接收设备,或是协调发送设备和接收设备的其它控制设备。配置后可同时发送和接收数据,也可只发送或只接收数据。要求不高时甚至也可以软件编程用IO模拟I2S接口。 3个基本信号线:1) 数据位传输同步用位时钟(BCLK),SCLK的频率=2×采样频率×采样位数。 2) 帧时钟WS,用于标记左右声道数据或数据包切换,频率等于采样频率。 3) 串行数据SDATA。 脉冲密度调制(Pulse Density Modulation),简称PDM,是一种使用二进制数0,1表示模拟信号的调制方式,使用sigma-delta调制进行数模转换模数转换,模拟信号的幅值使用输出脉冲对应区域的密度表示。传输双声道数据只要用到时钟和数据两根信号线。是DMIC最常用的数据格式。 简单的说,PDM是把声音进行数模转换模数转换用的一种编码格式,I2S则是一种数字数据传输协议标准。
该板子的音频功能应该1) 可以从SPH0641LM4H的DMIC输入或从wm8904的话筒输入CN8记录音频 2) 可以从wm8904的喇叭耳机输出CN7播放音频。wm8904编解码芯片连接立体声话筒、立体声耳机、通过I2S和CPU互传数据、通过I2C被CPU配置和控制。
这样音频流可以有4种工作方式, 1) 音频从话筒CN8经wm8904直通CN7耳机喇叭,不经过D/A、A/D转换, 无需CPU参与; 通常称模拟回路通道;
2) 音频从话筒CN8经wm8904数字话处理后再通过I2S送wm8904到CN7耳机喇叭; 经过D/A、A/D转换, 无需CPU参与; 通常称数字回路通道; 3) 音频从话筒CN8经wm8904的接口通过I2S到CPU或DSP,经CPU或DSP处理后再通过I2S送wm8904到CN7耳机喇叭; 这是LPC54114参与数字音频处理的回路通道; 4) 音频从DMIC经PDM到CPU, CPU处理后通过I2S送wm8904到CN7耳机喇叭。 当然到达CPU的数据也可送往其他地方比如通过USB送王PC,当然到达CPU的数据也可来自其他地方比如存储的音频文件或是通过USB来自PC机等。
万利这块板子上CN7是喇叭输出插座,CN8是话筒输入插座,DMIC和wm8904有以下管脚 | | 说明:8个支持中断、FIFO、DMA的FlexComm使用了三个 | | | | 数字麦克风SPH0641LM4H支持HWVAD0中断、FIFO、DMA | | | | | | | | 用I2C4作wm8904的配置设置接口 (同时用于温度传感PCT2075DP) | | | | | | | | | | I2S1用于发送数据,发往wm8904à耳机喇叭 Flexcomm 7 TX I2S1 | | | | | | | | | | Flexcomm 6 RX I2S0 I2S0用于接收数据,从wm8904ß话筒来 | | | | | | |
下文,介绍实例探索。
修正:: 本贴中 CN8 应为音频输入 Lin In , 不能使用话筒,话筒驱动不了!!
|