The NXP LM75BDP I2C temperature sensor uses a bandgap reference and sigma-delta analog-to-digital converter to accurately measure temperatures from -50 to +125 degrees C with a resolution of 0.125 degrees. The LM75B uses ZYNQ’s I2C0 controller for communications, with a fixed I2C address of 0b1001000.
The LM75B has four registers as shown below. The registers power-on with default settings that configure the device in normal operating mode, so temperature data can be read immediately without the need to perform any initialization or setup procedures. An I2C read cycle with device address 0b1001000 will return an 8-bit or 16-bit temperature value (depending on whether one or two bytes were read). Data is always in 2’s compliment. If one byte is read, the least significant bit (LSB) will provide 1 degree C of resolution; if two bytes are read, only 11 bits contain valid data, and the LSB will have 0.125 degrees C resolution.
At power-on (or after a reset), I2C read transactions will return temperature data. To access other registers, an I2C write cycle must define the address of the intended register by setting the lower two bits of the first byte sent (called the “pointer value”) to the desired address. Once set, the pointer value will remain until overwritten or cleared by a reset. The same write cycle that sets the pointer can send additional data to the selected register. A subsequent read cycle will return data from the selected register.
Temperature data is read as an 11-bit 2’s complement value. The binary value “00000000000” corresponds to 0 degrees C; “11001001000” to the maximum negative temperature (-55C); and “01111101000” to the maximum positive temperature (125C). Binary numbers are in 0.125 degrees C.
Complete details for communicating with the sensor via I2C as well as how to interpret data readings can be found in the module’s data sheet: LM75B Data Sheet .