National semiconductor LM75 temperature sensor
The National semiconductor LM75 is an temperature sensor with I2C Interface.
The National Semiconductor can go into a state where it blocks the
bus by pulling SDA line to low forever,
no matter how many clock cycles are driven on the
SCL line. This happens if you create a start and a stop condition
when the master acknowledges a temperature read. This is of
course illegal but i found a case where this happened.
The LM75 seems to release SDA in normal cases by shifting out 0xff
on the I2C bus if you read more more than 2 Bytes (The temperature
value is 2 Bytes). It seems like the misplaced stop condition during
the ack phase results in a stopped internal bit counter before the
FIFO starts sending 0xff.
The only way to bring the LM75 to a normal state is to remove power.
Don't use the National Semiconductor LM75 in noisy environments.
Try an other vendor.
Emulator bugs / Missing features
- The emulator does not return the real temperature
- The SDA blocking bug is not implemented because
the LM75 emulator uses a I2C device state machine which is
common for all I2C device emulators