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 Causes an I2C Bus Lock and How Can I Correct That?
Published: 2025-07-02 Updated: 2025-07-08
Rena Ayeras

Traffic jam that represents blocked data when the data bus is locked or not released

Image by Ralf Vetterle

Question from the Customer:

I started a new project that uses the Aardvark I2C/SPI Host Adapter with the Flash Center Software. I am trying to read an EEPROM device, but in the Transaction log I see that the I2C bus locked. What could cause the bus lock? What do I need to analyze and change?

I am using a 10-pin Split Cable (TP240212) to connect the device:

  • Pin 4: Black pin for GND
  • Pin 5: Orange pin for SDA
  • Pin 6: Brown pin for SCL
  • Pin 8: Yellow pin for VCC

Here is the data log:

Customer data results of locked I2C bus displayed from Flash Center Software

Response from Technical Support:

Thank you for your questions! The I2C bus can be locked due to timing or other common issues, which are discussed in the following sections.

I2C Bus Locked from Timing Conflict

A bus to lock can occur when a timeout happens due to the data or clock line being held low.

An I2C bus can become locked when an I2C packet is in progress and the time since the last I2C event executed or received on the bus exceeds the bus lock timeout. This is typically occurs when the clock line is held low by another device, or the data line is held low, preventing the Aardvark adapter from issuing a start condition. When timeout occurs, the Aardvark adapter resets its own I2C interface, and no further action is taken on the bus.

If you are using Aardvark Software API, you can execute the API function aa_i2c_bus_timeout, which sets the I2C bus lock timeout in milliseconds. For more information about API commands and error codes, see section 5.5 I2C Interface of the Aardvark I2C/SPI Host Adapter User Manual

On occasion, this sometimes occurs if the firmware on the Aardvark adapter is outdated and needs to be updated. The latest firmware can be downloaded on our website.

 

Functionality and Known Conditions

Here are some basic details to check: hardware issues that can cause the I2C bus lock up, and verifying the Aardvark is working properly.

Known Hardware Errors for I2C Bus Lock Up

The following hardware scenarios could damage the Aardvark I2C/SPI Host Adapter. These are common errors that can cause failures, including I2C bus lock ups.

  • The supply voltage is greater than 5V
  • The output pins are shorted
  • Direct short to GND on signaling pins
  • The units are supplied with overvoltage

Verifying Aardvark Adapter Operates Correctly

Listed below is a basic GPIO test to verify that the Aardvark adapter is working properly. It is assumed that the firmware has been updated. This process uses Control Center Serial Software:

  1. With the Aardvark adapter not connected to your target system, plug the Aardvark adapter into your PC and open the Control Center GUI.
  2. In the Control Center Serial Software, connect to the Aardvark adapter and choose the GPIO only mode.
  3. Ensure the I2C pull-ups are disabled in the Aardvark menu.
  4. Set all the directions to OUT, and set all outputs to 0.
  5. Using a DMM, verify that all the pins are outputting 0V.
  6. Now set all the outputs to 1, and verify that the outputs are producing 3.3V.
  7. Do similar testing for the input pins, sending a 3.3V or 0V signal to each input and seeing if the Aardvark adapter sees the signals properly.

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.