I2C SPI USB CAN eSPI Cable Testing View All Quick Start Guides User Manuals Software Downloads Knowledge Base Videos Case Studies App Notes White Papers Sales Support How to Order
Products Blog Sales Support Contact Search
What Do I2C Error Codes Reveal About My I2C Data Capture and Bus Issues?
Published: 2025-05-14 Updated: 2025-06-20
Rena Ayeras

Image by Geralt

Question from the Customer:

I am troubleshooting an I2C device with the Beagle I2C/SPI Protocol Analyzer. Looking at the captured data on Data Center Software, I see several error codes. What do these error codes indicate, and what are the causes?

  • S/P, S, and P
  • TP8, MP5 and TP3
  • Also, as shown with the TP8 and MP5 errors, what does “*” on the data indicate?

Here is the captured data:

I tried using an oscilloscope to better understand the error codes. In this example, I am looking for the T8 error. The signal looks clean – I do not see what the T8 error indicates. Can you explain why the error is not visible on the oscilloscope?

View from the Data Center Software:

View from the Oscilloscope:

The timing of the error is near the beginning of the trace, highlighted with the vertical dashed line:

Response from Technical Support:

Thank you for your questions!  We will describe what is indicated by the error codes, and the likelihood of why an error is not visible in your oscilloscope.

Description of Error Codes

The shared trace file snapshot indicates the presence of Time out (T) errors, Middle of packet (M) errors and Partial last byte (P) errors.

Time out (T) errors indicate that the capture for transaction timed out while waiting for additional data. The timeout used by Data Center is 250ms.

  • The Timeout error occurs when no data was seen before the timeout interval occurred.
  • This may indicate that no data was seen on the bus or there was a pause in the transmission of data longer than the timeout interval.

P1, P2, P3 ..... P8 errors indicate Partial last byte (P) errors. The partial last byte occurs when the last byte in the buffer is incomplete. As the Beagle I2C/SPI Protocol Analyzer operates at a byte level, the P error indicates that the analyzer was not able to capture an entire 8-bit byte — only a few bits were captured.

  • The number following the P represents how many bits of the last byte were captured. The Beagle I2C/SPI Protocol Analyzer uses the SPI slave select line to frame each transaction.
  • For example, if the Beagle I2C/SPI analyzer detects only 1 bit of data before the slave select line becomes inactive, it pads the remaining bits of the byte with 0s. This indicates that the number of captured bits did not align with the expected byte size.

Middle of packet (M) errors indicate that the data capture started in the middle of a packet.

  • The Middle of packet error is seen when data collection began partway through an active communication.
  • This indicates that a transaction was already transmitted across the bus when the read function was called.

The  S/P column is unique to the I2C Transaction Window. It indicates whether the start and stop conditions were observed for each record.

  • S indicates the start condition and P indicates the stop condition.
  • In the case of repeated start conditions, transactions that have no stop condition are displayed with only an ‘S’.

The “*” asterisk in the I2C data column differentiates NACK’ed bytes from ACK’ed bytes. The I2C address of the slave device represents the the target of the transaction and is shown in hexadecimal format.

  • An asterisk following the address indicates the address byte was NACK'ed.

Additional information:

  • Transactions that are zero bytes long and have no address field are displayed as “None”.
  • In certain situations, an I2C transaction may not specify the lowest 8 bits of a 10-bit slave address. In these situations, the Address (Addr) column will render the incomplete addresses as 0XX, 1XX, 2XX, or 3XX, depending on the value of the first two address bits.

TP8: Oscilloscope Trace vs. Digital Trace

The TP8 error occurred while attempting to read 1 byte from address 0x1D, right after a successful read transaction.

  • This error typically indicates the Timeout (T) error occurred when no data was detected before the timeout interval occurred.
  • This may indicate that no data was detected on the bus or there was a pause in the transmission of data longer than the timeout interval.

In your case, the oscilloscope trace may have been obscured because the bus was released too early, resulting in an incomplete byte transmission. Also, since this occurred at end of the capture, it suggests that the capture may have been stopped while a byte was midway through transmission.

For more information comparing the Beagle protocol analyzers to other tools, refer to Oscilloscope vs. Logic Analyzer vs. Protocol Analyzer - Understanding Their Roles in Debugging.

Sampling Rates

Sampling rates can affect data results. There are three different sampling rates that can be used to monitor the SPI bus. Although you have used 20 MHz, but as a rule of thumb, it is recommended that the sampling rate be at least 4 times faster than the data rate of the monitored bus.

We hope this answers your questions. Additional resources that you may find helpful include the following:

If you want more information, feel free to contact us with your questions, or request a demo that applies to your application.