Two different Arduino's: two power sources, common ground

I want to have two different Arduino boards that share an I2C device (EEPROM/FRAM storage), but are powered from different sources. One will always be on, and will sleep a lot (vehicle battery), the other one will only run when the vehicle is on (same power source, but going through a circuit which is only active when the engine is running).

Can I have two different boards that share a common ground (which I need so that they can both access the I2C device, right?), but they have different Vin sources?

Thanks!

They can certainly share a common GND.

Are you sure there cannot be a connection between the two Vins - a connection could be a problem.

...R

Why two Arduinos? And don't say because the engine could be on or off.

Mark

osmosis311:
I want to have two different Arduino boards that share an I2C device (EEPROM/FRAM storage), but are powered from different sources. One will always be on, and will sleep a lot (vehicle battery), the other one will only run when the vehicle is on (same power source, but going through a circuit which is only active when the engine is running).

Can I have two different boards that share a common ground (which I need so that they can both access the I2C device, right?), but they have different Vin sources?

Thanks!

Make sure the one that is powered down does not have any signals on any of it's input while it is powered down.

If you only connection between the Arduino's is SCL, SDA, connect the pullup resistors to the powered Down Arduino. this will inhibit any I2C communications until both Arduino's are powered up.

If you need to access I2C devices while the other Arduino is powered down, you will have to use a bus isolater circuit. something like thist ti I2C bus translator

Chuck.

Wellllll, that is the reason!

One board will be powered whether the engine is on or not, and the other board, since it draws a lot more power, will only be running when the engine is running.

Any better way to design it?

Thanks Chuck.

Where do the pull up resistors go on the powered down arduino? Between scl/sda and ground?

Also, why would there be an issue accessing the i2c device while the other arduino is powered down? Can you elaborate on that?

Thanks!

I would use diodes to isolate each side.
Top diode lets either side supply power.
SCL diodes let master pull clock low.
SDA diodes let master pull SDA low, and lets slave pull SDA low when it sends data out.
Use fast, low Vf schottky diodes.

Thanks!

Yikes, that sounds slightly tricky. Not that I'm not up for a challenge, but would love to simplify the design.

Maybe I can change my approach, only have the EEPROM hooked up to the "sleepy" Arduino, and communicate from the "active" Arduino to it via Serial.

Any reason that wouldn't work?

Will the Serial buffer still receive even if the Arduino is sleeping? Or incoming data will be ignored/discarded while it's sleeping?

How is that different? You still need to isolate the inactive drivers from the active drivers, whether Serial, I2C, or SPI.

If I simply have two wires between the Arduino's used for Serial, and one sleeps sometimes and the other does not, I still need protection and isolation between them?

CrossRoads:
I would use diodes to isolate each side.
Top diode lets either side supply power.
SCL diodes let master pull clock low.
SDA diodes let master pull SDA low, and lets slave pull SDA low when it sends data out.
Use fast, low Vf schottky diodes.

I don't agree with this schematic,

Lets take this situation:
VCC1=0v
SCL1=0V
SDA1=0V

VCC2=5V
SCL2=5V
SDA2=5V

Diodes are numbered left top to left bottom D1..D4, Right Top to Right Bottom D5..D8
Resistors numbered From Left to right R1..R6

D3 is forward Biased, so Left side (cathode) is at 0V, Right side(anode) is 0.7V because of Pullup R4,
D8 is also forward Biased, on left side(cathode) it is at 0.7V, on right side(anode) it is at 1.4V because of pullup D8.

So SDA of 24L00 is at 0.7V, NOT high?

Where am I wrong?

Chuck.