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 Do I Set Up a 10-bit I2C Slave Address for an Aardvark I2C/SPI Host Adapter?
Published: 2025-08-27 Updated: 2025-09-24
Rena Ayeras

Image by Geralt

Question from the Customer:

I need to set up an Aardvark I2C/SPI Host Adapter as I2C slave device that will respond to a 10-bit slave address. So far, I am only able to set up a 7-bit address. My questions:

  • How do I set a 10-bit slave address?
  • How do I transfer data between the master device (target hardware) and the Aardvark adapter (slave device)?
Response from Technical Support:

Thank you for your questions! The Aardvark I2C/SPI Host Adapter supports standard I2C addressing modes, with the following distinctions:

  • In master mode, the Aardvark adapter can be configured for either 7-bit  or 10-bit addressing.
  • In slave mode, the Aardvark adapter natively supports 7-bit addressing and cannot be directly configured for a 10-bit address. However, we have a proven workaround that enables 10-bit addressing in I2C slave mode.

10-bit Slave Address Workaround

The 10-bit addressing mode on an I2C bus is transparent to slaves with 7-bit addresses because the master sends two address bytes instead of one. Here is the methodology:

  • Set the Aardvark adapter’s slave address to match the first 7-bits sent by the master. In 10-bit addressing, the first address byte includes:

    • the extended addressing code (0b11110)
    • the 2 most significant bits of the 10-bit address
    • the read/write bit.
  • The second address byte contains the remaining 8 least significant address bits of the 10-bit address.

By configuring the Aardvark adapter’s slave address to the first 7 bits, the adapter will respond to 10-bit addressing.

For example, to send a write command to a slave with 10-bit address 0x355, the master device would deliver the following to the slave device:

  • Byte 1: 0b11110110 (5-bit extended addressing code + 2 most significant address bits + 1 write bit)
  • Byte 2: 0b01010101 (lower 8 bits of 10-bit address)
  • Bytes 3+: Write data.

In this case, set the Aardvark's slave address to 0b1111011 (0x7B).

Note: The first data byte the Aardvark adapter sees is not actually data. Instead, it is the second address byte sent by the master device. For more information about this process, refer to our KB article 7-bit, 8-bit, and 10-bit I2C Slave Addressing.

Formats for 10-bit Slave Address

The slave address is the address of the target I2C slave device. This address can be entered in either decimal or hexadecimal notation.

  • If using hexadecimal notation, preface the number with 0x.
  • For 7-bit and 10-bit addressing, the 7 and 10 least significant bits are used to specify the address, respectively.

All I2C products from Total Phase follow this standard convention. The slave address used should only be the top seven bits. In the case of the Aardvark I2C/SPI Host Adapter, the software will automatically append the correct read/write bit depending on the transaction to be performed.

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.