stm32 /stm32h5 /STM32H503 /I3C1 /I3C_DEVR2

Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text

Interpret as I3C_DEVR2

31 2827 2423 2019 1615 1211 87 43 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0DA0 (B_0x0)IBIACK 0 (B_0x0)CRACK 0 (B_0x0)IBIDEN 0 (B_0x0)SUSP 0 (B_0x0)DIS

DIS=B_0x0, SUSP=B_0x0, CRACK=B_0x0, IBIACK=B_0x0, IBIDEN=B_0x0

Description

I3C device 2 characteristics register

Fields

DA

assigned I3C dynamic address to target x (when the I3C is acting as controller) When the I3C is acting as controller, this field should be written by software to store the 7-bit dynamic address that the controller sends via a broadcast ENTDAA or a direct SETNEWDA CCC which has been acknowledged by the target x. Writing to this field has no impact when the read field I3C_DEVRx.DIS=1.

IBIACK

IBI request acknowledge (when the I3C is acting as controller) When the I3C is acting as controller, this bit is written by software to define the acknowledge policy to be applied on the I3C bus on the reception of a IBI request from target x:

  • After the NACK, the message continues as initially programmed (the target is aware of the NACK and can emit another IBI request later on)
  • The field DIS is asserted by hardware to protect DA[6:0] from being modified by software meanwhile the hardware can store internally the current DA[6:0] into the kernel clock domain.
  • After the ACK, the controller logs the IBI payload data, if any, depending on I3C_DEVRx.IBIDEN.
  • The software is notified by the IBI flag (i.e. I3C_EVR.IBIF=1) and/or the corresponding interrupt if enabled;
  • Independently from IBIACK configuration for this or other devices, further IBI request(s) are NACKed until IBI request flag (i.e. I3C_EVR.IBIF) and controller-role request flag (i.e. I3C_EVR.CRF) are both cleared.

0 (B_0x0): an IBI request from target x is to be NACKed

1 (B_0x1): an IBI request (with 7-bit dynamic address DA[6:0]) from target x is to be ACKed

CRACK

controller-role request acknowledge (when the I3C is acting as controller) When the I3C is acting as controller, this bit is written by software to define the acknowledge policy to be applied on the I3C bus on the reception of a controller-role request from target x: After the NACK, the message continues as initially programmed (the target is aware of the NACK and can emit another controller-role request later on)

  • The field DIS is asserted by hardware to protect DA[6:0] from being modified by software meanwhile the hardware can store internally the current DA[6:0] into the kernel clock domain.
  • After the ACK, the message continues as initially programmed. The software is notified by the controller-role request flag (i.e. I3C_EVR.CRF=1) and/or the corresponding interrupt if enabled; For effectively granting the controller-role to the requesting secondary controller, software should issue a GETACCCR (formerly known as GETACCMST), followed by a STOP.
  • Independently of CRACK configuration for this or other devices, further controller-role request(s) are NACKed until controller-role request flag (i.e. I3C_EVR.CRF) and IBI flag (i.e. I3C_EVR.IBIF) are both cleared.

0 (B_0x0): a controller-role request from target x is to be NACKed

1 (B_0x1): a controller-role request (with 7-bit dynamic address DA[6:0]) from target x is to be ACKed

IBIDEN

IBI data enable (when the I3C is acting as controller) When the I3C is acting as controller, this bit should be written by software to store the BCR[2] bit as received from the target x during broadcast ENTDAA or direct GETBCR CCC via the received I3C_RDR. Writing to this field has no impact when the read field I3C_DEVRx.DIS=1.

0 (B_0x0): no data byte follows the acknowledged IBI from target x

1 (B_0x1): the mandatory data byte MDB[7:0] follows the acknowledged IBI from target x

SUSP

suspend/stop I3C transfer on received IBI (when the I3C is acting as controller) When the I3C is acting as controller, this bit is used to receive an IBI from target x with pending read notification feature (i.e. with received MDB[7:5]=3’b101). If this bit is set, when an IBI is received (i.e. I3C_EVR.IBIF=1), a Stop is emitted on the I3C bus and the C-FIFO is automatically flushed by hardware; to avoid a next private read communication issue if a previous private read message to the target x was stored in the C-FIFO.

0 (B_0x0): I3C transfer is not stopped and C-FIFO is not flushed

1 (B_0x1): I3C transfer is stopped and C-FIFO is flushed on a received IBI request from target x

DIS

DA[6:0] write disabled (when the I3C is acting as controller) When the I3C is acting as controller, once that software set IBIACK=1 or CRACK=1, this read bit is set by hardware (i.e. DIS=1) to lock the configured DA[6:0] and IBIDEN values. Then, to be able to next modify DA[6:0] or IBIDEN, the software must wait for this field DIS to be de-asserted by hardware (i.e. polling on DIS=0) before modifying these two assigned values to the target x. Indeed, the target may be requesting an IBI or a controller-role meanwhile the controller intends to modify DA[6:0] or IBIDEN.

0 (B_0x0): write to I3C_DEVRx.DA[7:0] and to I3C_DEVRx.IBIDEN is allowed

1 (B_0x1): write I3C_DEVRx.DA[7:0] and to I3C_DEVRx.IBIDEN is disabled/locked

Links

()