How do 8-bit MCUs handle a Start + Stop + Address bus condition? Normally, a master should send a Start condition, then immediately followed by address - will the device NAK an address if a Stop comes between the Start and the Address?
This is an undefined condition on the I2C bus, so there is no correct way to respond to it. Our 8-bit MCUs will ACK this address, as if it were received without the Stop condition. Waveforms that display this condition are as follows:
Figure 1. Normal I2C Transaction
This figure shows a normal transaction - a Start condition immediately followed by an address.
Figure 2. Start + Stop + Address
This figure shows the behavior of the 8-bit device receiving a Start + Stop + Address. Here, you can see that the device will still ACK the address, even after receiving a Stop condition.
Since this behavior is undefined in the I2C specification, this is not technically incorrect behavior. However, if you would like the Stop condition to be registered by the device, it is possible to implement this in software. Attached to this article is an example that uses port-match to track stop conditions on the C8051F390. The resulting device response is below:
Figure 3. Start + Stop + Address with fix