fantasyhpu 发表于 2018-8-29 17:30:29

关于STM32的硬件I2C

在百度里随手搜一下STM32的硬件I2C,就会出现一堆帖子,大多是说“STM32的硬件I2C是个坑”之类,并且大多建议使用软件模拟I2C。STM32的硬件I2C问题几乎成了开发人员的共识了。。。
挺纳闷的,这一论断到底是怎样产生的?真的就没人敢用硬件I2C吗?

freeelectron 发表于 2018-8-29 17:36:25

说的是早期的F103系列

freeelectron 发表于 2018-8-29 17:36:31

说的是早期的F103系列

jjbboox 发表于 2018-8-29 18:29:32

本帖最后由 jjbboox 于 2018-8-29 18:31 编辑

这是误解!
用标准库的时候硬件I2C出问题的比较多。
但是你去用一下HAL的库就知道了,一点问题都没有。
说明本身硬件上是没有问题的。
国内论坛反映的问题大部分都是用标准库,那么问题就出在标准库上。要么就是库有问题,要么就是用法有问题。
我感觉第一种的可能性非常低,多半就是标准库驱动硬件I2C的用法上面存在一知半解和错误。而且随着一大堆教学视频,已经把这些问题固化到所有学习者的认识中了。

toofree 发表于 2018-8-29 23:56:28

硬件I2C还可以,小心谨慎的用。我在产品中使用硬件I2C,一切正常,不过只挂了一个设备。
最初STM32F103的标准固件库时,I2C的操作,有好多一旦出错while死等的情况。如果感觉用着不爽,那么把while死等改造一下,做个变量递增或递减,超时退出,不要死等,并设置返回值或其它标志变量,通知主程序,此次I2C出错了,需要进一步清除错误标志或复位I2C总线。

feixiang20 发表于 2018-8-30 01:05:08

如果你针对这个专心去学,是不会有什么大问题的,无非就是有些地方不方便而已,你如果是掌握了熟悉了就没事了。我觉得无论是不是因为标准库的原因,熟练程度决定了你的设计方法。

stm1024 发表于 2018-8-30 10:45:41

我觉得问题出在标准库上面,那个例子看起来就很不爽哎

priestyoyo 发表于 2018-8-30 11:43:08

个人感觉很多人是copy 网上的code,然后改来改去发现有问题,就会说硬件i2c不好用。
其实我自己觉得官方给的HAL库,没有什么问题,无论是polling,DMA,中断模式,都可以的,但是用起来的前提是要知道stm i2c的用法,要读手册和寄存器的,尤其是stm32的i2c,东西还是相对比较多,得耐心的好好看。另外,i2c的标准也要知道的,因为标准里面涉及一些细节,可能是一个正常的sync行为,而用户不知道,就当作是bug.。。。我刚从i2c坑里爬出来的,一点感想,希望有点帮助。。

wwwheihei 发表于 2018-8-30 13:42:47

https://www.stmcu.org.cn/module/forum/thread-609249-1-1.html

https://www.stmcu.org.cn/module/forum/thread-609223-1-1.html
页: [1]
查看完整版本: 关于STM32的硬件I2C