We are using the PCAL9554B and would like a clarification of its behavior whent eh I2C Hold time for the Start condition is breached.
Problem Summary: Due to bus delays caused by I2C isolators & buffers our SDA like sometimes goes low ~60ns before the SCL line itself goes low. This appears to be interpreted as a START condition and causes the PCAL9554 to interpret the next data byte as an address which it will ACK if it is its own address.
The datasheet specifies a "tHD;STA hold time (repeated) START condition" of 0.6us, yet the device is acting on a START condition of only 60ns
Attached is an image of the SDA (green) and SCL(Blue) going to the PCAL9554, this specific event is interpreted as an START bit and the next byte (0x20) will be ACKed by the PCAL9544 as it matches its own address. We have confirmed the PCAL is the one ACKing by disconnecting it.
Our workaround has been to introduce a delay on the SDA line (spare channel of a I2C buffer), this shrinks the SDA going low just 20ns before SCL goes low, the PCAL9554 no longer see this as a START condition.
Questions: What is the minimum time between SDA going LOW and SCL going LOW which will be considered a valid START? We would like to validate our workaround.