In the I3C interface, some addresses will respond automatically, Why?

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

In the I3C interface, some addresses will respond automatically, Why?

1,361 Views
Andy_Sun
Contributor I

Hi All,

IDE:Keil MDK

SDK:SDK_2.9.0_EVK-MIMXRT685

Board:MIMXRT685-EVK

 

Problem:

When I was using I3C Interface, I found that I used RT685 as the Master to communicate with a Slave Device one-to-one, but in addition to the Address of the Slave Device, after testing, I found that RT685 will automatically respond to certain Addresses (currently in Master mode), how can I prevent RT685 from responding to these Addresses

Abnormal response Address:

0x0E、0x1A、0x34、0x35

0 Kudos
7 Replies

1,330 Views
Andy_Sun
Contributor I

There are only RT685 and a Slave Device on the I3C Bus,

and the Master will only dynamically assign an Address to this Slave.

Why does the Master (RT685) respond to other Addresses?

I don’t know what you mean.

0 Kudos

1,312 Views
kerryzhou
NXP TechSupport
NXP TechSupport

Hi @Andy_Sun ,

   Sorry for my later reply and previously didn't give you detail reply!

    Please check this RT600 I3C code:

uint8_t addressList[8] = {0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37};
result = I3C_MasterProcessDAA(EXAMPLE_MASTER, addressList, 8);
if (result != kStatus_Success)
{
return -1;
}

  This code, you can find it defines 8 addresses, so the master will check 8 dynamic addresses.

  If you just want to response for 1 address, you can change the above code:

result = I3C_MasterProcessDAA(EXAMPLE_MASTER, addressList, 1);

  Then, after it assign one slave dynamic address, it won't check other address.

  All is determined by the code.

Wish it helps you!

Best Regards,

kerry

0 Kudos

1,301 Views
Andy_Sun
Contributor I

Hi @kerryzhou 

My problem does not occur in the  ProcessDAA, let me re-describe my situation.

Currently there is an I3C Bus with only RT685(master) and a MCU(slave). This Slave Device has been configured with Dynamic Address (0x55) by SETDASA. When RT685 Emit a Transfer Write communication and the specified Address is 0x1A, at this time, the I3C Bus returns an ACK, and I am pretty sure that this ACK is not responded by MCU, because at this time MCU SDA IO is Input, so This means that RT685 responded to this Address on its own.

In this way, I found that these four addresses 0x0E 0x1A 0x34 0x35 will have the above-mentioned abnormal problems.

How can I avoid this problem?

0 Kudos

1,299 Views
kerryzhou
NXP TechSupport
NXP TechSupport

Hi @Andy_Sun 

  What's the slave MCU you are using?

 Do you use the RT685 for both master and slave, whether it meets your issues or not?

 If yes, I will find time to test it on my side.

 

Best Regards,

Kerry

0 Kudos

1,291 Views
Andy_Sun
Contributor I

Hi @kerryzhou 

Using two RT685 on I3C BUS, one for Slave and the other for Master can also reproduce this problem.

You can try to make Master call Slave Address from 0x00 to 0xFF, you should be able to see the problem I explained

0 Kudos

1,240 Views
kerryzhou
NXP TechSupport
NXP TechSupport

Hi @Andy_Sun 

   So sorry for the later reply, I understand your question now.

   You want to know why the CCC SETDATA Slave Addr RT685 master send the ACK, just like the following picture:

kerryzhou_0-1639382225078.png

With the correct slave address, the data is:

S+1101010 0 0

=S+6A+W+ACK

At first,  please check the mipi I3C spec

https://www.mipi.org/specifications/i3c-sensor-specification

SETDASA.jpg

After the slave address, it will contains the ACK bit.

So, I test the SETDASA CCC, my slave didn't have the related address, this is the test result:

kerryzhou_1-1639384355024.png

You may say, 0X6A is ACK, but please don't just see the bus generated data, please check the bus wave, 

In fact it is S+1101010 0 1

=S+0X6A+W+NACK

You can see, the response is correct, so no dynamic address send anymore.

I suggest you test this code:

https://www.nxp.com/webapp/Download?colCode=AN12796&location=null

https://www.nxp.com/webapp/Download?colCode=AN12796SW&location=null

My above wave related code:

/* SETDASA CCC command for ST LSM6DS0X device (I2C address 0x6A) */
i3c_demo_setdasa(0x6A, 0x25);
PRINTF("\r\n");

 

Wish it helps you!

If you still have questions about it, please kindly let me know.

Best Regards,

kerry

 

 

0 Kudos

1,344 Views
kerryzhou
NXP TechSupport
NXP TechSupport

Hi @Andy_Sun 

RT685 I3C master will dynamic assign the address, so it can response to the slave directly.

 

Best Regards,

Kerry

0 Kudos