Community
cancel
Showing results for 
Search instead for 
Did you mean: 
iihab
Novice
2,673 Views

Cant detect I2C devices that connected to the board

Hi all,

i am running on ubuntu 16.04 , i installed the I2C libs with the following lines

  1. sudo apt-get install python-smbus

  2. sudo apt-get install i2c-tools

then i used the following line to check I2C0 [pin 11 , pin 13] devices ,but i was not able to find the device [ PCA9685 16 Channel adafruit servo controller] [ i tired it with up-board ] and it detected

sudo i2cdetect -y 0

i got , which not the device address

0 1 2 3 4 5 6 7 8 9 a b c d e f

00: -- -- -- -- -- -- -- -- -- -- -- -- --

10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

30: -- -- -- -- -- -- -- 37 -- -- -- -- -- -- -- --

40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

i tired to connect it to buses 1,2,3 and no addresses at all

sudo i2cdetect -y 1 sudo i2cdetect -y 2 sudo i2cdetect -y 3

0 1 2 3 4 5 6 7 8 9 a b c d e f

00: -- -- -- -- -- -- -- -- -- -- -- -- --

10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

70: -- -- -- -- -- -- -- --

So is there any kernel patch needed and what to do for getting them working ?

9 Replies
idata
Community Manager
420 Views

Hi ihab,

 

 

I just want to clarify to make sure I'm understanding your issue correctly. After using the i2cdetect command on the different I2C buses, you're only seeing the device being detected on bus 0, but the address is not the correct one and besides that, you see no devices on buses 1, 2 and 3, is this correct?

 

There are 3 available I2C buses on the Intel Joule Expansion Board. These buses are numbered 0, 1, 2 and are available on the pins: 11, 13, 15, 17, 19, 21.

 

You also mention: "i tired it with up-board". Could you please explain this in more detail?

 

 

What other connections are done on the PCA9685 besides the I2C pins, is it properly powered?

 

 

What is the output of cat /etc/*-release?

 

 

We'll be waiting for your response.

 

 

-Sergio

 

iihab
Novice
420 Views

Hi,

1-on bus 0 , there is the above two addresses , they always appear , so the address dose not appear from the first place ,

2- i connected it to pins 11,13 , and tried on 15,17 and on 19,21 but no address appears

3- i had up-baord http://up-board.org/ CLICK HERE and when i run did the same configurations i was showing in I2CDETECT

4- for the PCA9685 the SCL connected to pin 13 , SDA to pin 11 , and power , so it connected properly , i even tried with IMU MPU6050 and no thins appears

5- the output is

ubuntu@ubuntu3:~$ cat /etc/*-release

DISTRIB_ID=Ubuntu

DISTRIB_RELEASE=16.04

DISTRIB_CODENAME=xenial

DISTRIB_DESCRIPTION="Ubuntu 16.04.1 LTS"

NAME="Ubuntu"

VERSION="16.04.1 LTS (Xenial Xerus)"

ID=ubuntu

ID_LIKE=debian

PRETTY_NAME="Ubuntu 16.04.1 LTS"

VERSION_ID="16.04"

HOME_URL=" http://www.ubuntu.com/"

SUPPORT_URL=" http://help.ubuntu.com/"

BUG_REPORT_URL=" http://bugs.launchpad.net/ubuntu/"

UBUNTU_CODENAME=xenial

idata
Community Manager
420 Views

Thank you for your reply. Since you're using Ubuntu I'd suggest you to contact Ubuntu support. For any Ubuntu questions on Joule please refer to https://developer.ubuntu.com/en/snappy/start/intel-joule/ https://developer.ubuntu.com/en/snappy/start/intel-joule/ . This image is still in beta.

 

 

-Sergio

 

iihab
Novice
420 Views

hi,

i came to try to install the core ubuntu ,

i have to flash this firmware : which is Joule-Firmware-2016-09-23-131_Public

https://software.intel.com/en-us/flashing-the-bios-on-joule IoT - Flashing the BIOS | Intel® Software

but when i went to the bios , i see he following

IFWI Version : GTPP_C0_IFWI_X64_D_2016_10_04_121

BIOS Version : GTPP140A.X64.0143.D30.1610041907

so my question is the version have is newer then the previous on on the link so i can follow with it?

idata
Community Manager
420 Views

Hi ihab,

 

 

I looked at the link you shared and the requirements list a host computer with Windows 8, 8.1, or 10. Are you trying to install Joule-Firmware-2016-09-23-131_Public in a computer running Ubuntu? Currently, the latest version of the file you're looking for is the one in the website you shared.

 

 

-Sergio

 

iihab
Novice
420 Views

i will try to install it from windows,

when i try it i will update the post

idata
Community Manager
420 Views

Keep us updated on your progress.

 

 

-Sergio

 

iihab
Novice
420 Views

Hi,

tried to update it , and reinstall the ubuntu from the links above

still cant detect any i2c devicec

Michael_M_Intel1
Employee
420 Views

Some sanity checks: it might not be the SW.

First: what voltage are you using on your I2C devices? My understanding is the dev kit carrier for the Joule only supports 3.3V I2C buses and GPIOs.

Second: the interfaces on the SoC on the Joule are natively 1.8V and so there is already a 1.8V to 3.3Vhttp://www.ti.com/product/LSF0108/datasheet converter in the path. You can see this most clearly in the first page (high level block diagram) of the http://www.intel.com/content/dam/support/us/en/documents/joule-products/intel-joule-expansion-board-... schematic.

Third: if you are using a "Grove" module for your MPU, these modules include 5V-to-3.3V convertors. Grove modules generally (not always) use a 5V interface standard.

Fourth: The I2C bus depends on pull-up behavior, and you generally can't chain voltage convertors, especially ones that go up and then back down (this causes no end of problems...). In particular connecting a 1.8V-to-3.3V converter to a 3.3V-to-5V converter to a 5V-to-3.3V converters in a sequence (which is what happens if you try to drive a Grove MPU module from a Joule carrier) is almost guaranteed not to work. Unfortunately. (It might work for GPIOs and unidirectional converters, but is problematic for bidirectional converters and pull-up buses like I2C).

My suggestion is to use chips that can support a 3.3V bus natively and use breakouts (eg from Sparkfun) that don't include extraneous voltage level converters.

In addition, there can be a problem if the device you are talking to is on a board that includes pull-up resistors and these are too "strong" (that is, the resistance is too low) and source too much current, making it hard for the I2C master or devices to pull them "down". This can be fixed by removing any resistors from the breakout board holding the device you are talking to and replacing them with different ones. If the sensor breakout board uses tiny SMT resistors, you can just desolder them (or even just scrape them off with a knife) and use external, discrete resistors instead; or just depend on the pullups already supported by the Joule SoC and/or the voltage converter on the carrier.

The PCA9685 PWM board from Adafruit cited is a special case. I think the *chip* can run off a 3.3V interface (Vcc) but then you generally want the PWM output at 5V if you are driving servos. You can put the V+ at 5V but this is just the power supply for the servos, if Vcc is 3.3V then the PWM signals will be, too. This may or may not work with your servos...

If you write a loop to do the I2C probe and then hook up an oscilloscope to the output, what do you see? If nothing, it's a SW problem. If you are seeing I2C activity during probes but I2C devices on the bus aren't responding, it's a HW problem (eg voltage conversion issues, or pullup issues).

Finally, if you have ruled out HW as the problem... run "uname -r". If the kernel name reported does not include "joule" in the name then you don't have the right drivers installed (which will happen if you try to eg install a "normal" Ubuntu distribution; if you want Ubuntu, use the special version for the Joule distributed by Canonical).

Reply