STM32有硬件IIC,为什么很多应用,还要模拟IIC?

看到很多STM32应用,使用I2C接口,明明STM32有硬件I2C,但不知为什么这些应用还要用GPIO来模拟I2C。这是为什么呢?

请先 登录 后评论

8 个回答

zhangfei

虚拟I2C更好移植性,不同的芯片未必 有 或者 有那么多I2C 可以供开发者使用

请先 登录 后评论
Jacobs

那个硬件IIC是有BUG的 所以大家都虚拟IIC

请先 登录 后评论
gyp0428

ST为了防止侵权,把硬件IIC整得有点复杂,还有BUG

请先 登录 后评论
哈里

我的系统里有几个芯片是IIC接口,刚开始用官方的库函数也花了挺长时间调试,好不容易调通了,可是待正式小批量使用时,出现了偶尔死机的情况,后来断点查看,是卡在了IIC处理上,具体在哪里也说不清楚。于是花了段时间,用模拟IIC接口方式,程序基本就稳定了。我的理解是这样的:1.硬件IIC的时序不能出差错,如果你在读写IIC时,此时若正好碰上两根线上有了干扰,时序就不对了,它等不到回信也就卡在了哪里;2.模拟IIC即使出了干扰,也只是此时读写出错,数据都不出来或写不进去,但程序还会继续运行,待下次轮到时再读写,最大的好处是不影响整个程序运行。3.至于运行时间,应该比硬件IIC要慢(慢多少我也没测过),但是慢这点时间,基本对程序没什么影响。

请先 登录 后评论
装X-BOY
并不是IIC硬件有问题,是ST提供的库函数在设置IIC的API函数中出现了错误而且模拟的IIC同样很好用也有很多源代码,就不用再去改库函数里的BUG了
所以用模拟IIC的多
请先 登录 后评论
theuit

我也想知道BUG在哪里?这么多人都说BUG,难道ST不会知道么?到底有没有改呢?如果没有改肯定有他的道理呀。我HW,没配过IIC的程序。

请先 登录 后评论
linzw123

。。。我遇到过有芯片,模拟I2C无论如何都不能准确配置,只有硬件i2c才能配置成功的情况,所以,两种都要会才是硬道理

请先 登录 后评论
追忆似水年华

的确模拟I2C好用。但是在我看来在一个72MCortex-M3MCU上这样做非常不妥。一般来说I2C是一种慢速总线就算工作在400kHz的快速模式上I2C传送每个字节仍需要至少23us——还没有计算地址、起始信号和结束信号的发送。如果使用GPIO模拟的I2C23usCPU时间都在空转中浪费了而这23us已经可以做不少的事情了所以在STM32I2C还是使用硬件为佳——虽然它多多少少有点缺陷。

请先 登录 后评论
  • 8 关注
  • 0 收藏,6156 浏览
  • wangwang 提出于 2018-01-18 02:43

热门话题更多