打印
[STM32F1]

STM32有硬件IIC,为什么很多应用,还要模拟IIC?

[复制链接]
25434|47
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
turboc|  楼主 | 2015-2-12 18:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
看到很多STM32应用,使用I2C接口,明明STM32有硬件I2C,但不知为什么这些应用还要用GPIO来模拟I2C。这是为什么呢?
评论
饭冰冰 2020-11-1 20:53 回复TA
好像使用模拟IIC的是要多一些啊! 
沙发
luobiyige| | 2015-2-12 20:52 | 只看该作者
那个硬件IIC是有BUG的 所以大家都虚拟IIC

使用特权

评论回复
板凳
jxlgxtutianya| | 2015-5-14 15:24 | 只看该作者
luobiyige 发表于 2015-2-12 20:52
那个硬件IIC是有BUG的 所以大家都虚拟IIC

楼上能分享下他的BUG在哪里不?  我现在就准备用硬件IIC,但是一直调试不通

使用特权

评论回复
地板
lanjackg2003| | 2015-5-14 15:40 | 只看该作者
虚拟I2C更好移植性,不同的芯片未必 有 或者 有那么多I2C 可以供开发者使用


一般情况,如果一直用着一块芯片,建议就用寄存器的I2C.

使用特权

评论回复
5
神的兄弟| | 2015-5-14 15:43 | 只看该作者
本帖最后由 神的兄弟 于 2015-5-14 15:45 编辑

并不是IIC硬件有问题,是ST提供的库函数在设置IIC的API函数中出现了错误而且模拟的IIC同样很好用也有很多源代码,就不用再去改库函数里的BUG了
所以用模拟IIC的多

使用特权

评论回复
6
ZDR_OK| | 2015-5-14 15:45 | 只看该作者
我也想知道BUG在哪里?这么多人都说BUG,难道ST不会知道么?到底有没有改呢?如果没有改肯定有他的道理呀。我HW,没配过IIC的程序。

使用特权

评论回复
7
zhyue12| | 2015-5-14 15:48 | 只看该作者
ST为了防止侵权,把硬件IIC整得有点复杂,还有BUG

使用特权

评论回复
8
casn| | 2016-2-15 18:39 | 只看该作者
我的系统里有几个芯片是IIC接口,刚开始用官方的库函数也花了挺长时间调试,好不容易调通了,可是待正式小批量使用时,出现了偶尔死机的情况,后来断点查看,是卡在了IIC处理上,具体在哪里也说不清楚。于是花了段时间,用模拟IIC接口方式,程序基本就稳定了。我的理解是这样的:1.硬件IIC的时序不能出差错,如果你在读写IIC时,此时若正好碰上两根线上有了干扰,时序就不对了,它等不到回信也就卡在了哪里;2.模拟IIC即使出了干扰,也只是此时读写出错,数据都不出来或写不进去,但程序还会继续运行,待下次轮到时再读写,最大的好处是不影响整个程序运行。3.至于运行时间,应该比硬件IIC要慢(慢多少我也没测过),但是慢这点时间,基本对程序没什么影响。

使用特权

评论回复
9
JY-DX-JY| | 2016-2-15 19:33 | 只看该作者
学习

使用特权

评论回复
10
exson_2006| | 2016-2-15 19:37 | 只看该作者
casn 发表于 2016-2-15 18:39
我的系统里有几个芯片是IIC接口,刚开始用官方的库函数也花了挺长时间调试,好不容易调通了,可是待正式小 ...

受教了 谢谢 大神

使用特权

评论回复
11
casn| | 2016-2-15 20:14 | 只看该作者
本帖最后由 casn 于 2016-2-15 21:15 编辑

再补充一下,为什么会卡死,硬件IIC中程序要等接口芯片的应答电平,等不到就死等,所以会卡死(估计未加超时处理所致),模拟IIC中的等待电平是cpu自己产生的,错过了就错过了,下次再来。如果说移植性,那完全在你的程序是否写得好了,和接口形式没关系。

使用特权

评论回复
12
ghost2| | 2016-2-15 23:38 | 只看该作者
主端加超时处理就可以了

使用特权

评论回复
13
ghost2| | 2016-2-15 23:39 | 只看该作者
https://bbs.21ic.com/forum.php?mod=viewthread&tid=1218016&mobile=2

使用特权

评论回复
14
crystal1987| | 2016-2-16 10:15 | 只看该作者
IIC的硬件没有问题,而是IIC的库函数存在BUG,建议你用模拟的IIC;需要的话,我有IIC的例程发你看看。

使用特权

评论回复
15
lh2008xp| | 2016-2-26 14:24 | 只看该作者
crystal1987 发表于 2016-2-16 10:15
IIC的硬件没有问题,而是IIC的库函数存在BUG,建议你用模拟的IIC;需要的话,我有IIC的例程发你看看。 ...

你是STM32硬件IIC的例程?

使用特权

评论回复
16
crystal1987| | 2016-2-29 08:43 | 只看该作者
lh2008xp 发表于 2016-2-26 14:24
你是STM32硬件IIC的例程?

没太明白“你是STM32硬件IIC的例程?”什么意思?

使用特权

评论回复
17
qq363099233| | 2016-4-22 14:04 | 只看该作者
crystal1987 发表于 2016-2-16 10:15
IIC的硬件没有问题,而是IIC的库函数存在BUG,建议你用模拟的IIC;需要的话,我有IIC的例程发你看看。 ...

能发个例程给我吗?

使用特权

评论回复
18
crystal1987| | 2016-4-22 14:30 | 只看该作者
qq363099233 发表于 2016-4-22 14:04
能发个例程给我吗?

可以,你把邮箱给我。

使用特权

评论回复
19
crystal1987| | 2016-4-22 14:31 | 只看该作者
qq363099233 发表于 2016-4-22 14:04
能发个例程给我吗?

可以,你把邮箱给我。

使用特权

评论回复
20
杨爱林林| | 2016-4-22 15:48 | 只看该作者
模拟的时序更好控制 也更方便移植  
不同单片机  也就改改io配置  还有那个delay

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

41

主题

54

帖子

0

粉丝