• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

STM32中,大家为什么不推荐使用硬件IIC,有什么问题吗?

new world 2017-08-21 浏览量:9112
STM32中,大家为什么不推荐使用硬件IIC,有什么问题吗?
-1 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  •        并不是硬件接口有问题,而是F103的标准库的硬件IIC忙等待判断有问题,在主机发送了一个字节的数据之后会卡死在忙等待判断。这是标准库的历史遗留问题。后来在F103和F4、F7的HAL库中修复了这个BUG,用HAL库驱动硬件IIC接口是没有任何问题的。不过我个人比较喜欢模拟IIC,我用模拟IIC驱动过非常多的IIC器件了,如DS3231、AT24C512、BMP280、ADXL345等等,用模拟IIC完全没有问题,不过大牛们说模拟IIC也有不少缺陷,如占用CPU高、无法使用DMA等等。

    • 发布于 2017-08-21
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:7
  • 答案转自:https://www.zhihu.com/question/30835089



    听说为了规避菲利普专利问题,设计的特别复杂,导致特别容易错过反馈信号,一中断反馈信号没了…整个程序就崩溃了。现在hal库应该是解决了这个问题…解决方法是关闭所有中断……


    不过,还是用GPIO模拟吧。
    • 发布于2017-08-21
    • 举报
    • 评论 0
    • 0
    • 0

  • 大家对ST的IIC褒贬不一,其实IIC是一个非常庞大的协议,ST已经尽力将协议做进去了,但是出来的效果很差,很多用户感觉非常难用(在库文件时代和寄存器时代),所以大家就都喜欢使用模拟IIC,后来库文件和CubeMx逐渐把IIC的软件配置完善了,但是这个说法仍然被继承下来。

    现在澄清下,ST的IIC挺齐全的。

    • 发布于2017-08-21
    • 举报
    • 评论 0
    • 0
    • 0

  • 他们说有问题,我是没去深究,一直用的模拟IIC,也不知道硬件IIC问题究竟在哪。

    IIC的速率有限,就算用硬件IIC单片机也没减轻什么负担,用模拟的还自己自己想怎么写就怎么写,只要时序对,写出花来都行。

    • 发布于2017-08-21
    • 举报
    • 评论 0
    • 0
    • 0

  • 其实功能上面都差不多的,只是以前的stm32库函数不完善,会有些bug,因此大家都习惯用模拟的iic

    硬件iic实现请参考http://www.stmcu.org/module/forum/thread-609223-1-3.html

    • 发布于2017-08-22
    • 举报
    • 评论 0
    • 0
    • 0

  • 硬件i2c没毛病,推荐用寄存器操作
    • 发布于2017-08-22
    • 举报
    • 评论 0
    • 0
    • 0

  • 我用hal库的IIC可以正常驱动MPU6500,还蛮方便的。感觉模拟的移植的时候好烦。
    • 发布于2017-08-31
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

STM32中,大家为什么不推荐使用硬件IIC,有什么问题吗?