2024-12-11 04:16 PM
I am using two STM32H503 boards. One is programmed as an I3C controller, the other as an I3C target. My goal is to have the target send an IBI on the bus and the controller will receive the IBI and then immediately issue a pended read -- there will be no stop condition on the bus after receipt of the MDB of the IBI, the controller will issue a repeated start and then perform the read. The target will issue the IBI and then be ready to immediately respond with the data to transmit. So, I'm assuming I will need to pend the write on the target before issuing the IBI.
I am looking at the controller diagram for IBI on figure 670 on page 2175 of RM0481 Rev 2. There is the following note with 2 asterisks :
Repeated start (Sr) if there is a pending transfer to execute and if I3C_DEVRi.SUSP = 0, else stop (P) in push-pull
Is there any information or example on how to pend an I3C read to happen immediately after the IBI with no stop -- just a restart?
Also, on the target side I will need to pend a write transfer to happen when the controller goes to read the data after the IBI.
I tried calling LL_I3C_ControllerHandleMessage() on the controller to write the control register to pend the read, but the read happened on the bus as soon as the control register was written.