LPC55S36 I3C Slave Hot-Join issue

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

LPC55S36 I3C Slave Hot-Join issue

651 次查看
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 项奖励
回复
7 回复数

464 次查看
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 项奖励
回复

456 次查看
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 项奖励
回复

450 次查看
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 项奖励
回复

442 次查看
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 项奖励
回复

392 次查看
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 项奖励
回复

426 次查看
bell_huang
Contributor III

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

bell_huang_0-1755052802757.png

 

0 项奖励
回复

619 次查看
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 项奖励
回复