The simple example is to trigger on a read or write to a specific I2C address when there are multiple I2C devices on the bus. Next, I want to look at what is being written to (or read from) the starting address in a memory at that address… These could be combined with the level of an unrelated channel to trigger the capture. I’ve had cases where the data read back from the memory is wrong. I don’t know if it is going in wrong, or coming out wrong, or not going in a all. I need to look at the write transaction and analyze it, then the read transaction and analyze it. This would require looking at both the protocols as well as the waveforms to see if there is a timing issue.
If I have an I2C transaction that occasionally fails at the hardware level. I would want to trigger on the failure. This could be an I2C read/write that should work, but hits a timeout or NAK from the device.
I would like to use the data table to look at the more complicated transactions. It is easier to look at the data block being written to a memory in that format rather than trying to scroll across the data at the top of a waveform. In the past, I’ve grabbed transactions in the data table, exported them to Excel, then used it to do further analysis. For example: I may have a set of data has a CRC at the end that is wrong for some reason. I would capture the data for the transaction, export that to Excel, then use it to calculate the CRC. Today, I cannot get the table out from the Logic GUI to import into Excel. It would be nice just to cut & paste the area I what from the GUI into Excel. The trigger would make the data I want always like up at the same place so it is easy to find each time. In the V1 GUI I had to export the data to a file, then import that into Excel. This was a pain, but at least I could do it.
For the serial example, it may not be some simple text that I’m trying to trigger on. It may be a transaction between two devices, and that may not be ASCII. I may have a protocol that starts with a character say the STX character. I want to capture the data starting with that character. Once again, it is easier to look at this transaction in the data table that the waveforms. If I see something odd, I might want to look at the waveform to see if it may be a hardware or timing issue such as baud rate being slightly off.
A slightly different scenario I had a while back was: I was interfacing with a GPS via I2C and the firmware had to read a particular address and it would return the number of bytes to read when data was ready. It may take 1 second or longer to return any value other than zero. Then the firmware would go read that many bytes from a different address in the GPS. I’d like to trigger on reading any value other than zero from that device address. I would then capture that transaction and the one that follows reading the data block.
Yes, I’m available to talk 1:1. Just let me know when you are ready.