找回密码
 立即注册
查看: 178|回复: 17

STC32G144K246的IIS做从机的时候,数据不定时出现不对齐问题

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:33
  • 最近打卡:2026-07-03 08:44:26
已绑定手机

3

主题

24

回帖

123

积分

注册会员

积分
123
发表于 2026-6-1 10:08:57 | 显示全部楼层 |阅读模式
使用STC32G144K246的IIS做从机接收数据的时候,随机出现数据不对齐问题,表现为上电有时候正常,有时候不正常,都是断电重启后,上电正常后续就都正常,上电不正常,后续就都不正常。        void DMA_I2SR_ISR(void) interrupt DMA_I2SR_VECTOR
{
if (DMA_I2SR_STA & 0x01)    // 传输完成中断
{
     DMA_I2SR_STA &= 0xfe;   // 清中断标志
     if (I2SSR & 0x40)  // FRE 位
     {            // 帧错误,溢出错误,记录或触发一个 GPIO 翻转
         P44 = ~P44;  //
         I2SSR = 0;
     }
     ready_buffer_index = current_fill_index; // 当前缓冲区填充完成,标记为就绪
     current_fill_index ^= 1;                 // 切换到另一个缓冲区继续填充
     I2SR_DMA_Start((u8*)audio_buffer[current_fill_index], I2S_DMA_BUFFER_SIZE);// 重新启动 DMA 传输,填充另一个缓冲区
}
}DMA一直提示帧错误

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:453
  • 最近打卡:2026-07-03 08:57:36

830

主题

1万

回帖

2万

积分

管理员

积分
23929
发表于 2026-6-3 20:30:37 | 显示全部楼层
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:299
  • 最近打卡:2026-07-04 00:01:55
已绑定手机

66

主题

808

回帖

3037

积分

论坛元老

DIY玩家

积分
3037
发表于 2026-6-1 10:21:41 | 显示全部楼层
有没有可能电源问题
永怀这学徒心
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:33
  • 最近打卡:2026-07-03 08:44:26
已绑定手机

3

主题

24

回帖

123

积分

注册会员

积分
123
发表于 2026-6-1 10:27:36 | 显示全部楼层
狂热*** 发表于 2026-6-1 10:21
有没有可能电源问题

也不太确定是啥问题。我现在一直认为是第一个字节没对齐,后面DMA怎么样都对齐不了了,尝试过在初始化的时候同步一下,但是解决不了。

// 6. ★ 等待 LRCK 下降沿(飞利浦 I2S 左声道开始标志)
    //    先确保 LRCK 为高电平(空闲状态),再等待下降沿
    P22 = 1;                      //
    while (!P22);                 // 等待高电平(避免已处于低电平)
    while (P22);                  // 等待下降沿(高→低)
   
    // 7. 使能 I2S 模块
    I2SCFGH |= I2S_ENABLE;

    // 8. 启动 DMA 传输(从缓冲区 0 开始)
    I2SR_DMA_Start((u8*)audio_buffer[0], I2S_DMA_BUFFER_SIZE);
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:299
  • 最近打卡:2026-07-04 00:01:55
已绑定手机

66

主题

808

回帖

3037

积分

论坛元老

DIY玩家

积分
3037
发表于 2026-6-1 10:31:25 | 显示全部楼层
suqe*** 发表于 2026-6-1 10:27
也不太确定是啥问题。我现在一直认为是第一个字节没对齐,后面DMA怎么样都对齐不了了,尝试过在初始化的时 ...

供电初期可能有波动
延时启动外设看看
排查可能的问题
永怀这学徒心
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:33
  • 最近打卡:2026-07-03 08:44:26
已绑定手机

3

主题

24

回帖

123

积分

注册会员

积分
123
发表于 2026-6-1 10:43:14 | 显示全部楼层
狂热*** 发表于 2026-6-1 10:31
供电初期可能有波动
延时启动外设看看
排查可能的问题

意思是开机启动前延时一下?我目前是有延时50MS等待电源稳定的,可以试试加大一点看看。之前AI8051也遇到过这个问题,最后解决是改成主机模式,但是现在只能用从机模式。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:393
  • 最近打卡:2026-07-04 17:13:30

83

主题

7888

回帖

1万

积分

超级版主

积分
16827
发表于 2026-6-1 14:43:58 | 显示全部楼层
不正常时声音怎么表现? 做好输出一个1Khz的正弦波来评估。我没有遇到过异常的。

电源纹波不要太大,最好小于100mV。
I2S接口的连接线要尽量短,要尽量等长。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:33
  • 最近打卡:2026-07-03 08:44:26
已绑定手机

3

主题

24

回帖

123

积分

注册会员

积分
123
发表于 2026-6-1 15:01:13 | 显示全部楼层
梁*** 发表于 2026-6-1 14:43
不正常时声音怎么表现? 做好输出一个1Khz的正弦波来评估。我没有遇到过异常的。

电源纹波不要太大,最好 ...

正常时啥都没问题,不正常也是有时候还能听到一点声音,有时候声音都听不出来!电源纹波肯定是有点大了,因为设备是只用一个USB口供电,电流达到600~700MA等会我找个其他的东西,看看能不能输入一个正弦测试一下
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:33
  • 最近打卡:2026-07-03 08:44:26
已绑定手机

3

主题

24

回帖

123

积分

注册会员

积分
123
发表于 2026-6-1 15:21:11 | 显示全部楼层
梁*** 发表于 2026-6-1 14:43
不正常时声音怎么表现? 做好输出一个1Khz的正弦波来评估。我没有遇到过异常的。

电源纹波不要太大,最好 ...

梁工您好,我刚才又测试了一下,AI8051U和STC32G144K246是一样的情况,就是做为从机接收的时候,声音时好时坏。我已经在系统启动后延迟1S后才初始化IIS外设,IIS输出一个1K正弦波测试了,正弦波每次重新上电都不一样,主机模式就不会这样,也不懂是不是哪里没有设置好,从机全部设置为高阻输入了

点评

我用过这么多I2S的方案,从没遇到过出问题的。 I2S是一个同步数字接口,输出声音时,工作于主机方式,会稳定的输出数据流,不会出现时好时坏的。 你看一下数据标准是不是没设置对?常用标准有: 0: I2S飞利浦标准,  详情 回复 发表于 2026-6-1 16:09
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:393
  • 最近打卡:2026-07-04 17:13:30

83

主题

7888

回帖

1万

积分

超级版主

积分
16827
发表于 2026-6-1 16:09:09 | 显示全部楼层
suqe*** 发表于 2026-6-1 15:21
梁工您好,我刚才又测试了一下,AI8051U和STC32G144K246是一样的情况,就是做为从机接收的时候,声音时好 ...

我用过这么多I2S的方案,从没遇到过出问题的。
I2S是一个同步数字接口,输出声音时,工作于主机方式,会稳定的输出数据流,输入声音时,工作于从机方式,会稳定的输入数据流,不会出现时好时坏的。
你看一下数据标准是不是没设置对?常用标准有:
0: I2S飞利浦标准,
1: MSB左对齐标准,
你试下这两种标准。
直接查表输出一个1KHz正弦波测试,以此为评估标准。

I2S1、I2S2双通道同时录放音可以参考我下面的帖子:

录音 / 放音,I2S 接口的应用, 全自动:STC32G144K246-实验箱, 复读机-A率-存储在SRAM
https://www.stcaimcu.com/thread-20751-1-1.html


回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:33
  • 最近打卡:2026-07-03 08:44:26
已绑定手机

3

主题

24

回帖

123

积分

注册会员

积分
123
发表于 2026-6-1 16:26:16 | 显示全部楼层
梁*** 发表于 2026-6-1 16:09
我用过这么多I2S的方案,从没遇到过出问题的。
I2S是一个同步数字接口,输出声音时,工作于主机方式,会稳 ...

我看过您写的这个的代码了,我现在示波器实测就是主机的时候BCK会优先一点一点比LRCK跳变,作为从机的时候外部设备输出的时钟LRCK和BCK同时跳变的,不知道是不是这个时序问题导致,主要是从机的时候才有这个问题。AI8051U没有I2SINSEL 这个寄存器先,我使用的AI8051/stc32+6686,6686内部就能输出一个标准的正弦波,配置也改过了,CKCON也配置成1了,文档提到可能会出现DMA竞争。现在用别的设备改不了IIS的工作模式,不然我就直接改成主机模式就不会那么烦恼了

点评

如果担心DMA竞争,可以先不用DMA,直接中断刷新。 两个I2S接口最好使用相同的标准。 你使用的是什么ADC与DAC?请告知型号。  详情 回复 发表于 2026-6-1 17:06
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-7-5 09:48 , Processed in 0.088852 second(s), 99 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表