[N32G430] N32G430 I2C从机收发的中断问题

[复制链接]
550|4
prestocn 发表于 2025-11-9 19:48 | 显示全部楼层 |阅读模式
收发程序基本就是SDK提供的例程,问题是:一旦有I2C从机的发送,中断就一直处于不断响应的状态。怀疑有中断标志没有被清除,但是从手册上看I2C_Last_Event_Get()已经可以清除任何中断事件。我在void I2C_IRQ_HANDLER(void)中加入GPIO_Pins_Set()和GPIO_Pins_Reset(),得到波形如下,

i2c.png
从时间上看,设备地址和寄存器地址的接收都还还好,应该从I2C从机发送数据开始有未屏蔽并且未处理的中断。

I2C的从机功能是没有问题,但是这样占用mcu导致其它实时任务很难正常处理。有没有办法处理这种中断情况,例如清除所以中断。另外,在 default:      I2C_ON(I2C_DEV);处设置断点,得到未处理的last_event值为0.
onlycook 发表于 2025-11-13 16:19 | 显示全部楼层
中断标志未完全清除吧
jcky001 发表于 2025-11-13 17:19 | 显示全部楼层
I2C 硬件状态机可能在发送完成后仍处于活跃状态,需通过软件复位或重新配置寄存器复位。
七毛钱 发表于 2025-11-13 16:22 | 显示全部楼层
检查中断使能配置,仅启用必要的中断源,避免冗余触发
没有太阳的晴天 发表于 2025-11-13 16:23 | 显示全部楼层
可尝试硬件复位 I2C 模块
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

13

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部