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.

LM95233: SMBus Protocol in Verilog

Part Number: LM95233

Hi,

I am writing a firmware in verilog to read the temperature data from the LM95233 temperature sensor via its SMBus. Consequently i have to read data from 2 registers(8 byte each) for getting 16 bit temperature reading. What will be the required SMBus protocol for this purpose? Will there be a repeat start after the command byte acknowledgement from slave? Moreover, to read second register will i need to send the slave address again? In the datasheet, i could not found timing diagrams for my case. Please provide guidance regarding the issue. 

  • Hello Qammar,

    SMBus is a standard interface which uses I2C. To read the two bytes, you would need two transactions for the temperature register as shown in Figure-19 in the datasheet.

    Yes, you would need to send the slave address twice. Logically the following should be the I2C transaction

    Start->SlaveAddr+W->CommandByte(0x10)->RepeatedStart->SlaveAddr+R->Data from TempRegMSB->Stop
    Start->SlaveAddr+W->CommandByte(0x20)->RepeatedStart->SlaveAddr+R->Data from TempRegLSB->Stop