你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
积分商城
每日签到
关于STM32的硬件I2C
[复制链接]
fantasylankao
提问时间:2018-8-29 17:30 /
问答
是否解决:
在百度里随手搜一下STM32的硬件I2C,就会出现一堆帖子,大多是说“STM32的硬件I2C是个坑”之类,并且大多建议使用软件模拟I2C。STM32的硬件I2C问题几乎成了开发人员的共识了。。。
挺纳闷的,这一论断到底是怎样产生的?真的就没人敢用硬件I2C吗?
赞
0
收藏
0
评论
8
分享
发布时间:2018-8-29 17:30
举报
请先
登录
后回复
8个回答
freeelectron
回答时间:2018-8-29 17:36:25
a0a.1 32b0c
说的是早期的F103系列
赞
0
评论
回复
支持
反对
freeelectron
回答时间:2018-8-29 17:36:31
a0a.1 32b0c
说的是早期的F103系列
赞
0
评论
回复
支持
反对
jjbboox
回答时间:2018-8-29 18:29:32
a0a.1 32b0c
本帖最后由 jjbboox 于 2018-8-29 18:31 编辑
这是误解!
用标准库的时候硬件I2C出问题的比较多。
但是你去用一下HAL的库就知道了,一点问题都没有。
说明本身硬件上是没有问题的。
国内论坛反映的问题大部分都是用标准库,那么问题就出在标准库上。要么就是库有问题,要么就是用法有问题。
我感觉第一种的可能性非常低,多半就是标准库驱动硬件I2C的用法上面存在一知半解和错误。而且随着一大堆教学视频,已经把这些问题固化到所有学习者的认识中了。
赞
0
评论
回复
支持
反对
七哥
回答时间:2018-8-29 23:56:28
a0a.1 32b0c
硬件I2C还可以,小心谨慎的用。我在产品中使用硬件I2C,一切正常,不过只挂了一个设备。
最初STM32F103的标准固件库时,I2C的操作,有好多一旦出错while死等的情况。如果感觉用着不爽,那么把while死等改造一下,做个变量递增或递减,超时退出,不要死等,并设置返回值或其它标志变量,通知主程序,此次I2C出错了,需要进一步清除错误标志或复位I2C总线。
赞
0
评论
回复
支持
反对
feixiang20
回答时间:2018-8-30 01:05:08
a0a.1 32b0c
如果你针对这个专心去学,是不会有什么大问题的,无非就是有些地方不方便而已,你如果是掌握了熟悉了就没事了。我觉得无论是不是因为标准库的原因,熟练程度决定了你的设计方法。
赞
0
评论
回复
支持
反对
STM1024
回答时间:2018-8-30 10:45:41
a0a.1 32b0c
我觉得问题出在标准库上面,那个例子看起来就很不爽哎
赞
0
评论
回复
支持
反对
ppprrr
回答时间:2018-8-30 11:43:08
a0a.1 32b0c
个人感觉很多人是copy 网上的code,然后改来改去发现有问题,就会说硬件i2c不好用。
其实我自己觉得官方给的HAL库,没有什么问题,无论是polling,DMA,中断模式,都可以的,但是用起来的前提是要知道stm i2c的用法,要读手册和寄存器的,尤其是stm32的i2c,东西还是相对比较多,得耐心的好好看。另外,i2c的标准也要知道的,因为标准里面涉及一些细节,可能是一个正常的sync行为,而用户不知道,就当作是bug.。。。我刚从i2c坑里爬出来的,一点感想,希望有点帮助。。
赞
0
评论
回复
支持
反对
ssssss
回答时间:2018-8-30 13:42:47
a0a.1 32b0c
https://www.stmcu.org.cn/module/forum/thread-609249-1-1.html
https://www.stmcu.org.cn/module/forum/thread-609223-1-1.html
赞
0
评论
回复
支持
反对
所属标签
相似问题
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
这是误解!
用标准库的时候硬件I2C出问题的比较多。
但是你去用一下HAL的库就知道了,一点问题都没有。
说明本身硬件上是没有问题的。
国内论坛反映的问题大部分都是用标准库,那么问题就出在标准库上。要么就是库有问题,要么就是用法有问题。
我感觉第一种的可能性非常低,多半就是标准库驱动硬件I2C的用法上面存在一知半解和错误。而且随着一大堆教学视频,已经把这些问题固化到所有学习者的认识中了。
最初STM32F103的标准固件库时,I2C的操作,有好多一旦出错while死等的情况。如果感觉用着不爽,那么把while死等改造一下,做个变量递增或递减,超时退出,不要死等,并设置返回值或其它标志变量,通知主程序,此次I2C出错了,需要进一步清除错误标志或复位I2C总线。
其实我自己觉得官方给的HAL库,没有什么问题,无论是polling,DMA,中断模式,都可以的,但是用起来的前提是要知道stm i2c的用法,要读手册和寄存器的,尤其是stm32的i2c,东西还是相对比较多,得耐心的好好看。另外,i2c的标准也要知道的,因为标准里面涉及一些细节,可能是一个正常的sync行为,而用户不知道,就当作是bug.。。。我刚从i2c坑里爬出来的,一点感想,希望有点帮助。。
https://www.stmcu.org.cn/module/forum/thread-609223-1-1.html