tee12
发表于 2019-2-16 17:33:55
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?快速注册
x
5 n- m! _' [) y( g
采用I2S接口为MCU系统中的数字音频提升质量
: ^. ?' r3 e- A0 aI2S(Inter-IC Sound)界面最初定义为二十多年前用于CD播放器,但经过多次修改和增强,现在已成为任何支持音乐的数字系统的重要元素。与用于MCU的其他串行接口相比,I2S是一个更具延迟敏感性的接口,因为接口的目的是可靠地传输高保真音频。要使用I2S,您通常需要选择一个专门支持该标准的微控制器(MCU),尽管存在使用标准MCU串行端口的软件驱动实现。将支持I2S的MCU与外设芯片(如以音频为中心的数据转换器)相结合,您可以在基于MCU的系统中提供高质量的数字音频。
+ Z1 K: a0 d! _) Q0 u$ d$ L9 `- t1 I4 I. ]- Y# f% d
I2S接口由飞利浦定义。由于首字母缩略词的相似性,许多人认为它在技术上与I2C接口有关。实际上,唯一的联系是飞利浦定义了两者。 I2S速度更快,包括完全不同的信令结构,并且严格定义用于传输双声道音频数据。: i M( ^* A5 v! K" z
& A0 H+ U" S! F( J( V8 v
I2S实现至少包括三条信号线 - 位时钟,字时钟和多路复用数据信号。一些实现还包括主时钟信号和第二数据线。该接口被定义为允许使用用于立体声应用的脉冲编码调制(PCM)编码方案来传输两个32位音频通道。
i2 j$ ]: Y- Q7 |; f9 Y h; ^+ k ]/ b. j7 r( G
图1,由Microchip提供,显示了典型的I2S实现方案。诸如A/D转换器(ADC)之类的源以数字方式将音频传输到MCU。 MCU又可以将音频流传输到D/A转换器(DAC)以输出到扬声器。
' `, G; \& \! K/ @; p3 {3 @/ J# S/ K1 R M( Z( k$ P
图1:Microchip的这张图显示了一个典型的音频I2S系统将ADC与系统MCU连接,并将MCU连接到输出侧的DAC。
$ n7 `' ]5 L& C p, j0 s% j" \. @9 X5 O* u8 M1 g
MCUI2S支持9 N2 ?+ V! U$ u. t
( z3 }# T9 h( f
让我们来看看一些包含I2S支持的MCU选项。例如,德州仪器(TI)在其Stellaris MCU系列的几个分支上提供I2S,包括Stellaris 9000 MCU。 Stellaris MCU集成了32位ARM Cortex-M3 CPU内核。 9000子系列的时钟频率高达80 MHz。/ M' z$ h' n6 m0 ]! ~. J3 D2 h+ e
3 K1 |. j4 T/ {8 L* k0 Y6 \
同样,Microchip仅在基于MIPS CPU内核的32位PIC32系列MCU上提供I2S支持。现成的产品系列均以40 MHz的最高时钟速度运行,并具有32至128 KB的集成闪存。
1 _- s' r" q( A" {4 l7 G% \1 o6 Z6 d5 X2 a: e# g+ x* z% o
飞思卡尔可能提供最广泛的支持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以上。
" ]' j4 A3 c9 C' Q
" w! y/ G: Q5 q! d在MCU特定领域,飞思卡尔主要支持Kinetis系列MCU中的I2S,这些MCU基于ARM Cortex-M4 CPU,时钟速度最高可达100 MHz。 Cortex-M4集成了针对DSP应用而优化的数学功能,包括音乐或以音频为中心的应用,此类产品有时也称为数字信号控制器(DSC),使具有数学功能的产品与标准MCU区分开来。 L" ?" L0 {2 w/ Y
/ n( K/ @! {2 Q恩智浦还在广泛的基于ARM的MCU上支持I2S。该列表包括基于ARM7,ARM9,Cortex-M3和Cortex-M4 MCU的产品。同样,意法半导体的STM32系列支持基于Cortex-M3和-M4的MCU,支持I2S,时钟频率范围为168 MHz。) T7 @: y( J3 x$ L2 [5 W
' K7 H" w+ l+ _1 P4 Z# i9 ~将I2S添加到16位MCU
' V1 o/ [8 L& w5 Z4 I2 `
2 `' [/ |0 ]' ^, N( N# [. G通常,MCU供应商仅在32位MCU上支持I2S,因为高端音频和音乐应用通常要求32位CPU提供的性能。但是16位MCU性能大幅提升,您可能会发现自己需要将这样的MCU连接到以音频为中心的外设,如立体声ADC。5 Q1 @6 k: w" ?0 G& F( m' E3 x
) K1 q. x/ x/ x2 ` a& _/ _
您可以将MCU支持用于诸如串行外设接口(SPI)之类的接口以及软件和一些外部逻辑来创建功能性I2S端口。例如,TI已发布了一份应用笔记(SLAA449A-将I2S器件连接到MSP430器件),描述了如何在16位MSP430系列MCU上实现I2S(图2)。
) C4 g) D( u9 \ _4 Q: Y0 E5 O% j- k
% A) y$ x% |5 V# T# d% a! ^
: Y6 [( b3 o% a, z# @图2:您可以使用标准串行端口和一些外部逻辑在16位MCU上实现I2S支持,如TI MSP430的情况所示。
* q# v( E+ G1 s% L4 b/ f( e9 ?1 J
3 ~- ^: `5 e: GI2S实现的部分复杂性是需要支持多路复用数据来传输两个立体声通道。该标准规定左右声道数据由字时钟发信号通知有效 - 上升沿有一个通道,下降沿有一个通道。图2中描述的电路使用4位计数器和一些离散逻辑来实现5位计数器,而不是产生精确传输I2S链路的16位字所需的信号。 |
|
|
|
|