2025-05-14 3:07 AM - last edited on 2025-05-14 3:48 AM by Amel NASRI
Setup: NUCLEO-H503RB with X-NUCLEO-IKS4A1, using STM32CubeIDE.
To familiarize myself with I3C, I am playing around in this setup and have some source code which causes I3C interaction between the controller (Nucleo board) and two targets (daughter board). I have a logic analyzer attached.
What I cannot get to work is the "direct RSTACT", i.e. configuring one of the two targets to reset itself. After everything has come up, I expect the targets' default reset action to be "1", i.e. I3C peripheral reset. After successful dynamic address assignment to both targets, I send a direct RSTACT (CCC 0x9A) to one target, configuring the reset action to be "0" (no reset), followed by the reset pattern. I would expect the other target to lose its dynamically assigned address and respond to a subsequent ENTDAA. But no one responds.
Note that in my screenshots, the decoder is set to I2C rather than I3C (not supported) but it's still helpful.
Tell target with dynamic address 70 to not reset when the pattern comes, followed by the pattern:
Next ENTDAA - no one responds.
Absolutely identical behavior when I set the defining byte to "1" rather than "0".
Now I change the code to tell target 70 to perform a full chip reset, i.e. defining byte is "2":
Strangely, both targets have now lost their address and respond to ENTDAA:
(The I2C decoding is confusing here, but you get the point - I get two 64bit responses to ENTDAA.)
What am I doing wrong?