你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
这是误解!
用标准库的时候硬件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