tee12
发表于 2019-2-16 17:33:55
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?快速注册
x
: Y4 l& D, [) m9 J# o9 I7 ?- G
采用I2S接口为MCU系统中的数字音频提升质量
; C5 X' s6 L; ~ B3 v. r4 H- yI2S(Inter-IC Sound)界面最初定义为二十多年前用于CD播放器,但经过多次修改和增强,现在已成为任何支持音乐的数字系统的重要元素。与用于MCU的其他串行接口相比,I2S是一个更具延迟敏感性的接口,因为接口的目的是可靠地传输高保真音频。要使用I2S,您通常需要选择一个专门支持该标准的微控制器(MCU),尽管存在使用标准MCU串行端口的软件驱动实现。将支持I2S的MCU与外设芯片(如以音频为中心的数据转换器)相结合,您可以在基于MCU的系统中提供高质量的数字音频。7 X; [/ k& [- O( \/ G
4 f0 ` b, _: `$ X7 y+ l$ a3 o! ]
I2S接口由飞利浦定义。由于首字母缩略词的相似性,许多人认为它在技术上与I2C接口有关。实际上,唯一的联系是飞利浦定义了两者。 I2S速度更快,包括完全不同的信令结构,并且严格定义用于传输双声道音频数据。2 Q6 L4 l" D4 _) |: s8 N
; \! V) ^) [9 p5 A. c
I2S实现至少包括三条信号线 - 位时钟,字时钟和多路复用数据信号。一些实现还包括主时钟信号和第二数据线。该接口被定义为允许使用用于立体声应用的脉冲编码调制(PCM)编码方案来传输两个32位音频通道。
, e3 M2 y: U; s' g5 A* C( ]8 V2 Y7 C' X6 i9 H! V- x) x. ?- |
图1,由Microchip提供,显示了典型的I2S实现方案。诸如A/D转换器(ADC)之类的源以数字方式将音频传输到MCU。 MCU又可以将音频流传输到D/A转换器(DAC)以输出到扬声器。
) Q7 j/ h: h3 ] R1 V& m; v3 T
7 ]& D3 f8 Q- p1 L6 z) h图1:Microchip的这张图显示了一个典型的音频I2S系统将ADC与系统MCU连接,并将MCU连接到输出侧的DAC。
7 O3 \; F- s; X" m1 O- v. O. y9 ?9 G% K+ T9 u# N
MCUI2S支持) Y, x, o( b9 b5 q
/ M- q C/ @ @, ^0 {
让我们来看看一些包含I2S支持的MCU选项。例如,德州仪器(TI)在其Stellaris MCU系列的几个分支上提供I2S,包括Stellaris 9000 MCU。 Stellaris MCU集成了32位ARM Cortex-M3 CPU内核。 9000子系列的时钟频率高达80 MHz。5 D' \$ t- h6 n7 w) D) N, f, f
9 v' D/ I/ f. y. y% `5 I同样,Microchip仅在基于MIPS CPU内核的32位PIC32系列MCU上提供I2S支持。现成的产品系列均以40 MHz的最高时钟速度运行,并具有32至128 KB的集成闪存。( p# W) H+ Y% F& U' h% k
3 J. |' g7 D7 n# E/ T; G2 \6 M飞思卡尔可能提供最广泛的支持I2S的MCU,可选择i.MX-,Kinetis-,PowerPC-和Coldfire-family选项。 i.MX产品被称为嵌入式处理器而不是MCU,尽管它们集成了内存。 i.MX23/25处理器基于ARM9 CPU,i.MX35处理器基于ARM11 CPU,i.MX51/53处理器基于ARM Cortex-A8内核。在可用IC范围内,支持的最大时钟速度从100 MHz开始,并扩展到400 MHz以上。
. Z5 @0 e2 m$ Q- y/ R
9 f( a4 d6 ] N) w' T; E0 S在MCU特定领域,飞思卡尔主要支持Kinetis系列MCU中的I2S,这些MCU基于ARM Cortex-M4 CPU,时钟速度最高可达100 MHz。 Cortex-M4集成了针对DSP应用而优化的数学功能,包括音乐或以音频为中心的应用,此类产品有时也称为数字信号控制器(DSC),使具有数学功能的产品与标准MCU区分开来。5 e# v3 u1 k3 S0 s9 u) M. `
& p; {, ~- E" Z* N1 y9 t6 q
恩智浦还在广泛的基于ARM的MCU上支持I2S。该列表包括基于ARM7,ARM9,Cortex-M3和Cortex-M4 MCU的产品。同样,意法半导体的STM32系列支持基于Cortex-M3和-M4的MCU,支持I2S,时钟频率范围为168 MHz。4 m5 \ A. Y7 j; W; m3 k
k# T7 H! O6 V
将I2S添加到16位MCU
/ v- ]" a" j2 }% A" n# c) }$ `! c g/ o( ^ Y$ P! ~% q' `8 C
通常,MCU供应商仅在32位MCU上支持I2S,因为高端音频和音乐应用通常要求32位CPU提供的性能。但是16位MCU性能大幅提升,您可能会发现自己需要将这样的MCU连接到以音频为中心的外设,如立体声ADC。) y, \3 s3 T4 S
: a( l8 B. _4 j您可以将MCU支持用于诸如串行外设接口(SPI)之类的接口以及软件和一些外部逻辑来创建功能性I2S端口。例如,TI已发布了一份应用笔记(SLAA449A-将I2S器件连接到MSP430器件),描述了如何在16位MSP430系列MCU上实现I2S(图2)。0 a( D$ O6 ]. \! A0 \" \% G
- m: T4 |) i* ]9 } u5 Q1 n2 Y2 |' E4 o e, S/ Y9 q
( q: u. q( Q S. }- Z2 U9 z
图2:您可以使用标准串行端口和一些外部逻辑在16位MCU上实现I2S支持,如TI MSP430的情况所示。
" D5 o6 z, c/ p! G5 ^0 k1 S2 V
% k" n5 ^8 b) A4 T! O4 kI2S实现的部分复杂性是需要支持多路复用数据来传输两个立体声通道。该标准规定左右声道数据由字时钟发信号通知有效 - 上升沿有一个通道,下降沿有一个通道。图2中描述的电路使用4位计数器和一些离散逻辑来实现5位计数器,而不是产生精确传输I2S链路的16位字所需的信号。 |
|
|
|
|