打印

i2c总线问题

[复制链接]
2437|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我是土匪|  楼主 | 2012-9-18 17:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
joyme| | 2012-9-18 17:43 | 只看该作者
写应该没问题(数据线在从机是输入即高阻态,所以多几个器件也是可以驱动的),读的时候数据线上会有竞争(甚至损坏器件,比如有两个器件要拉高,一个器件想拉低,就可能出现器件这个IO口损坏),所以数据不能保证是对的

使用特权

评论回复
板凳
我是土匪|  楼主 | 2012-9-18 17:49 | 只看该作者
写应该没问题(数据线在从机是输入即高阻态,所以多几个器件也是可以驱动的),读的时候数据线上会有竞争(甚至损坏器件,比如有两个器件要拉高,一个器件想拉低,就可能出现器件这个IO口损坏),所以数据不能保证是 ...
joyme 发表于 2012-9-18 17:43


读的时候,读取的数据正确性难以保证,这个可以理解。
你说的损坏IO,这个不会吧,高电平又不会叠加。

使用特权

评论回复
地板
我是土匪|  楼主 | 2012-9-18 20:25 | 只看该作者
I2C是双向协议,成功概率应该不高。

使用特权

评论回复
5
ningling_21| | 2012-9-18 20:26 | 只看该作者
应该不会损坏器件,低电平优先...

使用特权

评论回复
6
jlass| | 2012-9-19 08:51 | 只看该作者
写正确,读错误
用OC门(无高电平驱动)不会损坏器件,用推挽(包括其他能输出1的方式)会损坏器件

使用特权

评论回复
7
我是土匪|  楼主 | 2012-9-19 09:24 | 只看该作者
写正确,读错误
用OC门(无高电平驱动)不会损坏器件,用推挽(包括其他能输出1的方式)会损坏器件
jlass 发表于 2012-9-19 08:51


i2c是双向协议,写也可能会出错吧

使用特权

评论回复
8
amwrdfe| | 2012-9-19 09:35 | 只看该作者
写不会出问题,
看看市面上的1拖N的编程器就知道了,
写的时候是一起写的,校验是单独校验。

使用特权

评论回复
9
我是土匪|  楼主 | 2012-9-19 09:43 | 只看该作者
如果只执行写操作。

想到一种非常规做法,一般写I2C,写完byte要等待一个ACK,这个过程是主机读操作,将等待ack的操作改成适当的延时时间,就在写I2C的过程避免了读操作。

这种方法个人认为可以同时操作多个从机相同的设备,但不知道设备挂的多了,I2C(IO模拟)的驱动能力能否满足写的执行?

使用特权

评论回复
10
joyme| | 2012-9-19 09:46 | 只看该作者
3楼,看清楚啰,不是电压叠加损坏器件,而是电流大,而且我说的是可能
因为有多个器件输出高,而某一个器件要输出低,也就是多个器件的电流会流向要拉低的器件IO
一般IO口承受能力也就几十mA,几个强上拉就可以干掉它的

使用特权

评论回复
11
optical85| | 2012-9-19 09:47 | 只看该作者
多加几个IO口,分路控制

使用特权

评论回复
12
我是土匪|  楼主 | 2012-9-19 10:18 | 只看该作者
多加几个IO口,分路控制
optical85 发表于 2012-9-19 09:47


这个方法想到了,多路IO模拟I2C,并行操作。

使用特权

评论回复
13
rockli| | 2012-9-19 10:50 | 只看该作者
3楼,看清楚啰,不是电压叠加损坏器件,而是电流大,而且我说的是可能
因为有多个器件输出高,而某一个器件要输出低,也就是多个器件的电流会流向要拉低的器件IO
一般IO口承受能力也就几十mA,几个强上拉就可以干掉 ...
joyme 发表于 2012-9-19 09:46


你还不懂I2c的协议,高电平靠外面的上拉电阻,器件内部就是个MOS开漏输出。没有强上拉。

使用特权

评论回复
14
joyme| | 2012-9-19 11:34 | 只看该作者
这跟协议没有关系,是硬件,I2C的器件有很多种,也有IO模拟的,我说的是可能,没有说一定

使用特权

评论回复
15
我是土匪|  楼主 | 2012-9-19 13:23 | 只看该作者
本帖最后由 我是土匪 于 2012-9-19 13:34 编辑

按照2楼的提示,看了手册,从设备在被读取的时候最大消耗电流2-3mA.况且这个电流是整个从设备的参数。
IO承受20 MA问题是不大的,所以七八个从设备问题不大,不会烧坏IO。况且只进行写操作,想I2C等待判断ACK的操作替代为单纯的延时操作。

使用特权

评论回复
16
我是土匪|  楼主 | 2012-9-19 14:14 | 只看该作者
再发疑问:
I2C方式烧录EEPROM,如何实现对写入正确性的校验?不会是仅仅通过I2C的ACK吧.
写进去,再读回来是很好的办法,不过效率太低了。

专用的烧录器是有校验功能的,不知道它是怎么实现的。

使用特权

评论回复
17
3htech| | 2012-9-19 15:07 | 只看该作者
10# joyme
IIC器件都是OC滴,怎么会出现多个强上拉呢???

使用特权

评论回复
18
3htech| | 2012-9-19 15:10 | 只看该作者
14# joyme
没有这个可能。
    首先,如果MCU模拟IIC,那么,MCU的引脚必须是开漏,或者弱上拉,不能使用推挽,否则IIC从器件不能拉低SDA线。
    如果MCU有硬件IIC,那更是一个OC了。

    IIC从器件都是OC。没有例外。

使用特权

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

本版积分规则

个人签名:抢钱、抢粮、抢女人! https://shop105961755.taobao.com/index.htm?spm=2013.1.w5002-3338070316.2.f652157E8BRIA

226

主题

1761

帖子

30

粉丝