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.

LM75A: 4 LM75's over a single i2c interface to FPGA

Part Number: LM75A
Other Parts Discussed in Thread: TMS320C6678, , TMP1075

Hi,

        This is regarding 4 LM75A's communicating over a single i2c interface to Cyclone FPGA. Each LM75A is measuring the temperature of each DSP(TMS320C6678). There are 4 DSPs in our custom board. The i2c interface speed is kept to 400kHz.

        To read the temperature of each DSP I'm exactly following the timing diagram as shown in page-7 "(a) Typical 2-Byte read from preset pointer location such as temp Tos, Thyst".

        After each reading from LM75A I'm keeping the i2c interface idle for 100clock cycles of 100kHz and then sending the address of next LM75A.

        The issue is that I'm able to read the temperature of DSP0 and DSP2 correctly(it's varying from 29C to 34C) but for DSP1 and DSP3 I'm getting decimal 127. Please let me know what is the issue?

        The DSP LM75A addresses are as follows:

        A2 A1 A0 --> (DSP0 --> 000); (DSP1 --> 001); (DSP2 --> 010); (DSP3--> 011).  

       

  • Hi Gourab,

    Can you share the schematic and oscilloscope captures of the I2C bus? You can send me a private message on E2E if you don't want to make your files public.

    Thanks,
    Ren
  • Hi,

         Please check the signal tap captured in Cyclone IV E FPGA. Here I am sending all the 4 addresses 000, 001, 010 and 011 to read the temperature from corresponding lm75A. Only lm75 corresponding to address 011 is responding. Please check the timing diagram and schematic as follows.

  • Hi Gourab,

    I don't see an issue with the schematics you have presented. In the waveform, I see that you perform sequential read transactions with each address. Only device 3 is providing an ACK. You don't configure the register pointer, which could imply you are reading the wrong register. However, the fact that the device did not ACK means you did not get any data at all. I'm concerned that you are seeing the 2nd byte of these failed read transactions as zeroes. The bus should idle high throughout the duration of these transactions. In fact, microcontrollers typically give up and stop communication when they don't receive the ACK.

    To debug this further, could you look at the hardware at various points? Could you verify the communication reaches each device, and that each device has power?

    Thanks,
    Ren
  • Hi Ren,

                 I have checked all the LM75A in our board. All the 4 LM75A ICs are getting power properly and also I have probed on SDA and SCL pins of all the LM75A. Clock(in SCL line) and data(in SDA line) is reaching properly to all the LM75A ICs.

                Please let us know what is the issue? If you want I can share the VHDL code for I2C interface that I have written in Cyclone IVE FPGA.

  • Hi Gourab,

    Could you please show me oscilloscope pictures of the bus probed at each device?

    As a side note, we have a new product which supersedes LM75. TMP1075 is a drop-in replacement which has lower power consumption, lower cost and better accuracy over a wider temperature range. This device represents almost two decades of technology advancements since LM75A was released.

    Thanks,
    Ren
  • Hi Gourab,

    Do you still need help with this issue?

    Thanks,
    Ren