你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
As you like 提问时间:2021-11-29 01:14 / 未解决

STM32L4 通过I2C方式组成主机——从机通信(主机从机都是stm32L431),主机给从机第一次发送消息能够成功,但是从机返回信息就会失败。

主机给从机第一次发送消息后,不让从机响应。主机第二次发送信息时失败,此时从机只能接收第二次发送信息的第一个中断,然后就卡死。

代码是有Cube MX生成,调用标准库函数。

主机发送及接收使用polling方式,从机接收使用中断触发,从机发送使用Polling方式。

收藏 评论5 发布时间:2021-11-29 01:14

举报

5个回答
废鱼 回答时间:2021-11-29 09:55:47

楼主应该明确一下I2C通讯的设备型号,从I2C协议上理论分析,可能是通讯协议不正确导致。可以通过示波器或者逻辑分析仪进行波形分析,可以解决问题。

moluxiyan 回答时间:2021-11-29 10:46:46

拿逻辑分析仪看看有没有ASK

butterflyspring 回答时间:2021-11-29 12:03:29
I2C通讯中,从机发送数据是被动发送数据,不是自己决定的。根据主机发送过来第一字节第0位决定,所以从机根据命令准备好需要给出的数据。 建议按照I2C协议检查一下代码逻辑是否合适。
As you like 回答时间:2021-11-30 21:27:31

找到原因了:主机发送后,没有进行等待IIC始终波形,就去监听接收了。主机发送后,延时500ms后,能够接收到从机数据了。

但是只能接收一次,再次读取就会出现error。又困扰到我了

yundm 回答时间:2021-12-15 21:26:33
经验之谈,大约有2个重点:
1.进中断后、处理数据之前,先处理异常标志(我的工程设成异常不产生中断)
2.开销一个定时器,超时后重新处理收发。

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

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版