LPC55S36 I3C Slave Hot-Join issue

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

LPC55S36 I3C Slave Hot-Join issue

620 Views
bell_huang
Contributor III

Two LPC55S36 boards were connected for I3C communication, with one configured as the I3C Master and the other as the I3C Slave. Initially, the I3C Slave was not initialized. After the Master performed bus initialization (ENTDAA), the Slave was then initialized and issued a Hot-Join event. However, at this point, the SDA line is permanently pulled low, causing the communication to stop functioning.

 

Test steps:

(1) Reset slave board

(2) Reset master board

(3) Click SW3 on slave board

 

bell_huang_0-1752550724832.png

 

0 Kudos
Reply
7 Replies

433 Views
Harry_Zhang
NXP Employee
NXP Employee

Hi @bell_huang 

Would it be possible to make minimal modifications based on the i3c SDK example to verify the this functionality?

 

BR

Harry

0 Kudos
Reply

425 Views
bell_huang
Contributor III

I simplified the example by removing unused variables and functions.

 

Test steps:

(1) Reset slave board & master board

(2) Click SW3 on slave board

 

The Hot-Join sequence is:
Slave sends a Hot-Join Request → Master accepts it → Master performs ENTDAA → Slave obtains a dynamic address.

In the fsl_component_i3c_adapter API, there is no Hot-Join callback on the Master side, so there is no way to know when the Master has received the Hot-Join Request and completed ENTDAA. That said, this is a next-step concern; the current issue is that the process stalls at the Hot-Join Request, with the SDA line being permanently held low.

0 Kudos
Reply

419 Views
Harry_Zhang
NXP Employee
NXP Employee

Hi @bell_huang 

Your demo is including the i3c Bus. I think it's not simple enough for me, So i did an simple demo based on the i3c interrupt demo  to verify Hot join feature.

Slave.

Harry_Zhang_0-1754983253240.png

 

Master

Harry_Zhang_1-1754983317491.pngHarry_Zhang_2-1754983346310.png

Harry_Zhang_3-1754983385564.png

We can check that there is Hot-Join callback on the Master side.

BR

Harry

0 Kudos
Reply

411 Views
bell_huang
Contributor III

Hi @Harry_Zhang ,

Thank you for the hint; I also modified my demo to use the fsl_i3c APIs.


After switching the Master to the fsl_i3c APIs, it can indeed receive the Hot-Join event. However, the issue is that the SDA line is being permanently held low, so the I3C bus cannot be used afterward.

bell_huang_0-1755049839084.png

 

Today I investigated and found that SDA is being pulled low by the Slave. I verified this in two ways:

1. Disconnect the Slave from the SDA line.

or

2. Press the RESET button on the Slave board.

 

In both cases, SDA can be observed to recover from low to the normal high state.

bell_huang_1-1755049942506.png 

bell_huang_2-1755049962726.png

 

In addition, within the Slave driver, it can be observed that kI3C_SlaveRequestSentEvent is not received.

0 Kudos
Reply

361 Views
Harry_Zhang
NXP Employee
NXP Employee

Hi @bell_huang 

You can add 

I3C_MasterEmitIBIResponse(EXAMPLE_MASTER, kI3C_IbiRespAck);

in master call back function.

And then the SDA will push high.

And the Slave driver will receive kI3C_SlaveRequestSentEvent.

But i found the the master can not ProcessDAA.

I need further investigation.

BR

Harry

0 Kudos
Reply

395 Views
bell_huang
Contributor III

1. Disconnect the Slave from the SDA line." mentioned in my previous post.

bell_huang_0-1755052802757.png

 

0 Kudos
Reply

588 Views
Harry_Zhang
NXP Employee
NXP Employee

Hi @bell_huang 

Thanks for your information, i have reproduced this issue, we need to investigate this issue.

I will inform you as soon as there is a result.

BR

Harry

0 Kudos
Reply