An I2C logger using FlexIO3: https://github.com/A-Dunstan/flexio_i2c_spy/tree/main
Logs all bytes with their ack/nack responses, and whether the transaction ended with a STOP or RESTART. Should be able to handle data transfers of up to 256 bytes, although I haven't tested that to confirm it.
I was determined to support clock-stretching during the time when the shift buffer is waiting to be read, I had to jump through a few hoops (still don't understand why a timer can't seem to drive an open-drain pin correctly) but have confirmed it works as intended.
Example output:
Logs all bytes with their ack/nack responses, and whether the transaction ended with a STOP or RESTART. Should be able to handle data transfers of up to 256 bytes, although I haven't tested that to confirm it.
I was determined to support clock-stretching during the time when the shift buffer is waiting to be read, I had to jump through a few hoops (still don't understand why a timer can't seem to drive an open-drain pin correctly) but have confirmed it works as intended.
Example output: