9 Replies Latest reply on Dec 8, 2016 11:30 PM by McCool

    Cant detect I2C devices that connected to the board

    ihab

      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 ?

        • 1. Re: Cant detect I2C devices that connected to the board
          Intel Corporation
          This message was posted on behalf of Intel Corporation

          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
           

          • 2. Re: Cant detect I2C devices that connected to the board
            ihab

            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 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

            • 3. Re: Cant detect I2C devices that connected to the board
              Intel Corporation
              This message was posted on behalf of Intel Corporation

              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/ . This image is still in beta.

              -Sergio
               

              • 4. Re: Cant detect I2C devices that connected to the board
                ihab

                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

                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?

                • 5. Re: Cant detect I2C devices that connected to the board
                  Intel Corporation
                  This message was posted on behalf of Intel Corporation

                  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
                   

                  • 6. Re: Cant detect I2C devices that connected to the board
                    ihab

                    i will try to install it from windows,

                    when i try it i will update the post

                    • 7. Re: Cant detect I2C devices that connected to the board
                      Intel Corporation
                      This message was posted on behalf of Intel Corporation

                      Keep us updated on your progress.

                      -Sergio
                       

                      • 8. Re: Cant detect I2C devices that connected to the board
                        ihab

                        Hi,

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

                        still cant detect any i2c devicec

                        • 9. Re: Cant detect I2C devices that connected to the board
                          McCool

                          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.3V converter in the path.   You can see this most clearly in the first page (high level block diagram) of the 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).

                          1 of 1 people found this helpful