cancel
Showing results for 
Search instead for 
Did you mean: 

I3C – Can’t get bidirectional Communication working

BioKeks
Visitor

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 1
Saket_Om
ST Employee

Hello @BioKeks 

Please refer to the examples below: 

STM32CubeH5/Projects/NUCLEO-H533RE/Examples/I3C at main · STMicroelectronics/STM32CubeH5 · GitHub

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