On 12 December 2012 06:29, Andreas Färber <andreas.faer...@web.de> wrote: > After reading a single-byte I2C response such as the tmp105's response > to 0x01 0x00, the SBD status bit would not get reset on next read, still > indicating validity of only a single byte. Clear it on next word read.
This doesn't seem to correspond to what the OMAP1510 manual describes as the condition for this bit to be zeroed: "This bit is cleared to 0 by the core when the local host reads the I2C_IV register if INTCODE is register access ready." The manual also says for I2C_DATA: "In case of an odd number of bytes received to read, the upper byte of the last access always reads as 0x00. The local host must check the SBD status bit in I2C_STAT register to flush this null byte." ...which to a naive reading implies that the high byte has to be jammed to all-zeroes until I2C_STAT is read, but that seems a little implausible. (interestingly the SBD bit is always 0 for omap3 because the data FIFO is 8 bits wide and so data is always read byte at at time) -- PMM