Skip to main content
Associate
July 3, 2025
Question

I3C – Can’t get bidirectional Communication working

  • July 3, 2025
  • 1 reply
  • 297 views

Hi guys,
I'm coming from Arduino and recently started working on a project where I need a protocol that supports bidirectional communication between MCUs and Hot-Join.
I decided to give I3C with the STM32H5 a shot and got myself some Nucleo-H503RB boards.

Based on the example projects from ST on GitHub:
https://github.com/STMicroelectronics/STM32CubeH5/tree/main/Projects/NUCLEO-H503RB
I got these things working:

  • Target sends a Hot-Join
  • Controller detects it and assigns a dynamic address
  • IBI from the target is received on the controller

What doesn’t work

I can’t get regular data communication working.

For example, I want the controller to send a string on a button input like "ping" to the target, and the target should respond with "pong".

From my understanding, communication in I3C works something like this:

Target to Controller:

  1. Target sends IBI
  2. Controller receives IBI and starts listening using HAL_I3C_Ctrl_Receive_IT()
  3. Target sends data using HAL_I3C_Tgt_Transmit_IT()
  4. Controller receives data in HAL_I3C_CtrlRxCpltCallback()

Controller to Target:

  1. Target actively checks if the controller wants to send data using HAL_I3C_Tgt_Receive_IT()
  2. Controller sends data using HAL_I3C_Ctrl_Transmit_IT()
  3. Target receives data in HAL_I3C_TgtRxCpltCallback()

I just want to get a basic setup running where the target sends "ping" and the controller replies with "pong", and vice versa.

Any help or a minimal working example for STM32 HAL I3C communication would be really appreciated.

1 reply

Technical Moderator
July 3, 2025
"To give better visibility on the answered topics, please click on ""Accept as Solution"" on the reply which solved your issue or answered your question.Saket_Om"