肇默步 发表于 2025-12-11 17:35:01

使用i2s遇到的问题

在使用i2s的时候原本以为用dma把数据搬运过去就万事大吉,但是搬运过去后喇叭播放听起来十分的难听。
i2s主要由
SCK(串行时钟):也叫位时钟(BCLK),每个时钟脉冲对应数据线的一位数据。
WS(字选择):也叫左右声道时钟(LRCK),用于选择左右声道。标准飞利浦模式下,WS=0表示左声道,WS=1表示右声道。
SD(串行数据):用于传输实际的音频数据。
有时还有MCLK(主时钟),用于为编解码器等提供参考时钟,但并非必需。
有四种工作模式,标准飞利浦模式,LSB左声道对齐,MSB右声道对齐,PCM模式
标准飞利浦模式

L-low

LSB

L-high
、https://img2024.cnblogs.com/blog/3688973/202512/3688973-20251211130157184-972006450.png
MSB

L-high


PCM


我使用的kf32a156,标准飞利浦模式,dma1发送 16位 18k
这款芯片在启动i2s前需要先发送一时钟数据启动i2s,如果不发送就会

导致我如果直接使用音频数据会左右声道颠倒,目前解决方法是,在音频数据前添加0x0000

这里可以看到ws采样率引脚提前一个时钟周期
i2s+dma初始化
init 代码/** *@brief:I2S init *@paramNone *@param None *@retval : None */void i2s_init(void){        /*chongzhi clock*/        /*fuwei dingshiqi T0T3*/        RST_SFR->CTL1 |= (uint32_t)1 CTL1 &= ~((uint32_t)1 CTL1 |= (uint32_t)1 CTLR &= ~(3

恙髡 发表于 2025-12-15 17:30:15

收藏一下   不知道什么时候能用到

诸婉丽 发表于 2025-12-30 17:37:30

不错,里面软件多更新就更好了

僭墙覆 发表于 2026-1-15 04:24:51

喜欢鼓捣这些软件,现在用得少,谢谢分享!

染悄 发表于 2026-1-18 13:56:23

感谢分享,下载保存了,貌似很强大

丰江 发表于 2026-1-19 01:35:31

感谢发布原创作品,程序园因你更精彩

廖彗云 发表于 2026-1-20 06:30:23

过来提前占个楼

庾签 发表于 2026-1-20 08:59:02

这个有用。

圄旧剖 发表于 2026-1-23 01:44:13

前排留名,哈哈哈

拙因 发表于 2026-1-23 05:10:51

感谢发布原创作品,程序园因你更精彩

吕梓美 发表于 2026-2-6 11:29:43

感谢分享,学习下。

叟澡帅 发表于 2026-2-7 07:40:07

不错,里面软件多更新就更好了

予捻 发表于 2026-2-8 04:52:34

这个好,看起来很实用

呈步 发表于 2026-2-8 09:23:21

前排留名,哈哈哈

缄戈 发表于 2026-2-8 23:46:16

这个好,看起来很实用

仄谦 发表于 2026-2-9 06:27:18

感谢,下载保存了

骂治并 发表于 2026-2-9 19:06:21

感谢分享

劳暄美 发表于 2026-2-9 22:37:52

谢谢分享,试用一下

炳裘垦 发表于 2026-2-10 04:51:34

分享、互助 让互联网精神温暖你我

师悠逸 发表于 2026-2-10 06:56:56

热心回复!
页: [1] 2
查看完整版本: 使用i2s遇到的问题