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.

PROCESSOR-SDK-AM335X: AM3352, problem with LM75A Temperature sensor I2C bus driving

Part Number: PROCESSOR-SDK-AM335X
Other Parts Discussed in Thread: LM75A, AM3352, SYSCONFIG

Hi,

We are using LM75A temperature sensor to measure the temperature value of our custom board.

LM75A Temperature is directly connected to  am3352 I2C0 bus using address 0x48 (A2-A0 are grounded).

A s35390a RTC is on the same bus (connected directly) and is working normally. However, the temperature readings of LM75A are always 0.

I2C clock is set to 400K. (We've tested 100K speed, same problem.)

After we measure the I2C SDA signal, we found that there is something wrong.

The beginning low pulls (OP + address) aren't pulled low as expect. It looks like a "╰" shape.

Besides, while am3352 is receiving data, there is a strange level on I2C SDA bus (about 0.8V).

If we disconnect LM75A from am3352 (Keep RTC connected), and measure the signal of am3352's I2C0 SDA, the signal looks perfect.

The I2C pins in .dts are set to INPUT_PULLUP.

Please hint us for this issue, thanks!

- Howard

  • Howard

    Your debug suggests that the LM75A may be the issue since after it's removal the LM75A results in perfect operation. 

    However, some other suggestions:

    1. You do not need the AM3352 internal pull-up resistors enabled - The Pinmux/Sysconfig tool does not enable them
      You should be using external pull-up resistors on your board. Enabling the internal pull-ups would not result in the issue you see.  
    2. Have you tried leaving the LM75A connected and disconnecting the RTC? This way you will see if it is truly just the LM75A or only an issue when both devices are connected (addressing issue?) 
    3. The waveform on your scope looks to have contention.  Does the RTC also respond to the LM75A address? 

    --Paul 

  • Hi Paul,

    RTC is at address 0x30, LM75A is at address 0x48.

    &i2c0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&i2c0_pins>;
    
    	status = "okay";
    	clock-frequency = <400000>;
    
    	s35390a: rtc@30 {
    		compatible = "sii,s35390a";
    		reg = <0x30>;
    	};
    
    	lm75: lm75@48 {
    		compatible = "lm75";
    		reg = <0x48>;
    	};
    };

    I set pinmux to PIN_INPUT instead of PIN_INPUT_PULLUP, the result is the same. (Use external pull-up resistor.)

    2. Have you tried leaving the LM75A connected and disconnecting the RTC? This way you will see if it is truly just the LM75A or only an issue when both devices are connected (addressing issue?) 

    > Okay! We will try remove RTC and do further test.

    Thanks!

    - Howard