Skip to main content
Explorer
March 26, 2024
Solved

stm32H503RB Determination of I3C IBI payload size

  • March 26, 2024
  • 2 replies
  • 1758 views

Hi,

I am using the nucleo-H503RB I3C (Controller mode) with this example to connect to an I3C standard chip. The sensor transmits IBI with 5 bits of payload but I noticed that the STM32 receives only 4 bits, and then it stops receiving the fifth bit.

Is there any method I can define the receive IBI payload size on the controller side? Any kind of help is appreciated. :)

 

    This topic has been closed for replies.
    Best answer by Foued_KH

    The maximum IBI payload data is 4 bytes.

    I3C maximum read length register (I3C_MAXRLR) : 
    IBIP[2:0]: IBI payload data maximum size, in bytes (when I3C acts as target)
    000: null payload data size (only allowed when BCR2 = 0 in the IC3_BCR register)
    001: 1 byte (mandatory data byte MDB[7:0]
    010: 2 bytes (including first MDB[7:0])
    011: 3 bytes (including first MDB[7:0])
    100: 4 bytes (including first MDB[7:0])
    others: same as 100

    Foued

     

    2 replies

    ST Employee
    March 26, 2024

    Hello @Hexu , 

    The maximum (static) payload data size is given by IBIP[2:0] in the I3C_MAXRLR register. it can be 1, 2, 3 or 4 bytes.

    Br,
    Foued

    HexuAuthor
    Explorer
    April 3, 2024

    Hi @Foued_KH 

    Thanks for your kind reply, please forgive me that I am a beginner using the STM series. Just want to ask a dumb question: How can I modify I3C_MAXRLR register? I tried to modify those definitions and I still received 4 bytes of IBI payload.

    Hexu_0-1712137063613.png

     

    Foued_KHAnswer
    ST Employee
    April 3, 2024

    The maximum IBI payload data is 4 bytes.

    I3C maximum read length register (I3C_MAXRLR) : 
    IBIP[2:0]: IBI payload data maximum size, in bytes (when I3C acts as target)
    000: null payload data size (only allowed when BCR2 = 0 in the IC3_BCR register)
    001: 1 byte (mandatory data byte MDB[7:0]
    010: 2 bytes (including first MDB[7:0])
    011: 3 bytes (including first MDB[7:0])
    100: 4 bytes (including first MDB[7:0])
    others: same as 100

    Foued