I'm using the Aardvark I2C/SPI Host Adapter as an I2C master with the Aardvark Software API. Using C and LabVIEW drivers, I have seen the 1ms delay between separate executions as stated in section 3.8.4 in the Aardvark Host Adapter User Manual. For the next series of tests, I'll need to run the devices and the I2C data at a higher speed. Do you have any suggestions to speed up the sequential I2C execution and reduce the USB delays?
Response from Technical Support:
Thanks for the questions! The Aardvark adapter can operate at 1K Hz - 800KHz bitrate as an I2C master or an I2C slave. Many optimizations have been employed to decrease the setup time for the Aardvark adapter. The byte throughputs within each transaction are very close to the theoretical maximum byte throughput of 1/9 of the bitrate.
Regarding USB delays, the Aardvark adapter has a 2ms round-trip latency, which is caused by the full-speed USB link between your computer and the Aardvark adapter. The GUI and the operating system may add additional delay due to internal overhead. With the current version of the Aardvark adapter and the Aardvark API, there are no options to affect these delays. For additional information about the Aardvark I2C Signaling Characteristics, please refer to section 2.3 of the Aardvark I2C/SPI Host Adapter User Manual.
For much higher I2C data speeds and reduced USB latency, we recommend our new Promira™ Serial Platform.
The Promira Serial Platform supports the I2C master mode at 1 kHz to 1.02 MHz, and the I2C slave mode at 1 kHz to 500 kHz; offering programming speeds up to 2x faster than that of the Aardvark adapter. When using USB 2.0 connectivity, the Promira platform uses a high-speed USB link between the Promira platform and the computer, which reduces the USB latency from 2ms to about 250us. The Promira platform also has an asynchronous interface that may provide additional speed-up for your setup. Other advanced features include functioning as an I2C master up to 1 MHz, Integrated level shifting from 0.9V to 5.0V, and USB 2.0 / Ethernet connectivity for faster downloads, remote control, and factory floor automation.
Regarding delays, every Promira platform I2C master read transaction will have a delay before the last byte, and there may be additional delays between bytes during the I2C master read and write. Although there is no inter-byte delay for the most part of the I2C transaction, the Promira Serial Platform occasionally requires additional time to process the received bytes and set up the next bytes. In this case, delay is inserted on the I2C bus. There can also be additional overhead caused by the operating system between the Promira API calls. For more information about the Promira I2C signaling characteristics, please refer to section 2.2 of the Promira Serial platform User Manual. For more information about Promira Software API, please refer to section 5 of the Promira Serial Platform User Manual.
There are delays that are inherent to the I2C bus protocol. The I2C requires that 9 bits are sent for every 8 bits of data; the throughput will not be exactly 1/8 times the bitrate. The maximum bitrates are only achievable within each individual byte; the bitrates do not extend across bytes. There is also a finite time required to set up a byte transmission.
For additional information, please refer to the following documents:
- Promira Serial Platform Quick Start Guide
- Promira Serial Platform User Manual
- I2C Active - Level 1 Application
- Aardvark I2C/SPI Host Adapter User Manual
We hope this answers your question. If you have other questions about our host adapters or other Total Phase products, feel free to email us at firstname.lastname@example.org or submit a request for technical support.