再问STM32的硬件I2C与软件模拟

2019-12-12 18:09发布

坛里的帖子看了很多,大致了解了STM32的硬件I2C的确有一些BUG,或者说使用时有很多不方便满足的要求,比如DMA加最高中断。所以思考是否使用模拟方式替代。但有种观点是模拟I2C太耗资源。我认真分析了下,其实大部分I2C读写操作在程序中都是顺序类型的,及当读、写I2C从机时,必须读、写到想要的数据才能继续往下执行,如果其中出错,还必须重新来过。所以不管是用硬件查询,中断,DMA等方式还是模拟方式,都必须等待从机完成,所花时间决定与I2C速度和从机响应速度。如果可以这么理解,是否可以说其实模拟方式没有任何风险,速度差不多,故而是最好的选择?

望对这个问题有经验的朋友们不吝赐教!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
93条回答
Zwiic
1楼-- · 2019-12-14 10:24
 精彩回答 2  元偷偷看……
szszjdb
2楼-- · 2019-12-14 11:58
Zwiic 发表于 2017-3-3 17:53
用的模拟,还没用过硬件的。

希望更多对硬件I2C了解的朋友给些意见! 多谢大家了!
maxwell_lee
3楼-- · 2019-12-14 14:34
建议去看一下STM32系列的芯片缺陷文档,里面有详细的应对或者是绕开的措施。
szszjdb
4楼-- · 2019-12-14 17:13
maxwell_lee 发表于 2017-3-3 22:17
建议去看一下STM32系列的芯片缺陷文档,里面有详细的应对或者是绕开的措施。 ...

文档早看过,很多朋友几年之前也研究过了,ST的文档并没有公开承认此问题,如图。STM32众多外设, 唯I2C被诟病之多,实在不是被黑呀!
本帖目的不是接力吐槽,而是希望找到一个较好的方法去使用I2C。望知者直言,谢谢!
OneRain
5楼-- · 2019-12-14 17:18
ST的硬件I2C我调通过,没有使用I2C中断,而且其他中断也比较少,而且I2C使用的是查询来实现通信的!!!!那么ST的问题就是硬件I2C很容易出现一些莫名其妙的问题,比如用手触碰一下通信总线,基本就死了,而且死的现象是,某一个标志位寄存器和总线的现象不符合,举个例子,比如忙标志位置位,但是总线却都是高电压。。。。要么重启硬件I2C,但是有时候并不一定会解决问题,还有就是同一个程序,在不同的MCU表现不太一样....还有就是同一个MCU今天行,完全没问题,说不定明天就又不行,不行的现象就是查询某些标志位的时候,和总线产生的现象不符合.....所以最后用模拟的,稳定,安全!!!
szszjdb
6楼-- · 2019-12-14 23:16
 精彩回答 2  元偷偷看……

一周热门 更多>