Due - I2C Issue - SOLVED


It's the first time I've used a Due and I/it failed.

I've connected the Adafruit BNO055 via I2C without level translator and pullup resistors to the Due and tried the Adafruit Library and example app. The message: Can't connect BNO055.

The BNO055 is suitable for 5V and 3.3V.

Then I've used an additional Adafruit BSS155 level translater (5V BNO055, 3.3V Due). Same result.

Then I've used an Uno without additional pullup resistors. The result: Perfect

Since I'm confused about the amount of Due I2C issue postings and from the postings itself I would like to ask:

Has somebody the time to let me participate in the knowledge of Due and I2C since I want to connect a few Unos too?

Many thanks in advance.

horsten :)

I used the Adafruit BSS138 I2C safe logic level converter, and it works well. I use it between the Due and a Mega 2560. I use a 10DOF board from Adafruit and the Ultimate GPS with the Due also. All work fine.

edit: Are you using D20 and D21 for the I2C bus? If you want to use the same code as on the Uno, you must. If you use SDA1 and SCL1 by the AREF pin, you must change the Wire calls to Wire1. The Due has two separate I2C buses.

Hi Horsten,

Some weeks ago I also had some problems with the Due: it seems that the repeated start has already been implemented (that's why there are so many post regarding I2C in Due dating back 2014), however, you need to introduce more parameters in the function to make it work correctly. Otherwise the Due makes a stop + start instead of a repeated start (and some slaves do not understand that).

Check out this link where I explained the conclusions of my research with this problem.

I hope it helps!

!! Thanks to all of you guys !!

!! It works !!

Thanks again.


What did you do to solve it? What was the issue?