STM32
直播中

靓仔峰

10年用户 1229经验值
擅长:可编程逻辑
私信 关注
[问答]

STM32L4 I2C主从通信,第一次通信成功,第二次只检测一次中断就卡住了为什么?

STM32L4 通过I2C方式组成主机——从机通信(主机从机都是stm32L431),主机给从机第一次发送消息能够成功,但是从机返回信息就会失败。
主机给从机第一次发送消息后,不让从机响应。主机第二次发送信息时失败,此时从机只能接收第二次发送信息的第一个中断,然后就卡死。
代码是有Cube MX生成,调用标准库函数。
主机发送及接收使用polling方式,从机接收使用中断触发,从机发送使用Polling方式。

回帖(2)

冷静

2024-3-31 09:46:16
经验之谈,大约有2个重点:
1.进中断后、处理数据之前,先处理异常标志(我的工程设成异常不产生中断)
2.开销一个定时器,超时后重新处理收发。

100k传输,0.5米传输线,貌似总会有错,甚至不产生中断。
也许打开异常中断就可以省个定时器,你可试试,分享一下结果。 
举报

王丹丹

2024-3-31 09:46:19
主机发送后,没有进行等待IIC始终波形,就去监听接收了。主机发送后,延时500ms后,能够接收到从机数据了。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分