I am trying to use Aardvark I2C/SPI Host Adapter and the Flash Center Software to program an I2C device, but it keeps failing because the bus is locked as shown below.
What causes the I2C bus lock? What do you suggest I do to keep the bus open so I can program the I2C device?
Response from Technical Support:Thanks for your question! An I2C bus locks when an error occurs or a “wait period” exceeded the timeout period. The details are provided below.
The bus error condition is a generic error that indicates a hardware issue. In this case, a bus error occurs when a START or STOP condition occurs at an illegal position in the format frame. Bus errors rarely occur. In this case, it is likely that a configuration or condition is causing the problem.
The bus lock condition occurs when the allowed timeout period has been exceeded. In summary: transmitting an I2C packet is in progress, and the timing from when the last event was executed or received on the bus exceeds the allowed “wait” time. This wait time occurs when the SCL (serial clock) line of the bus being held low.
When excessive timeout is observed, the Aardvark adapter resets its own I2C interface – no further action occurs on the bus including programming a device.
For troubleshooting and analytics, as well as programming devices, we recommend using the Control Center Serial Software. This tool can be used to run batch scripts for testing and save the transactions in a CSV file for analyzing the data. We have two knowledge base articles that are related to programming devices, which may be helpful for your project:
We also have a video that demonstrates programming EEPROMs:
We hope this answers your questions. Additional resources that you may find helpful include the following:
If you have other questions about our host adapters or other Total Phase products, feel free to email us at sales@totalphase.com. You can also request a demo that is specific for your application.