- I2S 基本概念
- 飞利浦(I2S)标准模式
- 左(MSB)对齐标准模式
- 右(LSB)对齐标准模式
- DSP 模式
-
TDM 模式
I2S format
飞利浦 (I2S) 标准模式
- 数据在跟随 LRCLK 传输的 BCLK 的第二个上升沿时传输 MSB,其他位一直到 LSB 按顺序传
- 传输依赖于字长、BCLK 频率和采样率(BCLK=Fs x 声道数 x 采样位数)
- 在每个采样的 LSB 和下一个采样的 MSB 之间都应该有未用的 BCLK 周期
- LRCLK 为 0 传输左声道数据,LRCLK 为 1 传输右声道数据
时序图
飞利浦标准模式的 I2S 传输协议如下所示:
AP 测试
五线模式
硬件拓扑图
有点乱。。。
- BCLK
- MCU BCLK -> AP RX BCLK
- MCU BCLK -> AP TX BCLK
- ADC_LR_CLK
- MCU ADC_LR_CLK -> AP TX LRCLK
- ADC_DATA
- MCU ADC_DATA -> AP TX DATA
- DAC_LR_CLK
- MCU DAC_LR_CLK -> AP RX LRCLK
- DAC_DATA
- MCU DAC_DATA -> AP RX DATA
需要注意的是
AP TX BCLK
和AP RX BCLK
都接到了MCU BLCK
,且 AP 端的两个 BCLK 的地线都要和 MCU 共地,否则波形出不来
数据路径
- AP -> AP I2S TX -> MCU I2S RX -> MCU SRAM -> MCU I2S TX -> AP I2S RX -> AP
AP TX 配置
AP RX 配置
AP 输出 1k sine
效果
- ch1
- ch2
- FFT
四线 DAC 模式
硬件拓扑图
- BCLK
- MCU BCLK -> AP RX BCLK
- MCU BCLK -> AP TX BCLK
- ADC_DATA
- MCU ADC_DATA -> AP TX DATA
- DAC_LR_CLK
- MCU DAC_LR_CLK -> AP RX LRCLK
- MCU DAC_LR_CLK -> AP TX LRCLK
- DAC_DATA
- MCU DAC_DATA -> AP RX DATA
- 需要注意的是
AP TX BCLK
和AP RX BCLK
都接到了MCU BLCK
,且 AP 端的两个 BCLK 的地线都要和 MCU 共地,否则波形出不来- MCU DAC_LR_CLK 提供帧时钟
数据路径
- AP -> AP I2S TX -> MCU I2S RX -> MCU SRAM -> MCU I2S TX -> AP I2S RX -> AP
其他 AP 输出输出设置与 5 线模式一致,效果图略
四线 ADC 模式
硬件拓扑图
- BCLK
- MCU BCLK -> AP RX BCLK
- MCU BCLK -> AP TX BCLK
- ADC_DATA
- MCU ADC_DATA -> AP TX DATA
- ADC_LR_CLK
- MCU ADC_LR_CLK -> AP RX LRCLK
- MCU ADC_LR_CLK -> AP TX LRCLK
- DAC_DATA
- MCU DAC_DATA -> AP RX DATA
- 需要注意的是
AP TX BCLK
和AP RX BCLK
都接到了MCU BLCK
,且 AP 端的两个 BCLK 的地线都要和 MCU 共地,否则波形出不来- MCU ADC_LR_CLK 提供帧时钟
数据路径
- AP -> AP I2S TX -> MCU I2S RX -> MCU SRAM -> MCU I2S TX -> AP I2S RX -> AP
其他 AP 输出输出设置与 5 线模式一致,效果图略
二线 TX
硬件拓扑图
- BCLK
- MCU BCLK -> AP RX BCLK
- ADC_DATA
- MCU ADC_DATA -> AP RX DATA1
- DAC_LR_CLK
- MCU DAC_LR_CLK -> AP RX LRCLK
- DAC_DATA
- MCU DAC_DATA -> AP RX DATA2
数据路径
- MCU SRAM -> MCU I2S TX -> AP I2S RX -> AP
发送的数据
volatile signed int sin_48k_24bit[] = {
0, 1094933, 2171131, 3210181, 4194303, 5106660, 5931641, 6655129, 7264747, 7750062, 8102772, 8316841,
8388607, 8316841, 8102772, 7750062, 7264746, 6655129, 5931641, 5106660, 4194303, 3210179, 2171130, 1094932,
0, -1094933, -2171131, -3210181, -4194305, -5106661, -5931642, -6655129, -7264747, -7750063, -8102772, -8316841,
-8388607, -8316841, -8102772, -7750062, -7264747, -6655129, -5931639, -5106660, -4194301, -3210180, -2171129, -1094933,
};
发送数据配置
int i2s_tx_data[240];
for (unsigned int i = 0; i < 240); i++)
{
i2s_tx_data[i * 4] = sin_48k_24bit[i % 48];
i2s_tx_data[i * 4 + 1] = sin_48k_24bit[i % 48];
i2s_tx_data[i * 4 + 2] = sin_48k_24bit[i % 48];
i2s_tx_data[i * 4 + 3] = sin_48k_24bit[i % 48];
}
AP RX 配置
效果
正弦波形
FFT
二线 RX
硬件拓扑图
- BCLK
- MCU BCLK -> AP TX BCLK
- ADC_LR_CLK
- MCU ADC_LR_CLK -> AP TX LRCLK
- ADC_DATA
- MCU ADC_DATA -> AP TX DATA1
- DAC_DATA
- MCU DAC_DATA -> AP TX DATA2
数据路径
- AP -> AP I2S TX -> MCU I2S RX -> MCU SRAM
AP TX 配置
AP 输出 1k sine
效果
将 SRAM 数据导出,使用 python 绘制图片即可,绘制的图形如下图
sample_rate 为 48KHz,data_depth 为 24,那根据这些可以算出持续时间为 0.01s。
更多 PCM 数据解析请参考:音频——解析 PCM 数据
I2S Slave
硬件拓扑图
- BCLK(选择一个即可)
- AP TX BCLK -> MCU BCLK
- AP RX BCLK -> MCU BCLK
- ADC_LR_CLK
- AP TX LRCLK -> MCU ADC_LR_CLK
- ADC_DATA
- AP TX DATA -> MCU ADC_DATA
- DAC_LR_CLK
- AP RX LRCLK -> MCU DAC_LR_CLK
- DAC_DATA
- AP RX DATA -> MCU DAC_DATA
数据路径
- AP -> AP I2S TX -> MCU I2S RX -> MCU SRAM -> MCU I2S TX -> AP I2S RX -> AP
AP TX 配置
AP RX 配置
效果
文章来源:https://www.toymoban.com/news/detail-691996.html
逻辑分析仪抓包
待补充。。。文章来源地址https://www.toymoban.com/news/detail-691996.html
到了这里,关于音频——I2S 标准模式(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!