你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于STM32 I2C的理解

[复制链接]
行色匆匆 发布时间:2017-12-26 23:41
转载:, x' ^. p+ X8 q2 G/ Y( s

3 k" U, E) Q$ ]5 W% C我用的I2C,库函数是3.0(今年4月的),例程参考了无数,手册也仔细研究了,包括勘误表,还仔细研究了一下所谓的4.0的例程(STM32F10x_AN2824_FW_V4.0.0),I2C的例程,不是SEE。但库函数和3.0的一样的,例程主要是增加了异常处理,增加了polling方式下某些关键地方关中断,而且要求I2c中断是最高优先级的,还是不稳定(不是不能用)。另外说一句,死等是调试下最好的方法,你应该感谢例程中的死等,否则好多问题一般人发现不了,一般测试都要死等(标志),没任何问题了,发布前加上超时判断,超时判断只是容错的处理方法而已。
2 S$ t& q: n- ~( F3 |; N  s, u$ A" L    最后绕了一大圈,还是回到模拟了(半天搞定。),唯一的收获就是对I2C的细节和STM32又有了深刻的理解。. D3 l$ G0 z0 w2 o: M# D. g
   所谓我认为stm32 i2c之所以受到这么多的关注,# Z8 {. h$ E/ x" X8 L5 X
1、是因为设计过于繁琐,对硬件不是很清楚的话很容易犯晕。# f: T: z- a) \5 g4 ^6 G
2、标志位设计有缺陷,这就说所谓的BUG,造成死循环或等待超时,参看勘误表。. L- g. H9 d3 Y$ L; y+ s" u2 ^3 g9 A
3、读最后一个字节的时候尤其容易出现问题。
: l( w' W2 |! ]5 x9 p4 ~. e4、关于说不能用的有点绝对,那是你软件编程有问题,但问题还是比较大的,让你心里没底。
9 [9 k& b3 d4 `. f( o; G: K  R5、如果靠纠错或为了满足I2C模块正常工作,要做额外大量的工作,就得不偿失了,因为一般I2C很多时候是用来读EEPROM的。: Z1 v5 `: m9 O$ T: g. Z& u+ k
6、I2C的协议和时序非常简单,因为是同步的,作为主设备的时候很容易实现模拟,不怕中断打断,不怕时钟节拍不固定,只要时序对就可以,这也是为啥SEEPROM采样I2C的原因,这种慢设,很容易在主程序中模拟。
' q( n- Z3 d+ n' V4 F* J1 x7、关于EEPROM应该是最没有争议的地方了,用了10几年,没发现过任何问题,即使有所谓的从设备拉低死锁总线的问题,(也是唯一听说过的问题),但我从来没测出过。处理方式呢,无非是复位从设备,或者检测到总线一直为低的时候,发送9个时钟节拍,就能解决。但这种问题用硬件I2C是不能解决的。. A  L4 I5 t& n% e$ y
8、一般的ram设计芯片或多或少都会有BUG,很正常,因为arm是搭积木出来的,而且面向对象太广(万金油),设计比较繁琐。稳定要n年,知道bug先绕过就行了。
8 f9 B4 V5 x; R+ q5 _9、补充一句,出现问题,不是在I2c总线时序上,主要是标志位上,也就是说ST自己给自己找麻烦了,如果你不查标志,算好时间,也没问题。或者说标志出问题了,也能正常读写的。不信你试试。& J6 X9 W- J9 {5 ]4 C" K" v5 O
10、建议在批量工业产品慎用STM内部I2C。无论从代码开销上,还是执行效率,无论是花费的时间、精力,还是实际的运行效果,我看不出使用硬件I2C的任何好处(用STM32芯片)。! \1 S1 y, ?2 m; J& T! k- `
   仅供参考。* z; R5 d7 Q3 s8 q1 b" Z& w  L- o
    讨论仅限于对I2C的认知,不回答程序bug之类问题,不管你用什么方式,还不能正常读写,只能说明你软件有问题,和ST没关系的,好好看I2C时序,好好看例程。
" D6 l, D# [1 o# i    欢迎对我10条建议拍砖。( q7 q. @, X, t/ k. g$ i: R
    要是ST有个民间的勘误表就好了,多少人会少走多少弯路啊。
' i0 D9 u9 j' D' P# ~/ Y+ l! }; I; l. `- O
赞 收藏 评论1 发布时间:2017-12-26 23:41

举报

1个回答
科技人生 回答时间:2018-1-12 10:15:06
STM32L476   用HAL库  硬件I2C读6轴传感器表示没毛病。   
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版