13 Replies Latest reply on Nov 5, 2014 3:34 PM by faceplant

    i2c communication pin-outs?

    dottedquad

      I purchased the Intel Edison Breakout Board kit and I am extremely eager to get started on my project while I wait for the Sparkfun GPIO breakout board to arrive.  I have a ph sensor board that can communicate either with UART or i2c.  I would like to use i2c to communicate with the Intel Edison. In order to use i2c communications, the sensor manufacturer explained that an external 4.7k pull-up resistor may be required. Also, the sensor can either be powered by 3.3v to 5.0v. My questions in regard to i2c communications are:

       

      1) Does the Edison or Breakout Board have an internal pull-up resister that might interfere with a 4.7k resister?

       

      2) Does the Edison or Breakout Board require a level shifter since the Edison only allows 1.8v, or does the Breakout Board already have a level shifter? In case a level shifter is required, can someone please recommend a level shifter for i2c communications?


      3) The Edison Breakout Board looks like it has GPIO soldering pads on the top and underside of the board.  Do I solder breakaway headers pins to the Breakout Board to access the i2c and the other GPIOs? If so, the Breakout Board seems rather thick to pass a breakaway header pin through to the top side of the Breakout Board for soldering; assuming that's possible, is there a trick to soldering pins to the soldering pads(I haven't soldering anything this small before)?


      I know that last question sounds silly, however, the last thing I would want is to ruin the Intel Edison Breakout board.


      -Rich

        • 1. Re: i2c communication pin-outs?
          Fab-Lab.eu

          Rich, check out my last discussion on the subject of I2C and BMP180 most of your answers should be in there

           

          IC2 goes via:

          J17-7 = I2C-6-SCL

          J17-9 = I2C-6-SDA

           

          The BMP180 supports supply and signal voltage range done to 1.8V so you can connect that one directly to the pin

          J19-2 = 1.8V

          J19-3 = GND

           

          (numbering of the pins you find on the bottom of the breakout) check also my thread on this BMP180 on I2C with mini breakout ...

           

          If you do want to hook your breakout to an breadboard which make cabling more easy check my solution for this

          Hooking up Intel Edison to your breadboard ...

           

          www.fab-lab.eu/edison

          1 of 1 people found this helpful
          • 2. Re: i2c communication pin-outs?
            Fab-Lab.eu

            I am using btw the Sparkfun BOSCH BMP180 breakout - which includes the pull up resistors, if you do need to shift levels (1.8V to 3.3V or 5V)

            you need to do this bi-directional a good tool for this is any TXB0104 or TXB0108 voltage level translator - you will find breakout boards for this at Sparkfun or Adafruit

            • 3. Re: i2c communication pin-outs?
              DiegoV_Intel

              Hi dottedquad,

               

              I will try to answer your questions as accurate as possible:

               

              1) Does the Edison or Breakout Board have an internal pull-up resister that might interfere with a 4.7k resister?

               

              R/ The Edison Module has programmable pullup resistors for the GPIO pins. Those pullup resistors can be 2, 20, or 50 kOhm. The pins for I2C interface have an additional value of 910 Ohm. So, my suggestion is to keep in mind this detail when you connect your sensor and the external pullup resistor you mentioned.

               

               

              2) Does the Edison or Breakout Board require a level shifter since the Edison only allows 1.8v, or does the Breakout Board already have a level shifter? In case a level shifter is required, can someone please recommend a level shifter for i2c communications?

               

              R) The Edison GPIO voltage level is 1.8V, so if you want to use any device with your Edison, you have to make sure the voltage levels are compatible. That depends on what device you are using, for example, Fab-Lab.eu is using a BMP180 which is compatible with the 1.8V level so a level shifter isn't required, but if you use other devices that work with 3.3V or 5V level you should use a level shifter to make them compatible with the Edison GPIO voltage level.

               

               

              3) The Edison Breakout Board looks like it has GPIO soldering pads on the top and underside of the board.  Do I solder breakaway headers pins to the Breakout Board to access the i2c and the other GPIOs? If so, the Breakout Board seems rather thick to pass a breakaway header pin through to the top side of the Breakout Board for soldering; assuming that's possible, is there a trick to soldering pins to the soldering pads(I haven't soldering anything this small before)?

               

              R/  Yes you can solder breakaway headers to the Edison Breakout Board. However, be careful soldering them and be extremely careful on which side you solder the breakaway headers because if your solder them in the wrong side of the Breakout Board you won't be able to connect your Edison Module in the Breakout Board unless you desolder everything. Take a look to the Fab-Lab.eu's solution. It's very creative. By the way, nice work Fab-Lab.eu

               

               

              You can check the following documents about the Edison Module and the Breakout Board for a more detailed explanation:

              Edison Module Hardware Guide

              The specified item was not found.

               

              Regards,

              Diego.

              1 of 1 people found this helpful
              • 4. Re: i2c communication pin-outs?
                faceplant

                The TXB010X line will not work with the pullup resistors required for I2C interfaces.  You need something like the TXS010X line of level translators.

                1 of 1 people found this helpful
                • 5. Re: i2c communication pin-outs?
                  Fab-Lab.eu

                  good point - will give it a try ;-)

                  • 6. Re: i2c communication pin-outs?
                    dottedquad

                    Prior to asking my question on the Intel community forums I asked a question in the SparkFun forums asking if one of their level shifter breakout boards support the Intel Edison board. I received a reaponse that it 'should' work, but if I unstood the person correctly, the level shifter might lower the speed.

                     

                    My question can be found here: https://forum.sparkfun.com/viewtopic.php?f=14&t=39437

                    • 7. Re: i2c communication pin-outs?
                      dottedquad

                      I meant to also ask if anyone can clarify if that level shifter will work.

                      • 8. Re: i2c communication pin-outs?
                        dottedquad

                        Hi DiegoV_Intel I'm fairly new to electronics so your answer to my first question is a bit Greek to me.  When you suggested that I keep in mind this detail, I am not sure what I should do or what value of a pull_up resister I should use.

                        • 9. Re: i2c communication pin-outs?
                          faceplant

                          I believe that level translator should work, but I haven't tried it.  I haven't had much luck with i2c on the Edison, and I'm not sure why.  I finally detected a device (an MPU9150) on i2c1 using this level translator from Adaftruit.  Unfortunately, the breakout board that I have connected also has an ms5611 on it, which wasn't detected.

                          • 10. Re: i2c communication pin-outs?
                            DiegoV_Intel

                            Hi dottedquad,

                             

                            Sorry for the delay. As I explained, the Edison GPIO has a programmable internal pullup resistor which value could be 2, 20, or 50 kOhm, and for those pins used for I2C there is an extra value of 910 Ohm. If you choose for example 2 kOhm as internal pullup resistor, and then you plug the 4.7 kOhm external pullup resistor, the equivalent pullup resistor would be 1.4 kOhm (the two resistors are in parallel). That is the detail I was referring to.

                             

                            If you need for example the 4.7 kOhm pullup resistor, my suggestion is to disable the internal pullup resistor and only use the desired external pullup value.

                             

                            Regards,

                            Diego.

                            • 11. Re: i2c communication pin-outs?
                              dottedquad

                              No worries about the delay. Your explanation was helpful. Thank you!

                              • 12. Re: i2c communication pin-outs?
                                onehorse

                                faceplant,

                                 

                                The Edison Arduino IDE I2C defaults to I2C-6; to invoke I2C-1 also a small change is required in the appropriate library function. Maybe you figured this out.

                                 

                                On the MPU9x50 sensors, you have to place them in bypass mode by writing an 0x22 to register 0x37, IIRC. You can also place the MPU9X50 in master mode but it takes a bunch more register configuration writes to do this. You probably don't see the MS5611 because the MPU9150 device by default is not in bypass mode and other devices slaved to the MPU9150 can't be detected until this is changed by the user.

                                 

                                FYI: kriswiner/MPU-9150 · GitHub

                                • 13. Re: i2c communication pin-outs?
                                  faceplant

                                  Thanks, but I'm not using the Arduino IDE.  I'm just running i2cdetect directly on Linux.  Also, The breakout board that I have has the MS5611 connected to the same I2C interface as the MPU9150, not the secondary I2C interface, so it should be detected the same as the MPU9150.

                                   

                                  I've been working on another task lately, so I haven't pursued this any further.  Hopefully I'll get back to it soon...