Grove connectors and crosstalk

Hi all,

I want to have one master NANO talk to 4 slave NANOs thru i2c.

I have found Grove connectors that could do the bill for me. The problem is that they have the following assignments : SCL, SDA, VCC, GND. In an other post, I read that it would induce crosstalk.

Since I am designing the PCBs for both the master and the slaves, I can rearange the assignments.

I would like to know what is best : VCC, SDA, GND, SCL or GND, SDA, VCC, SCL

In various web pages I could read, some suggest to have GND between signal strands as others suggest to have VCC betwwen signal strands.

Anyone used the Grove system succesfuly (without crosstalk)?

The maximum distance between the master and any slave will be less than 30cm (12")

Some sites also talk about a 4.7K pullup resistor, but I don't know where it has to go in the design.

Thanks for your insight.

Jacques

Connector order won't be a problem. I2C and SPI are synchronous serial links. The clock and data line are synchronized so the clock never changes while the data is being sampled. Often the signals are a few thousandths of an inch apart in the layout with no problems. You connector will probably 0.1" apart. Even the sires in a harness can be closer than that.

Sparkfun has a good tutorial on I2C.

From i2c-specification-version-3.0.pdf page 47

7.5 Wiring pattern of the bus lines In general, the wiring must be so chosen that crosstalk and interference to/from the bus lines is minimized. The bus lines are most susceptible to crosstalk and interference at the HIGH level because of the relatively high impedance of the pull-up devices. If the length of the bus lines on a PCB or ribbon cable exceeds 10 cm and includes the VDD and VSS lines, the wiring pattern should be: SDA _______________________ VDD ________________________ VSS ________________________ SCL _______________________ If only the VSS line is included, the wiring pattern should be: SDA _______________________ VSS ________________________ SCL _______________________ These wiring patterns also result in identical capacitive loads for the SDA and SCL lines. The VSS and VDD lines can be omitted if a PCB with a VSS and/or VDD layer is used.

Wow. Done wrong so many times and yet still worked.

Thanks all,

I will follow the i2c-specification-version-3.0:SDA, VDD, VSS and SCL.

I still don't know how or where to conect the 4.7K pullup-resistor. On both SDA and SCL?

Like : Master Pin A4, 4.7K, Wire, Slave Pin A4 Master Pin A5, 4.7K, Wire, Slave Pin A5

Thanks for your help

Jacques

This site recommends SCL and SDA at the edges too: https://www.i2cchip.com/i2c_connector.html#Crosstalk

I would put ground between the two but it really doesn't matter. The current flowing in Vss will be pretty much exactly the same in GND so any inductive coupling will be equally bad either way.

Putting SDA and SCL close to other wires in a ribbon cable does add to the capacitance. If you had lots of spare wires, then putting two or more unconnected wires between SDA and SCL would be even better.

The pullups go on both SDA and SCL. Usually you have one device like the Arduino with built-in pullups so it's never an issue. Many I2C sensor breakout boards also include pullups. For shorter distances, the internal pullups on the Arduino are sufficient.

Hi,

I begin to understand a bit more about I2C now. The site suggested by MarkT is very instructive.

Does the <Wire.h> library use the internal pullups? I was wondering, because I have a 4x20 LED display with i2c, and I never used external pullups. I could not find if the display had pullups. I understand that the pins A4 and A5 used for i2c have some special hardware to drive the signals.

On Arduino’s site, the pullup resistor’s

value is guaranteed to be between 20kΩ and 50kΩ

Since I will have 5 Arduino Nanos, do they add up, or have no influence between each of them?

I recieved my Grove cables and connectors and wondered why the wires were “loose” (not a ribbon). I can now see why, MorganS.

Jacques

jbellavance:
I understand that the pins A4 and A5 used for i2c have some special hardware to drive the signals.

no, the special hardware sequences the bits, the pin drivers are exactly like any other pin, same
internal pull-ups. Which is why external pull-ups are normally used as 50k is too large for I2C.

On Arduino’s site, the pullup resistor’s Since I will have 5 Arduino Nanos, do they add up, or have no influence between each of them?

They are in parallel, so 5 of them will look like 6 to 10k, which should be fine for I2C I think. In
parallel what adds is the conductance (ie 1/resistance). So 5 30k resistors in parallel are 6k.

I recieved my Grove cables and connectors and wondered why the wires were “loose” (not a ribbon). I can now see why, MorganS.

Jacques

I feel like what I am... a newbie.

Thanks for putting me back on track.

I guess I am ready to do the actual tests.

Thank you all for your help.

Jacques