RT600 I2S外设介绍及应用

恩智浦的i.MX RT600是跨界处理器产品,同样也是i.MX RTxxx系列的开山之作。不同于i.MX RT1xxx系列单片机,i.MX RT600 采用了双核架构,将新一代Cortex-M33内核与高性能Cadence Tensilica HiFi 4 音频DSP内核相结合,适用于32位沉浸式音频播放和视频用户界面应用。i.MX RT600旨在通过安全、功率优化的嵌入式处理器充分挖掘语音辅助终端节点的潜力,因此针对音频数据的采集、传输和处理,i.MX RT600都有丰富的硬件资源进行支持。其中,针对RT600的I2S外设,本文详细地进行了介绍,并基于i.MX RT600 EVK开发板,在RT600的DSP端(HiFi4)实现了一个音频数字回环的demo。

一、I2S介绍 1.1 I2S 接口

I2S总线为数字音频流的传输提供了标准的通信接口,由飞利浦制定。I2S总线规范定义了一种3线串行总线,分别是:

1、串行时钟SCK(也称位时钟BCLK),这是SDA线上数据的位时钟。对应SDA的每一个数据位,SCLK都有产生一个脉冲。

2、帧时钟WS(也称LRCK,或FSYNC),以大多数单一立体声格式的PDM数据来说,WS用于切换左右声道的数据;在DSP或TDM模式下用作帧定界符。此外,I2S的采样频率是由WS频率决定的。

3、串行数据(SDA),就是用二进制表示的音频数据流,单个SDA提供一个音频数据流,该数据流可能具有多种格式。

I2S接口除了以上3个总线外,在实际应用中还需要MCLK(Master CLK)时钟。在某些I2S系统中,I2S从设备可能需要使用MCLK来构建位时钟。一般情况下,它是采样率(fs)的整倍数,例如256fs,64fs等。

1.2 RT600 I2S硬件架构

i.MX RT600一共包含7个可配置的通用串行接口模块(Flexcomm接口),Flexcomms 0至5可以配置为I2S接口用于数字音频数据的传。下图为I2S子系统的整体架构图,每个I2S模块都包含集成的FIFO和DMA支持, 每个I2S接口最多支持四个通道对的数据。

1.3 I2S帧格式

介绍完了I2S的接口定义,下面介绍在我们i.MX RT600上I2S外设提供了哪些帧格式。

首先是经典I2S模式(Classic I2S mode),经典I2S模式规范在SDA上定义了2声道立体声数据,其中WS状态标识左(低)声道和右(高)声道,并且在WS转换后,数据延迟1个SCK时钟。 经典I2S模式的示意图如下所示。

第二种模式是DSP模式(DSP mode)。在DSP模式中,不使用WS来标识左右声道数据,而是将通道的音频数据打包成位流的模式。在这种模式下,一包完整的音频数据流从WS帧的上升沿开始。 通过WS的变化,DSP模式可以演变出如下图所示的三种模式,分别为DSP mode with 50% WS,DSP mode with 1 SCK pulsed WS和DSP mode with 1 slot pulsed WS。

第三种模式为TDM模式。TDM模式能够最多打包4个通道对(左右声道)的音频数据以位流的形式传输, 可以与DSP模式或经典I2S模式结合使用。 经典I2S模式下的TDM示意图如下图所示,一共有4对Slot音频数据(共8声道音频数据),通过如图所示的帧格式由一根SDA总线进行传输。

当然这边需要注意的是,RT600上I2S的SDA总线能发送最多4对Slot音频数据。另外寄存器”Configuration 1“和 ”Configuration register 1 for channel pairs 1, 2, and 3“ 中的ONECHANNEL位决定了I2S的数据通道是否为单通道模式,例如:如果ONECHANNEL设置为0,那么该通道的I2S数据流会被I2S总线视为左右声道数据,如果ONECHANNEL设置为1,那么该通道对的I2S数据流被视为单个声道数据。以上所有举例的帧格式示意图都是以ONECHANNEL=0为基础的。

除了经典I2S模式下的TDM,还有在DSP模式下的TDM格式帧,下图展示的是TDM在DSP modes with 1 SCK pulsed WS模式下的帧格式。因此,RT600能够产生的I2S帧格式的种类是非常丰富的,用户可以根据自己的需求进行配置。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzszyz.html