Showing results for 
Search instead for 
Did you mean: 

I3C error in transmission/reception process - NUCLEO-H563ZI

Associate II

I am using 2 Nucleo-H563ZI boards, one as controller and the other target, and referencing the knowledge base post "How to set up and run the I3C_Private_Command_IT controller and target example projects" yet I am getting an error. From what I can tell, both projects can be used on the same laptop unit, and only one of the projects needs to be running at a time, but please correct me if this is wrong. I also have a Logic Analyzer hooked up to the set up and am receiving this analysis, pictured below.

Screenshot 2024-05-23 155815.png

According to the post I'm following, when the user button is pressed on the controller board for the first time, the LED1 on the controller should continue to toggle quickly and the LED1 on the target should turn solid green, but this never happens. Instead, the target LED never turns on, and the controller LED toggles slowly. According to the project read me, this means there is an error in the transmission/reception process. What is the best way to determine what is the error is exactly?

Also, according to the analyzer, the controller is sending out a 7F instead of the expected 7E broadcast. The example projects were not altered when imported- so just running ENTDAA- but there's clearly something not right with the setup or use. How do I determine what is causing the error? Do you think it's the 7F? If so, why would it be sending this out instead of 7E?

ST Employee

Hello @JRM_02 ,

For your case:
-Run the Controller before run the Target, this will let a false startup phase on Target side as there is no high level on the bus, if the Target is started before the Controller.
- Check if the target already have a dynamic address. ( I3C_DEVR0 register ( target side ) or with analyzer)

You can check the available examples in the CubeFW :

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.

@Foued_KH  Thank you for the response but I am going to need more information please. I see 0x40005C60 in register I3C_DEVR0 on both the Target and the Controller and bits 1-7 is the dynamic address which is 0x30. First I have both STM32H563ZI boards plug in and both have their LEDs green. So both are active running their own board firmware. When I start the controller code only, the code runs to the Handle_ENTDAA_Controller() routine and the analyzer shows no activity. When Handle_ENTDAA_Controller() code runs the analyzer shows that the controller is try to send something  but the Target did not turn any green LED on, which means it never recieved anything. This is just not working for me.


Does the code actually get loaded into the board when the Debug Configuration->Debugger [Debug] button is mouse clicked? When I don't use the [Debug] button but debug under RUN so I can walk the code the code is not loaded into the STM board correct? or is it? 

How do we clear what has been flash on the board? Does the black button do it or does it just restart the downloaded code? 

Is there a different version of the firmware we should be using than V3J15M6?

I've even tried switching which board is the controller and target but I'm getting the exact same results- controller LED flashes quickly, i press the blue button, the target LED never comes on, and the controller begin blinking slowly.

This is very confusing, is there a way we can talk to someone who can help support through email directly perhaps? just trying to get some more answers and I'm afraid it'd be too much to type here. 

Any help is much appreciated!


Associate II

Need clarity please.

1 I downloaded the I3C_Controller_Private_Command_IT project from EXAMPLES_MIX and it did not work at all because even after flashing the board, the LED never turned on or toggled. Anybody know why?

2) I reloaded I3C_Target_Private_Command_IT and I3C_Controller_Private_Command_IT from EXAMPLES_LL, made no changes to them and I still cannot get them to work following the example instructions given above. I currently believe there is some setting in the compile that I am not setting correctly, because the analyzer always shows start or start_repeat followed by 0x7F never a 0x7E. It as if the wrong code is being generated. I see the green led blinking 3 times a second, then after we press the blue button, it blinks slowly, meaning an error, which of course is correct if 0x7F instead of 0x7E is being transmitted. What settings should we be using for the compile and debug? The MX settings on the wiki differ from the example .IOC settings. Is this a factor? The wiki lists different clock and pin settings than the example defaults, but they are using a different board, so I just want clarification.

Thankyou in advance

Here are the .IOC file in case any one can see anything off. Again, it is currently set to the example defaults.

Also, under project manager in the .IOC file, there is an option for "enable multi-threaded support." Should this be enabled? Or does it not matter?

Thank you, again, for any help.