[APM32F1] APM32F103系列的I2C外设,在主模式下发生仲裁失败时要如何处理?

[复制链接]
 楼主| OceanGaze 发表于 2025-5-7 19:21 | 显示全部楼层 |阅读模式
APM32F103系列的I2C外设,在主模式下发生仲裁失败时要如何处理?

平时使用APM32F103的I2C主模式仅访问一下eeprom或者温度传感器,编写的代码相对简单,操作流程也成熟,使用多年也未出现bug。
最近在考虑使用I2C外设做双机通讯,又仔细阅读了datasheet觉得之前忽略的仲裁中断必须考虑进来,
所以当发生I2C总线仲裁失败后,我的I2C外设还要怎么处理?
是直接返回,择时再发起start位开始发送,还是需要关闭I2C外设deinit一下,再开始重新开始发送呢?

有之前实际应用过的网友们给分享些实战经验,在此谢过!

i2c仲裁错误中断01.jpg

阳光爆裂 发表于 2025-5-8 09:31 | 显示全部楼层
不用吧!
APM32F103是使用查询方式来实现的I2C。你按步操作就行了。
Gfan 发表于 2025-5-8 16:57 | 显示全部楼层
直接返回,择时再发起start位开始发送哈,仲裁错误一般分两种情况:

单主机的情况下出现,一般是硬件问题,需要深入研究具体出现的问题。

多主机情况下出现,需要在软件层控制不同主机的访问时机
银河漫步 发表于 2025-5-9 10:47 | 显示全部楼层
还真没有考虑过这个错误中断的处理。
jobszheng 发表于 2025-5-9 15:46 | 显示全部楼层
实现简单,做稳定看来还需要一个较长的时间呀!
这块我也没有考虑过
寂静小夜曲 发表于 2025-5-12 17:59 | 显示全部楼层
按流程实现。自己做一个状态机,当遇到仲裁失败,就返回到初始化状态
记忆花园 发表于 2025-5-12 18:05 | 显示全部楼层
I2C的内容还这么多
 楼主| OceanGaze 发表于 2025-6-3 19:14 | 显示全部楼层
Gfan 发表于 2025-5-8 16:57
直接返回,择时再发起start位开始发送哈,仲裁错误一般分两种情况:

单主机的情况下出现,一般是硬件问题 ...

谢谢版主回复。
我们是在多机情况下,虽然还没有遇到,但要处理这个异常情况。
SpiritSong 发表于 2025-6-5 14:38 | 显示全部楼层
I2C总线不是要求一主多从吗?
为什么会出现多主仲裁的情况呢?
幻影书记 发表于 2025-6-5 16:55 | 显示全部楼层
嘿嘿 忽略这个情况
jobszheng 发表于 2025-6-5 22:13 | 显示全部楼层
在工业控制项目里面,所有的错误、异常必须处理。
latera 发表于 2025-6-7 22:29 | 显示全部楼层
硬件完成的吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

31

帖子

0

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