I have a couple of feature requests for the I2C Decoder/Trigger. I hit some cases at work debugging an I2C bus that I couldn't just set a trigger on. I actually hit these on the RTM3004 at work, but I just checked my RTB2004 and the feature appears to be common, so I chose to post here since it's a more active thread.
I have no idea how feasible these are, just that I hit on them while debugging a troublesome I2C bus.
The first feature is related to the "Trigger on NACK" which I have found very useful in the past for debugging unexpected transaction failures, but this bus also has read traffic, where a NACK is a normal occurrence, and so the scope just triggered on every read transaction, hiding the failed write transaction in all the other triggers.
At a minimum I'd love a "Trigger on unexpected NACK" that would ignore the normal NACK at the end of a read cycle that is immediately followed by a stop condition. Although that brings up the idea that an "Unexpected ACK" trigger might be useful to trigger when the master fails to perform the spec required NACK at the end of a receive. An even more useful NACK trigger would include the above, but allow it to be filtered by address, so that a system containing a device that intentionally NACKs its address, like an EEPROM that is still busy writing, could be ignored by filtering for the other device you are having trouble with.
The second I2C trigger is a modification of the address and data trigger, to include being able to select trigger on an address only and zero data bytes. The suggested work around of setting a single byte trigger with all don't care bits does not cover the case of a system either getting a NACK and giving up without sending data, or simply a protocol error where the address is sent, but a stop condition is generated. I ran into this when I couldn't trigger on just the specific NACK, but I knew what address the issue was and thus tried to trigger on any access to that device to see if there was an analog issue during access to it causing the problem.
I hope these are feasible and I'm not the only person who thinks these would be useful. Although if I have just missed how to do these, I'd love to be corrected, but I could not find a way to do this (other than hacking out most of the complex system code to not do any other operations that trigger the scope).