How Do I Make the Promira Serial Platform Work with 10-bit Addresses?

Question from the Customer:

I’ll be using the Promira Serial Platform in I2C slave mode. I have two questions:

  • Does Promira recognize RESTART signal when configured as a slave?
  • Can I configure a slave Promira platform to respond 10-bit addresses?

Response from Technical Support:

Thanks for your questions!  To start, the repeat start condition is recognized when the Promira Serial Platform  is configured as slave.

The Promira platform in slave mode does not natively support 10-bit addressing. However, we have a workaround solution for 10-bit addressing for the Promira platform in slave mode.

Set Up the Data for the Promira Serial Platform to Respond to 10-bit Addresses

You can use this workaround with Promira platform and the Control Center Serial Software. Note, the 10-bit addressing mode of an I2C bus is transparent to slaves with 7-bit addresses because the master sends two address bytes instead of one.

The 10-bit addressing mode is transparent to slaves with 7-bit addresses
Total Phase uses 7-bit addressing for all of its products.  To ensure that 10-bit addressing will be properly handled, 10-bit addressing was designed to be compatible with 7-bit addressing. This allows developers to mix two types of devices on a single bus. When communicating with a 10-bit address device, a special reserved address is used to indicate that 10-bit addressing is being used.

Here are the instructions:

Set the Promira platform's slave address to the first 7-bits sent by the master.

  • The first address byte consists of the extended addressing code (0b11110) plus the 2 most significant bits of the device address and the read/write bit.
  • The second byte contains the 8 least significant address bits.

The Promira platform will respond to 10-bit addressing if its slave address is set to the first 7 bits sent by the master. For example, to send a write command to a slave with address 0x355, the master sends the following:

  • Byte 1: 0b11110110 (5-bit extended addressing code + 2 most significant address bits + 1 write bit)
  • Byte 2: 0b01010101 (8 lower bits of 10-bit address)
  • Bytes 3+: Write data. In this case, you set the slave address of the Promira platform to 0b1111011 (0x7B).

Note that the first data byte the Promira platform sees is not actually data; it is the second address byte sent by the master. For additional information about this method,  please refer to the knowledge base article 7-bit, 8-bit, and 10-bit I2C Slave Addressing.

We hope this answers your question. Additional resources that you may find helpful include the following:

More questions? Other projects? You can also contact us and request a demo that applies to your application, as well as ask questions about the Promira Serial Analyzer and other Total Phase products.

Request a Demo