4.3 Functional Description

After initialization, the I3C Target generates a Hot-join request to an I3C bus and gets a dynamic address assigned. The I3C Controller initiates a Read, Write, or Reset for the I2C/SPI client devices and Read/Write to UART devices by sending specific commands to the I3C Target through a Private Write transaction. In this Private Write transaction, the first byte of the payload is a Function ID. The Function ID consists of the client ID of I2C/SPI clients, the device ID for UART devices, and the commands.

Table 4-1. Function ID
BitDescription
b7: ResReserved
b6:5: Command [1:0]

00 - Reserved

01 - Read

10 - Write

11 - Client Reset

b4:3 Device ID [1:0]

01 - UART1

10 - UART2

11 - Invalid UART Channel selection

00 - Device is I2C or SPI based on Client ID

b:2:0 Client ID [2:0]

000 - I2C device (The address of the I2C device should follow in the next byte)

001 ,010….111 - Identifier for each SPI device.

b0 = 1, CS1 is selected

b1 = 1, CS2 is selected

b2 = 1, CS3 is selected

The PIC MCU decodes the Function ID sent by the I3C Controller to decide what actions to perform. For each command, the sequence of actions is described in detail in the section below. For instance, if the controller wants to write to an I2C client device, it must send a Private Write transaction with the first byte as 0x40 followed by the I2C client address and the data to be sent. The microcontroller decodes the first byte and initiates an I2C write operation.

Note: The I3C controller must know the I2C client address, the CS pin corresponding to the SPI client, I2C/SPI client devices connected to reset and interrupt pins, the UART port connected, and the Stop byte data for UART receive operation.

The section below explains each operation performed by the multi-protocol translator with a data sequence diagram.