BeagleBone Blue cannot detect i2c devices

Hello,

I am trying to connect i2c devices to my beablebone blue, but they are not detected. I have tried four different devices, but none of them appear in the output from `i2cdetect -y -r 1’ Does anybody have any advice for things I can check to get this working?

Does the i2c connection on the board include pull-up resistors for sda/scl?

Thanks,
Will

Hi,

I have the same problem. hope somebody can help us out.

Best.

Honggang Wang.

在 2018年6月9日星期六 UTC-4下午11:58:19,William Vining写道:

I don’t have a BeagleBone Blue, but I would assume that the necessary pull up resistors for the I2C bus to function are NOT included on the Beaglebone board.
You need to supply them externally.

— Graham

Okay, thanks for that info. I have tried with and without pull-ups, but no luck, so I don’t think that is the problem.

Will

Did you try
i2cdetect -y -r 2

Is the I2C device powered by 3.3 Volts?

— Graham

Graham,

The I2C device is powered by 3.3V, and I have verified that power is going to it (there is a 3.3V out pin sou you can chain devices together and that shows 3.3V when I measure it with a multi-meter).

i2cdetect -y -r 2 and 0 both show devices, but they are not the ones I am looking for (and are present when my external devices are disconnected).

Will

I looked at the BB Blue Schematic, and there are 4.7K pull up resistors on the I2C-1 bus, which is the one pinned out to the external I2C connector.

So, your possibilities are that your part is wired wrong, the part is bad, or the device tree you are using is not set up right for I2C-1.

What do you see when you put an oscilloscope on SDA and SCL lines?

You can usually tell the difference between them with a scope, since SCL has consistent bursts of eight transistions, and the SDA is more random.

Do you have a known good I2C device of any kind that you can hook to the I2C-1 bus for testing.

— Graham

Have you enabled channel 1? By default only channel 0 and 2 are enabled.

Adding the line
uboot_overlay_addr4=/lib/firmware/BB-I2C1-00A0.dtbo
in /boot/uEnv.txt should do it (if you use a recent Debian that is).

Thank you Johan, you are right. After enabling channel 1, i2cdetect can now find my defice.

Best.

Honggang Wang.

This doesn’t seem to have worked for me, did you do anything else to get it working, Honggang?

Thanks,
Will

What does this script show:

sudo /opt/scripts/tools/version.sh

Regards,

Hi, I made a really stupid mistake. After taking a step back to go through everything from the beginning I discovered I had connected my I2C devices to the CAN port and not the I2C port facepalm. With the device connected properly, I do not need the line in uEnv.txt to enable the bus, it appears to be enabled by default in the image I downloaded from the beablebone website a few weeks ago.

Thanks for everyone’s thoughtful help,
Will