**声小了~~~不过有二极管的隔离就造成了不安全访问

[复制链接]
8169|54
hotpower 发表于 2008-2-21 20:42 | 显示全部楼层

**声小了~~~不过有二极管的隔离就造成了不安全访问

任1个MCU不可能知道I2C总线(SDA/SCL)的状态~~~

应该和双口RAM等原理,1设备访问时应该封锁其他设备!!!

或用软件来进行总线的裁决。。。
awey 发表于 2008-2-21 20:49 | 显示全部楼层

我就知道 hotpower 看错电阻了,哈哈。。

I2C容许一夫多妻,但一妻多夫是非法的,除非偷着干。。。
alice84 发表于 2008-2-21 20:52 | 显示全部楼层

一妻多夫不非法

电视上看过我国某个地方有
bg6nw 发表于 2008-2-21 20:52 | 显示全部楼层

两只MCU中间有一根口线相连

就是商量商量谁先搞
香水城 发表于 2008-2-21 20:54 | 显示全部楼层

这不是一妻多夫,而是一仆二主

如果楼主使用STM32这种具有多主功能(Multimaster capability)的MCU,可以很简单地把两个MCU的I2C直接相连再连上I2C的EEPROM,如果线路不是太长SDA和SDL分别放一只(共2只)上拉电阻即可;不必加任何二极管。

2楼防止同时读写的信号线也属多余,因为I2C的多主结构自己会指示是否有冲突。

当然,如果使用支持多主功能的MCU,两个甚至多个MCU可以直接通信,不必通过多余的EEPROM。
alice84 发表于 2008-2-21 20:58 | 显示全部楼层

你们说的一妻多夫是?

妻--FM
夫--MCU?

gyt 发表于 2008-2-22 13:25 | 显示全部楼层
sfofyyy 发表于 2008-2-22 13:37 | 显示全部楼层

干吗不直接两个mcu之间搞一个协议,岂不省心?

孤星119 发表于 2008-2-22 14:14 | 显示全部楼层
后学 发表于 2008-2-22 17:22 | 显示全部楼层

一主一从,俩单片机握手,占用一个I/O,

程序匠人 发表于 2008-2-22 19:21 | 显示全部楼层

只要注意两个要点,就可以

1、总线仲裁。方法很多,比如加入仲裁线。或者两颗MCU进行其它约定。目的只有一个,就是避免同时访问。

2、SDA 和 SCL 口要做成 “线与”。即,当一个MCU要对该口置1时,应该设置为高阻态,通过外部上拉电阻拉高就可以了,这样可以避免另一个MCU把该口拉低时,二者的电平冲突。许多单片机IO口都可以实现“三态”的。如此,SDA 和 SCL 口需要外接上拉电阻。至于二极管,就没有必要了。
bg6nw 发表于 2008-2-22 20:29 | 显示全部楼层

实在惭愧的紧,用了很多画蛇添足的零件,误导了LZ

前段时间开发一个产品时候,想到的一个内部和外部都可以访问EEPROM的小电路,具体是这样的:某机器的MCU在初始化时需读取EEPROM内的数据,但是EEPROM内的数据还需要用外接的一个小手持设备定期更新,更新数据是在机器停机状态下的。这里就需要数据线和电源隔离一下,如不隔离的话手持设备将会给整个机器供电。电路如下:

前日看到LZ提问,没加思索的随便改了改便上传了,呵呵,严重误导了。应该学习chen guan xi 老弟,在此致歉~~

还是匠人姐姐说的对,直接线与,加仲裁,即可。
兴隆 发表于 2008-2-23 19:07 | 显示全部楼层

以前我设计的一个报警器,用51和2051,主要是需要双串口。

2个CPU靠的是IIC总线通信。是把2051模拟成一个可读写的I2C器件。主CPU就像读写24C08一样,读写2051,只是2051的I2C地址和24C08不同。
xyq.yz 发表于 2008-2-23 21:07 | 显示全部楼层

keyi

i2c总线是多主机总线,这意味着两台或多台主机可以连到同一条I2C总线上.因此总线接口上2片或多片MCU通过同I2C读写没有问题.下一步是解决对24C02访问的资源争用问题.通过I2C协议的IC2空闲检测和24C02忙时无应答机制,很容易解决这个问题.
zlgmcu 发表于 2008-2-27 08:34 | 显示全部楼层

麻烦,不就是双机交换数据吗?用全双工UART多简单呀!

I2C总线是NXP(原Philips)发明的2线制串行通信总线。因为其实现的简单性和使用上的方便性等原因而得到广泛的应用。I2C也支持多主机通信,但处理起来还是显得有些麻烦。针对楼主的“双机交换数据”的意图,可考虑采用全双工UART,收发互不干扰,处理起来要容易得多。
yewuyi 发表于 2008-2-27 08:46 | 显示全部楼层

同意LS

wjhhhh 发表于 2008-2-27 09:30 | 显示全部楼层

交换数据有可能是非实时的,这种思路有实用价值。

用全双工UART通讯,恐怕两端都得在同一时间作这件事。
ljh2269 发表于 2008-2-27 09:55 | 显示全部楼层

不用附加多于电路把

只要忙检测做好了应该没问题吧!我感觉是
xynicke 发表于 2008-2-27 23:22 | 显示全部楼层

re

两个单片机直接通信不能交换数据吗?
xieyuanbin 发表于 2008-2-28 08:54 | 显示全部楼层

I2C本身有总线竞争,为什么要搞那么复杂?

难道两个MCU不同时上电吗?软件完全可以解决的问题。两根线,两个上拉电阻就可以了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部
0