搜索
bottom↓
回复: 15

一主一从的IIC是否有必要用开漏口

[复制链接]

出0入0汤圆

发表于 2020-4-8 13:23:16 | 显示全部楼层 |阅读模式
最近有个项目需要用到Eeprom,但是所选芯片没有IIC接口,开漏输出也只有debug口才有。
一般来说,多个设备连接,才会有冲突使用线与逻辑进行冲突避免。单主单从,应该是不需要;

但是分析会存在一个间隙时间,也就是主设备发出数据后,还没切换为输入模式,这个时候主设备推挽输出高,从设备拉地,会有瞬间短路情况存在。
实际实现没有试过,会不会有问题,不知道哪位坛友有尝试过推挽的iic没

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入93汤圆

发表于 2020-4-8 13:32:51 来自手机 | 显示全部楼层
SCL可以推挽,SDA如何推挽?发送了还要读ACK呢

出0入442汤圆

发表于 2020-4-8 13:36:05 | 显示全部楼层
没那么脆弱。我为了保证时序,scl拉低准备输入时每个bit都会强制高一下,以确保总线状态正常,因为示波器发现过如果单纯靠上拉电阻去拉如果负载很重(比如挂了多个设备,且为了抗干扰给ic输入接了10nf滤波电容),在电平切换时有可能出现台阶,造成device认为stop了。

出0入0汤圆

发表于 2020-4-8 13:37:54 | 显示全部楼层
建议还是依照手册上的规范与建议去做较佳,照原厂手册去用若出了问题可以找原厂,相反的就得自行处理了。

出0入0汤圆

发表于 2020-4-8 13:46:53 | 显示全部楼层
驱动eprom , scl 推挽输出, sda要设置输入和输出状态. 注意切换输入输出时机, 就没什么问题,  

出0入0汤圆

 楼主| 发表于 2020-4-8 14:30:03 | 显示全部楼层
xiaomu 发表于 2020-4-8 13:46
驱动eprom , scl 推挽输出, sda要设置输入和输出状态. 注意切换输入输出时机, 就没什么问题,   ...

我说的那个切换间隙,会不会存在问题。虽然就短路一小会儿,但是可能会影响寿命吧

出0入0汤圆

发表于 2020-4-8 17:31:02 | 显示全部楼层
qingyin2009 发表于 2020-4-8 14:30
我说的那个切换间隙,会不会存在问题。虽然就短路一小会儿,但是可能会影响寿命吧 ...

eerpom iic接口时开漏的, 没有高电平驱动能力, 你的scl拉低之后,操作sda的输入/输出,没有问题,

出615入1076汤圆

发表于 2020-4-8 18:02:07 | 显示全部楼层
類似 3 線 SPI(SDI 和 SDO 共用一根線),有小概率衝突可能性,所以 CPU 和 設備之間 要串電阻,二十幾歐到四五百歐。

出100入113汤圆

发表于 2020-4-8 19:42:09 | 显示全部楼层
必须啊,不然ACK冲突!

出0入42汤圆

发表于 2020-4-8 23:37:25 | 显示全部楼层
如果MCU的IO可以配成推挽输出和浮空(或上拉)输入模式,就能当开漏的用了

目前绝大多数MCU应该都可以

出0入0汤圆

发表于 2020-4-9 00:39:00 来自手机 | 显示全部楼层
I2C接口总是在SCL的上升沿读取SDA,在SCL的下降沿写入SDA。
原则上是可以的:只要在接收从机数据和应答之前把SDA切换为输入,在从机释放SDA线之后再切换为驱动输出。
准确来说应该在SCL第8个时钟下降沿之前,在第9个时钟下降沿之后。
不过,如果对I2C总线不够了解,不建议尝试。
  

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2020-4-9 06:05:04 | 显示全部楼层
我只想说一句,SDA 既是输入,也是输出,其余自己考虑,不要问我。

出0入0汤圆

 楼主| 发表于 2020-4-9 10:16:42 | 显示全部楼层
not_at_all 发表于 2020-4-9 06:05
我只想说一句,SDA 既是输入,也是输出,其余自己考虑,不要问我。

这不是没办法嘛

出0入0汤圆

 楼主| 发表于 2020-4-9 10:17:12 | 显示全部楼层
laoshuhunya 发表于 2020-4-9 00:39
I2C接口总是在SCL的上升沿读取SDA,在SCL的下降沿写入SDA。
原则上是可以的:只要在接收从机数据和应答之前 ...

那就是可以使用,只是得把时序整好

出0入0汤圆

发表于 2020-4-10 10:31:39 | 显示全部楼层
不用开漏可以的,只要注意切换SDA输入输出

出0入0汤圆

发表于 2020-4-10 12:44:12 | 显示全部楼层
不需要开漏也可以的,只要是个io就行。

输出低电平:输出0->方向改为输出
输出高电平:方向改为输入
i2c是线与结构,原装上任何设备都不能输出驱动,高电平是上拉电阻来保证的。包括scl。
总线加上拉。这样无论如何都不会有io竞争关系。像11楼的数据明显看到有电平不高不低的竞争现象,是程序写的问题。

回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 05:46

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表