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
How Can I Successfully Troubleshoot I2C Slave Read/Write Issues and Identify the Root Cause?
Published: 2025-12-03
Rena Ayeras

Photo by JESHOOTS-COM

Question from the Customer:

I am using the Aardvark I2C/SPI Host Adapter with Control Center Serial Software to read, write and troubleshoot I2C components. I have some questions:

  • My slave address is 0x40, but I am unable to access that slave address. I can access 0x20 instead of 0x40. Can you explain why? Is there a way to analyze and correct this?
  • The Transaction log does not match the values – what should I do with this case?

  • Also, I see Master Read and Master Register Read in the below interface – what is the difference between these two?

Response from Technical Support:

The issues you described are unusual and difficult to assess with the information provided. For example, there could be an issue with the setup, the DUT is unable to respond, or other issues. We do have recommendations on how to view and gather more details - to successfully troubleshoot the issues your system is having. We’ll also describe the functions of Master Read and Master Register Read.

Tools to Troubleshoot I2C Devices

We have two recommendations to troubleshoot I2C systems, and articles that show how these tools can be used: I2C/SPI Activity Board and Beagle I2C/SPI Protocol Analyzer.

I2C/SPI Activity Board for Prototyping and Debugging

For your scenario, the I2C/SPI Activity Board let’s you prototype your system and debug it against known-working slave devices. This tool can help differentiate between hardware and software bugs, and is useful for establishing a baseline for software usage.

For more information about using the tool, refer to the Knowledge Base article on “How to Read and Write to an I2C EEPROM Using the Aardvark adapter and Control Center Serial Software”. This article describes the steps for the AT24C02 I2C EEPROM found on the I2C/SPI Activity Board. Similar steps can be applied to other devices.

Beagle I2C/SPI Protocol Analyzer for Monitoring and Diagnostics

To view, capture, analyze and troubleshoot I2C bus activity, we recommend using the Beagle I2C/SPI Protocol Analyzer with Data Center Software. Applying these tools in your setup enables you to monitor the flow of I2C data on the bus in real time, with diagnostics and analysis.

The captured data can be saved in a file to share with remote colleagues, or perform additional analysis. For more information, look at this video that shows how the Beagle I2C/SPI analyzer can be used to quickly evaluate a system:

About Master Read and Master Register Read

The Control Center Serial Software’s “I2C Master Read” command performs an I2C bus read operation.

  • The Master Read simply reads the data sent by slave on the bus. The value provided "Number of Data Bytes" field is the maximum number of bytes the master will accept in a single transaction. The master may receive fewer bytes than are specified in this field, but not more. In the case that a slave does not have the requested number of bytes available, the remainder of the bytes will simply default to 0xFF due to the pullup resistors on the bus

The Control Center Serial Software’s “I2C Master Register Read” command performs I2C bus write operation without stop, and then I2C bus read operation.

  • The Master Register Read follows the typical protocol to read a register on an I2C device by performing an I2C write with the register address followed by a repeated start and an I2C read in one operation. Please consult the datasheet of your I2C slave device to ensure it follows this protocol. The implementation of Master Register Read depends upon the implementation specific to your device's data sheet.

Here is an excerpt of information from the Control Center Serial Software User Manual:

Under Master Register Read, providing information in the following field is essential:

  • Register AddressThis register address can be entered in either decimal or hexadecimal notation. If using hexadecimal notation, preface the number with "0x". Note that this is different from the I2C slave address.
  • Address WidthThe Address Width specifies the size in bytes of the register address. If the provided Register Address exceeds this width, the least significant bytes of the Register Address are used.
  • Number of Data Bytes: This value is the number of bytes the adapter will attempt to read from the I2C slave. The adapter may receive fewer bytes than are specified in this field, but not more. In the case that a slave does not have the requested number of bytes available, the remainder of the bytes will simply default to 0xFF due to the pull-up resistors on the bus.

For additional information about using Master Read and Master Read Register, refer to these articles:

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.