New use case... and connecting I2C from a TI CPU to an Arduino Slave?

Newbie here. Looking for an Arduino Hardware recommendation, I2C clarification, and ideas/interest in spinning off even more projects.

First, I'd like to connect our custom controller (based on a TI SoC) through a ADUM1250 (I2C Ground Isolator) to Arduino's I2C port. Our CPU is at 3.3V but think I need to put 5V on the output side of our isolator and use a 4 wire connection, then use pull-up resistors on each side of SCL and SDA - say 10K each. Is this correct? And where can I get the pins that plug into your boards so I can create a custom cable from our 3.5mm jack? Like I said... I'm new to Arduino. Or would it be better to wire up a pigtail to your board connector... and where can I find that connector?

I'd also like to know what Arduino Hardware (or kit) I should use to configure this communication and do something simple (like control brightness of an LED as a proof of concept) based on my data sent through I2C, value 0-255. What's most common out there?

FYI, this project will be a part of something coming soon through KickStarter that will allow users to wirelessly control stuff with their feet. We think this would fit for education projects as well (so might post there too). Initially this will be for the Music Industry - see and links to Facebook on our progress. Where Arduino comes in is if we send our raw data (On/Off status + Foot Pressure + XYZ Acceleration Data) to Arduino and people create their own control environment. If you have a cool need, let us know.

21 (aka John)
Inventor of SoulPedal(TM)

arduino runs on 3.3 volt so no need to use opto or converters.
i2c can not be very long so keep connections short.
in atmega i2c is build in, 2 resistors are enough.

But everything says Arduino I2C is 5V (all UART's on TTL). I'm looking at the Mega2560 for example. What am I missing? Why are you saying Arduino is 3.3V?

Again, what is most common out there (that has I2C)? Seems UNO doesn't have that port. Need something ready to go...


OK, I read the post on voltage level shifting - hence the short cable note in the response.

I need the ground isolator for other reasons, so seems 5V would go further down the wire than 3.3V (to get over the 3.0V threshold)... correct?


It depends on what the processor runs at. Many Arduinos run at 5v, some run at 3.3v. The Mega2560 and Uno for instance runs at 5v by default.

If you have a 3.3v only device that you want to run on a system that runs at 5v, you will need to convert the voltages between the device and microprocessor (or alternatively if the microprocessor runs at 3.3v and the device is 5v only). You can pick up i2c voltage level shifters fairly cheaply. For example, Adafruit sells this device: 4-channel I2C-safe Bi-directional Logic Level Converter [BSS138] : ID 757 : $3.95 : Adafruit Industries, Unique & fun DIY electronics and kits, and Sparkfun sells this:

Since I run both 5v (Uno, digispark) and 3.3v (Teensy 3.0) microprocessors, I tend to look for devices that can handle both voltages without doing level shifting.

The UNO supports I2C using the A4 (SDA) and A5 (SCL) pins. It isn't broken out like it is on the Mega.

If you have a chain of i2c devices, it is perhaps best to group all of the 3.3v devices on one side of the level converter, and all of the 5v devices on the other side.

Here is Nick Gammon's tutorial on i2c: Gammon Forum : Electronics : Microprocessors : I2C - Two-Wire Peripheral Interface - for Arduino.

Here is an article that explores the need for pull-up resistors for i2c: is for sale | HugeDomains

Michael, thanks for the details. Here’s what I’m planning (schematic attached). Let me know if you think it will work with Arduino (anyone). I do need to isolate grounds which is why that I2C isolator is used. And I guess the pull-ups for 5V could be on the master side in case there are multiple slaves. Just can’t have any ground loops between the two devices.


I’m a software guy, so I will need to leave it others on the electrical characteristics.

You mentioned audio in your image. I assume you aren't trying to pass gobs of data through the I2C interface. I believe i2c is 100kps, and even though it has faster modes in the spec, note that at higher rates, you will probably be limited by the 16Mhz clock speed of the AVR's.


No audio, just control of an audio circuit. Check out then the Facebook link where I demo the product. For Arduino, it would be foot pressure and accelerometer data.

I may end up with an isolated DC to DC chip then feed Arduino the isolated 5V from our master. Parts on order, we'll see!


Update... I hooked up SoulPedal to the Uno at Techshop, and it's working well despite the voltage difference, but I'm sure things are borderline. I read a note about disabling the pull-ups on the Uno side, not sure how to do that, and this line doesn't compile without errors - I2c.pullup(0);

Cool photo of my hookup here...