What Are Partial Errors and How Can I Avoid Them When Analyzing SPI Data?

Question from the Customer:

I have a question about using the Beagle I2C/SPI Protocol Analyzer. I am testing SPI devices. I have two sets of data which are shown below. I am using the Control Center Serial Software for viewing and analyzing the captured data.

Comparing new and old data:

The old data shows errors. I have personally confirmed there was a buffer issue in the devices being tested. That issue should have been resolved. However, after making that correction, the new data shows that some of the buffering is still incomplete.

Old captured data from Beagle analyzer shown on Control Center Serial Software Old Captured Data


New data captured from Beagle analyzer displayed on Control Center Serial Software New Captured Data

The Device Settings that I selected:

The settings the customer selected on Data Center Serial Software for the Beagle protocol analyzer Data Center Serial Software – Device Settings


My question - can you check if I made the correct settings for my Beagle I2C/SPI Protocol Analyzer? Also, are there other setup factors that I should look into? I want to make sure the data readings are correct before I initiate more troubleshooting with the SPI devices.

Response from Technical Support:

Thanks for your questions!  Most of your setup is correct – there is one change we will suggest. In addition to going over your configuration settings for your test setup, we will provide details about the transaction log data.

About Partial Errors

In the Error column of the Data Center Software Transaction Log, P1, P3, P3 … P7 are indications of Partial last byte errors.

  • As the analyzer operates at a byte level, the P error shows that the analyzer did not capture an entire byte.
  • The number following the P represents how many bits of the last byte were captured.

The Beagle I2C/SPI analyzer uses the SPI slave select line to frame each transaction. For example, if the Beagle I2C/SPI analyzer sees one bit and then sees the slave select line go inactive, the rest of the byte will be padded with 0s.

In summary, the partial last byte occurs when the last byte in the data buffer is incomplete. This occurs when the number of bits of data captured did not adhere to the expected data size. This can occur for various reasons, which we will discuss in the following sections.

Optimizing the Setup

Sampling rates can greatly affect the results of the captured SPI data. There are three different sampling rates that can be used to monitor the SPI bus. It appears that you selected 20 MHz. As a rule of thumb, we recommend selecting a sampling rate that is at least four times faster than the data rate of the monitored bus. For your case, we recommend increasing the rate to 50 MHz and retrying your setup.

Cabling and Signals

We recommend using short I2C/SPI cables, about 5” in length. A longer cable length can adversely affect the signal integrity and the operational speed. The SPI (and the I2C) bus does not have any inherent distance capability. Because of that, excessive cable length can easily corrupt the signals being tested, causing any number of problems including partial data size errors.

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.

Request a Demo