This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

LAUNCHXL-F28379D: I2C communication issues with MPU-9150 present on BOOSTXL-SENSHUB

Part Number: LAUNCHXL-F28379D

Hi,

I am not able to read the data properly from MPU-9150 sensor present on BOOSTXL-SENSHUB with F28379D LaunchPad through I2C. 

I2C Setup


I follow the read and write sequence exactly as mentioned in the MPU-9150 data sheet. I configure the I2C clock to 400 kHz. I start the I2C communication sequence with Slave address 104(0x68) as follows-

1) Send 0 to register address 107(0x6B) to pull the sensor from sleep mode to normal mode.

2) Read 14 bytes of data (Accel, Temp and Gyro) from the register address 59(0x3B) to 72(0x48) continuously.

Electric Connections

Following are the electrical connections I do between Master and Slave. I ensure the supply and ground is common for both Master and slave

F28379D LaunchPad

SDA - GPIO104 - Pin10(J1)

SCL - GPIO105 - Pin9(J1)

BOOSTXL_SENSHUB

SDA - Pin6(J2)

SCL - Pin7(J2)

GND - Pin1(J2)

3.3V - Pin1(J1)

Problem and Workaround

When I try to read the sensor data using F28379D LaunchPad, it is always zero. When I connect the scope and check, I see only the I2C slave address value with read/write bit on SDA line and 8 clock cycles on SCL line. 

I tried different things to understand the source of the issue. I used different boards as master to read the data from the sensor. The setup works properly when I use F28027 LaunchPad / ControlCard, F28069M LaunchPad / ControlCard and also F28379D ControlCard to communicate with the MPU-9150 sensor present on BOOSTXL-SENSHUB. 

For the F28379D LaunchPad I can read the data properly for the MPU-9150 sensor present on BOOSTXL-SENSHUB only when I connect 33 ohm series resistor between master and slave pins as shown in the below image. But this is not required when I use other LaunchPads or ControlCards.

Can you help me out on this? Why do i face the problems with F28379D LaunchPad and why I need the series resistor between Master and Slave pins to make I2C work?

Thanks,

Aditya

  • Aditya,

    The problem you seeing might be similar to one discussed in this thread.

    e2e.ti.com/.../676372

    We are currently working on updating the errata for the devices affected.

    Regards,
    Manoj
  • Aditya,

    If you have any scope shots of the signal with and without the 33 ohm resistor, that would be interesting to see.

    Thanks,

    Jason

  • Hi Jason,

    Here are the screenshots from oscilloscope.

    1) I2C direct connection between master and slave.

    2) I2C series resistor of 33 ohm between master and slave.

    Thanks,

    Aditya

  • Hi Manoj,

    In the link you provided, they mention that the potential solution to the problem is addition of RC between signal and ground. In my case I am just adding a series resistor of 33 ohm.

    Thanks,
    Aditya
  • Aditya,

    This is curious, thanks for sending the scope images.  Which side of the resistor are these taken from?  May be good to look at multiple locations between the boards.

    In the failing case:

    • the leading voltage is only 3.0v, this seems odd, like there is some week pull-down on the line before the transaction.
    • something is holding the bus low at the end, maybe multiple masters where one is trying to grab the bus.  I'm wondering if the series resistor is lowering the voltage sufficiently to trick one of the devices into an early release.  

    In the passing case:

    • The glitch might indicate some bus contention as well

    Is there anything else connected to these boards on a back-side connector or other I2C devices on the bus?  

    I'm not familiar with the SENSHUB, is this an I2C slave only device?

    Also, if you don't mind me asking.  Is this prototyping for a future system or will you always only use these boosterpacks?  Just curious to understand the context a little more.

    Best regards,

    Jason

  • Hi Jason,

    Thank you for your response. I will check the signal at different points when possible. I used this with only only one I2C Master and I2C Slave without any additional connections.

    BOOSTXL-SENSHUB is the board by TI which can be used with TI LaunchPads. The sensor used in the board MPU-9150 is an I2C slave only device which you can use to read accel, gyro and compass data. I was just using the booster packs now and not doing any custom boards.

    I was trying out different TI LaunchPads like F28069 and F28379D with different I2C sensors like BOOSTXL-SENSHUB (MPU-9150), BOOSTXL-SENSORS (BMI 160) and I2C EEPROM (ATMEL AT24C02).

    I did not face any issues with F28069 LaunchPad with any of the slave devices. For F28379D LaunchPad I was not able to establish stable connection with BOOSTXL-SENSHUB (MPU-9150) and I2C EEPROM (ATMEL AT24C02).

    But the I2C between F28379D and BOOSTXL-SENSORS (BMI 160) worked perfectly and if I connect any other slave devices along with BOOSTXL-SENSORS (BMI 160)  for F28379D LaunchPad, the I2C for other slave device also worked properly.

    So I checked out the user's guide for the BOOSTXL-SENSORS (BMI 160) and found that there is a series 33 ohm register along with 2.2K ohm pull-up for I2C SDA and SCL pins. Hence I tried similar connection using 33 ohm series resistor for other slave devices when connected individually and was able to get the I2C connection working properly.

    hence I posted this to understand the source of the problem. Thanks for your response.

    Regards,

    Aditya