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.

AM2732: I2C temperature sensor can not be accessed on TIDA-020047

Part Number: AM2732
Other Parts Discussed in Thread: TIDA-020047, SYSCONFIG,

Hi Experts

When customer tried C:\ti\mmwave_mcuplus_sdk_04_04_01_02\mcu_plus_sdk_am273x_08_05_00_24\examples\drivers\i2c\i2c_temperature  on TIDA-020047, 

below Is the test log and the snapshot on logic analyzer, It seems the test failed in I2C_probe.   But ACK bit is observed.  So there should be no issue on hardware.

ERROR: i2c_temperature_main:70: [I2C] Temperature sensor not found at device address 0x49
Some tests have failed!!

May I have your valuable comment here, what could possible reason for this issue?

Thanks

Ken

  • Hi Ken,

    A few questions to try to get some more information:

    • Can you post oscilloscope shots of the waveforms instead of logic analyzer shots?  I want to confirm the integrity of the waveforms.  
    • Where there any other I2C transactions on the bus after this snippet?
    • Can you test the other I2C temp sensor at address 0x48 and see if it behaves similarly?

    Ultimately, something is holding the SCL line low after the ACK, which is not a valid I2C transaction.  We need to figure out what is causing that.

    Thanks,
    Mike

  • Hi Mike

    1.Oscilloscop snapshot is as below:

    2.No, there is no more I2C transactions if I2C_probe failed as you can see the src code in mcu_plus_sdk_am273x_08_05_00_24\examples\drivers\i2c\i2c_temperature\i2c_temperture.c

    3. Same phenomenon when performed at 0x48 sensor. as it is portrayed in above figure.

    Thanks

    Ken

  • Hi Ken,

    Thanks for the oscilloscope shot.  I'm a little concerned about the undershoot on the high to low transactions on SCL, from what I can see, that looks like nearly 2V of undershoot, which could potentially cause issues or even cause a latchup state on the device.

    Can you provide a zoomed in shot showing more details on these undershoots, so we can get an idea of how long they last, how low they go, etc.

    Thanks,
    Mike

  • An additional request, the AM273 SDK 8.05 is pretty old.  Can you try with the latest SDK (9.0) and sysconfig (1.17) and confirm if the behavior is the same?

    Thanks,
    Mike

  • Hi Mike

    Sry for the late reply due to local holiday.

    I tried the demo in SDK 9.0.0.35.  The phenomenon is the same.

    1. Below is the zoomed detail of SDL and SCL

    2. It is interesting that SDL is asserted low for 26ms after the transaction above, Could you pls help advise it is asserted by AM2732 or Temp sensor?

    Does it mean the temp sensor is broken or not properly populated on PCB?

    Thanks

    Ken

  • Hi Ken,

    Mike is currently out of office, but I'll try and help with further looking into this particular issue. I'm familiar with the board you are using and should be able to get ahold of one to test with myself. I'll be able to confirm if I can do some tests tomorrow.

    Reviewing the difference between the TIDA reference design and the AM273 EVM this example was developed for, one glaring difference is that the I2C bus does not have pull up resistors on the TIDA-020047 board. Coupling that with the observations that we are seeing between the boards and this behavior makes sense. The below capture is from an AM273 EVM:

    Now knowing this significant difference, the IO bus should be able to be configured to have an internal pull-up resistor, and for a temperature sensor like this that pull-up may be enough to help the I2C bus operate. I don't see any hooks in the current example to do this however, so I will need to look into how to enable that and see if I can test it on a board as well.

    Best Regards,

    Ralph Jacobi

  • Hi Ken,

    I don't see any hooks in the current example to do this however, so I will need to look into how to enable that and see if I can test it on a board as well.

    In the SysConfig instance to add the I2C peripheral, the Pin selection section includes the option to select Pull Up/Pull Down/No Pull. This is No Pull by default. I will try and test tomorrow with it set to Pull Up to see if that gets the temp sensor working, but feel free to pass that along to the customer as well since now it's confirmed there is no pull up on I2C bus out of the box with the TIDA-020047 board.

    Best Regards,

    Ralph Jacobi

  • Hi Ralph

    Yes, the exact same code could successfully read the response of temp sensor on AM2732EVM,and also the issue is still there after internal pull-up is enabled in syscfg.  I am confused since after internal pull up is enable, the HW design should be the same. Why the reponse is very different on these 2 boards.

    Thanks

    Ken

  • Hi Ken,

    and also the issue is still there after internal pull-up is enabled in syscfg.  I am confused since after internal pull up is enable, the HW design should be the same.

    Not necessarily. The internal pull-ups inside of MCUs generally are fairly weak and they are not guaranteed to be sufficient for I2C bus operation which is why we always recommend external pull-ups. I was thinking with a simple temperature sensor they may be enough. One possibility to explore would be lowering the baud rate to 100kHz.

    While I intended to test this out today, I have to take an unexpected out of office day. I'll look to test various options here tomorrow. I'll also note these I2C lines are brought out to a header so it may be possible to add external pull-ups to the bus too.

    Best Regards,

    Ralph Jacobi

  • Hi Ken,

    Sorry, having some issues with getting the TI Design board running, I do have one in hand now but will need to go into lab tomorrow to get it fully setup so I can finish testing this. Apologies that I've had to push the final resolution here a few days.

    Best Regards,

    Ralph Jacobi

  • Hi Jacob 

    Thanks for the effort and support, we will wait for the update.

    Ken

  • Hi Ken,

    I spent a couple more hours on this today but I wasn't able to get the board to run the I2C code. I haven't tried to use the board for this kind of application before, so it's not really clear what I am doing incorrect as far as getting this operational goes. Unfortunately I can't really spend more time trying to debug what is going on with this hardware.

    While I wanted to provide conclusive, bulletproof evidence of what is awry here, given the discussions I had on this with others as well, it's clear that the issue is that the board lacks on board pull-ups and the internal pull-ups are not strong enough for use with the temperature sensor.

    Unless the customer comes back with results that counter this observation, I'm going to consider this topic closed. And if there is a need to further prove out points on the TIDA board, I will need instructions from the customer on how they are programming and testing this so I can minimize the time trying to get the board operational and instead focus on specific test cases.

    Best Regards,

    Ralph Jacobi

  • Hi Ralph

    Sure, Customer could make it temporarily work by configure it in ignore nack mode.

    Agreed lack of pull-up resistor might be the cause.

    Thanks for your time, I will start a new thread if there are further support needs on this issue.

    Ken