Which SPI Host Adapters Work Best for Development and Verification?

Question from the Customer:

For a project focused on SD cards in SPI mode, I am looking at the Aardvark I2C/SPI Host Adapter and the Cheetah SPI Host Adapter. To cut costs, I am also looking at using Beagle I2C/SPI Protocol Analyzers instead of oscilloscopes. Looking at the specifications, I want to confirm how the Aardvark adapter works.  Based on the article How Do I Set Up SDC or MMC Cards in SPI Mode to Verify Files were Successfully Programmed?, it looks like the Cheetah adapter would do a better job for me, at least for the verification part of the project. When it’s finalized, the verification process will be moved to the production floor, where speed matters.

This project does not require transferring files from an SD card or managing file systems. I need to handle block reads and writes of raw data. Here are my questions:

  • Is there a specific step of the flow that does not work with the Aardvark adapter, or is it every single command?
  • In SPI mode, can the Aardvark and Cheetah adapters build up multi-byte transactions within a single chip select?

SPI clock pauses are acceptable for this application. My questions are based on the following SD card specifications:

  • While the SD Memory Card channel is based on command and data bit streams that are initiated by a start bit and terminated by a stop bit, the SPI channel is byte orientated.
  • Every command or data block is built of 8-bit bytes and is byte-aligned with the CS signal; the length is a multiple of 8 clock cycles.
  • The card starts to count SPI bus clock cycles at the assertion of the CS signal. Every command or data token shall be aligned with an 8-clock cycle boundary.

Response from Technical Support:

Thanks for your questions! Based on your project requirements and the SD Card specifications, your plan to use the Aardvark adapter for development and the Cheetah adapter for production should work.

The following sections describe how the Aardvark adapter and the Cheetah adapter transmit data.

Aardvark Adapter Data and Timing

The Aardvark adapter supports your requirements for development.

  • The Aardvark adapter can only send data in multiples of bytes. It is not capable of sending data bit by bit; each byte would be sent in 8 clock cycles.
  • The Aardvark adapter has a td between two bytes of 8 bits: as an SPI Master, 7 to 9µs; as an SPI Slave, minimum 4µs.
  • There is approximately 9µs of setup time required in between each byte. This results in a total transmission period of the byte transmission time plus 9 µs.

In summary:

  • The Aardvark adapter can transfer up to 8 bits data without td delay.
  • The Aardvark cannot transfer 16-bit data (or more) without td delay.
  • The maximum bitrates are only achievable within each individual byte and do not extend across bytes.

The delay between each byte of data sent is due to the characteristics of the Aardvark adapter. For example, you can write two 8-bit bytes, AB CD, in the transaction log of Control Center Serial Software, and submit send: "assert SS, send AB CD, deassert SS". There will be gaps in the middle, but it is still a single transaction with slave select (SS) asserted at the beginning and de-asserted at the end – as specified in your requirements.

For more information, please refer to the Signaling Characteristics section in the Aardvark I2C/SPI Host Adapter User Manual.

Speed and Latency Advantages - Cheetah SPI Host Adapter

The Cheetah adapter actively communicates on the bus, operates at high speeds up to 40+ MHz, can provide gapless shifting, and provides control over the timing of the data that is shifted out.

  • Since the Cheetah adapter uses a High-speed USB link, the 2ms USB latency seen with the Aardvark adapter would be reduced to about 250us. This advantage occurs when using the Cheetah adapter's synchronous interface.
  • Using the asynchronous interface that may provide additional speed-up. The asynchronous interface allows you to queue the data to be sent by the Cheetah adapter, which allows gapless shifting.

For creating SPI transactions, the Cheetah Software API differs from the Aardvark Software API, and may provide more benefits for production. For information about the advantages of the Cheetah Software API, please refer to our article about Using Cheetah to Send Multiple SPI Packets with One Transfer.

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