OceanGaze 发表于 2025-5-7 19:21

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

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

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

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



阳光爆裂 发表于 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的内容还这么多
页: [1]
查看完整版本: APM32F103系列的I2C外设,在主模式下发生仲裁失败时要如何处理?