第三十五章 I2S——音频传输接口

第三十五章 I2S——音频传输接口

目录

第三十五章 I2S——音频传输接口

1 I2S概述

1.1 简介

1.2 功能特点

1.3 工作原理

1.4 利用DMA通信的I2S

1.4.1 I2S配合DMA通信工作原理

1.4.2 配置要点

2 应用场景

2.1 消费类音频设备

2.2 专业音频设备

2.3 通信设备

2.4 汽车电子

2.5 嵌入式系统

3 注意事项

4 程序设计

4.1 IIS_CS4344例程

4.1.1 I2S初始化

4.1.2 DMA初始化

4.1.3 中断配置函数

4.1.4 中断服务函数

4.1.5 数据处理函数

4.1.6 主程序

4.1.7 下载验证

4.2 IIS_Dma例程

4.2.1 发送数据

4.2.2 中断服务函数

4.2.3 主程序

4.2.4 下载验证

4.3 IIS_Int例程

4.3.1 I2S初始化

4.3.2 中断服务函数

4.3.3 主程序

4.4.4 下载验证

5 总结


I2S(Inter-Integrated Circuit Sound)W55MH32中用于数字音频传输的重要接口,广泛应用于各种音频设备与嵌入式系统。本文将从工作原理、注意事项、应用场景以及程序设计来讲解I2S接口,和大家一起学习和使用这一技术。

1 I2S概述

1.1 简介

I2S(Inter-Integrated Circuit Sound)是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,专门用于音频设备之间的高质量数字音频传输。在W55MH32中,I2S功能与SPI模块共享相同的硬件资源,通过将寄存器SPI_I2SCFGRI2SMOD位置为'1'即可使能I2S功能,将SPI模块转换为I2S音频接口。

I2S接口与SPI接口使用大致相同的引脚、标志和中断,但专为音频数据传输优化。它采用独立的导线传输时钟与数据信号,通过将数据和时钟信号分离,避免了因时差诱发的失真,为用户节省了购买抵抗音频抖动的专业设备的费用。I2S已成为数字音频领域的事实标准接口,广泛应用于各种消费电子和专业音频设备中。

1.2 功能特点

W55MH32I2S接口有以下特点:

  • 单工通信(仅发送或接收)
  • 主或者从操作
  • 8位线性可编程预分频器,获得精确的音频采样频率(8KHz96kHz)
  • 数据格式可以是16位,24位或者32
  • 音频信道固定数据包帧为16(16位数据帧)32(162432位数据帧)
  • 可编程的时钟极性(稳定态)
  • 从发送模式下的下溢标志位和主/从接收模式下的溢出标志位
  • 16位数据寄存器用来发送和接收,在通道两端各有一个寄存器
  • 支持的I2S协议:
    • I2S飞利浦标准
    • MSB对齐标准(左对齐)
    • LSB对齐标准(右对齐)
  • PCM标准(16位通道帧上带长或短帧同步或者16位数据帧扩展为32位通道帧)
  • 数据方向总是MSB在先
  • 发送和接收都具有DMA能力
  • 主时钟可以输出到外部音频设备,比率固定为256xFs(Fs为音频采样频率)

1.3 工作原理

I2S接口的核心工作原理基于三个主要信号线的协同工作:

  • 串行时钟(SCK/CK):也称为位时钟(BCLK),由主设备产生,用于同步数据传输。每个时钟周期对应音频数据的一位。SCK的频率计算公式为:SCK频率 = 2 × 采样频率 × 采样位数。例如,对于44.1kHz采样率、16位精度的立体声音频,SCK频率应为44.1kHz×16bits×2(左右声道)=1.4112MHz
  • 字选择(WS):也称为帧时钟(LRCK),用于指示当前传输的音频数据所属声道。在I2S飞利浦标准下,WS'0'表示左声道数据,为'1'表示右声道数据。WS信号在发送第一位数据(MSB)1个时钟周期即变为有效。
  • 串行数据(SD):承载实际的音频数据,采用二进制补码表示。数据总是从最高位(MSB)开始传输,与SPI接口的MSB优先模式类似。

在某些需要更高精度时钟同步的系统中,还可以使用第四个信号线:

  • 主时钟(MCK)为外部音频编解码器提供系统时钟参考,通常设置为采样频率的256(256xFs)。当寄存器SPI_I2SPRMCKOE位为'1'时,W55MH32可输出此额外时钟信号。

I2S的数据传输遵循严格的时序关系。在I2S飞利浦标准下,发送方在时钟信号(CK)的下降沿改变数据,接收方在上升沿读取数据。WS信号也在时钟信号的下降沿变化。这种同步机制确保了数据传输的可靠性,即使在高速率下也能保持较低的误码率。

对于不同数据格式的处理,I2S硬件提供了自动的数据对齐和填充功能。例如,当16位数据扩展到32位帧时,高16(MSB)为有效数据,低16位被硬件强制为0x0000,无需软件干预。24位数据扩展到32位帧时,高24位为有效数据,低8位由硬件置0。这种自动处理大大简化了软件开发,特别是在使用DMA传输时。

I2S的功能框图如下:

1.4 利用DMA通信的I2S

1.4.1 I2S配合DMA通信工作原理

I2S接口与DMA控制器协同工作时,形成高效的数据传输通道。通过将寄存器SPI_CR2TXDMAEN/RXDMAEN位置1,可使能DMA传输请求。I2S模式下DMA的工作方式与SPI模式基本相同,只是没有CRC功能。当I2S接口需要发送或接收数据时,会自动触发DMA请求:

  • 发送过程TXE标志置1时触发DMA请求,DMA控制器将数据从内存搬运至SPI_DR寄存器。
  • 接收过程RXNE标志置1时触发DMA请求,DMA控制器将数据从SPI_DR寄存器搬运至内。

使用DMA发送和接收的时序图如下:

1.4.2 配置要点

数据格式处理

I2S支持多种数据格式,DMA需要相应配置:

数据格式

DMA传输次数

备注

16位→16位帧

1

直接传输

16位→32位帧

1

硬件自动补0

24位→32位帧

2

硬件补低80

32位→32位帧

2

完整32位处理

声道管理

  • 左声道数据总是先传输
  • 通过CHSIDE标志识别当前声道
  • 从模式需提前准备好第一个数据

发送流程

  1. 配置DMA:内存→SPI_DR,设置数据宽度
  2. 启动传输:
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值