0

I'm looking at the datasheet for an LED controller (the MAX6955), and it shows that all of the interface pins; clock, data, address, etc., have current maxima of either 20 or 40mA. I'm aware that the Arduino I'm using is capable of sourcing considerably more current than that, so I need to be careful not to flood the I2C slave with more than it can handle.

It seems counter-intuitive that I'd need a resistor on all these lines (though I may need pull-up resistors for other reasons), but I also don't want to take a risk in experimenting with the device. They're about $18/each, so I'd rather not blow one out with an inept assumption.

Will the Arduino conform to a set of standard I2C current sourcing limits, or am I going to need to do something arcane to ensure the safety of these chips?

user30997
  • 408
  • 3
  • 11

3 Answers3

1

Generally you don't need to add series resistors in I2C data lines, you can refer to this application note from microchip AN_1981 showing the interface between the microcontroller and a LCD display. And yes you'll need pull-up resistors.

Zy Gan
  • 336
  • 1
  • 6
1

I2C buses are open drain, which means that the microcontroller doesn't actively supply any current: it sinks current in order to pull the bus to logic 0, and does nothing to allow the bus to rise (due to the pull up resistors) to logic 1.

Typically on an AVR you'd use the chip's internal passive pull up resistors for this (which I believe the arduino I2C module configures for you automatically), which are about 30K, so the arduino will actually supply no more than 0.16mA.

Jules
  • 2,026
  • 13
  • 21
0

Use 4.7K pullups on SCL,SDA. Blink and the Address pins can be connected directly.

CrossRoads
  • 3,453
  • 1
  • 6
  • 14