EVK-MIMXRT685 I3C example does not work

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

EVK-MIMXRT685 I3C example does not work

1,644 Views
bslava
Contributor II

Hello,

I bought two EVK-MIMXRT685 cards, connected their I3C lines and tried to run the provided I3C example: evkmimxrt685_i3c_polling_b2b_transfer_master on one card and evkmimxrt685_i3c_polling_b2b_transfer_master on the other. Unfortunately the example is stuck in the I2C phase.

On the connected LA, I can see that the master is sending a buffer to the slave, which is received by the slave properly.

Then after ~ 100ms the master sends start with the write address and 0x01. Both of them are ACKed by EVK. Then master sends a restart with the read address that is not accepted by the slave. As the result, the slave does not send the received buffer back to the masher and all the process stuck. What's wrong?

Thanks,

Slava 

 

Labels (1)
0 Kudos
Reply
6 Replies

1,620 Views
bslava
Contributor II

I have more details on this issue. I2C Reading works fine. The master requests data, an interrupt occurs on the slave that fills the FIFO, and the slave device returns this data.

When I change masterXfer.busType from kI3C_TypeI2C to kI3C_TypeI3CSdr, I expect everything to work the same but via I3C. But this is not happening. I can see that the master is sending a read request, I see an interrupt on the slave that fills the FIFO, but the slave does not ACK this read transaction and does not send any data. The Completion Status is 0x00001EEC. What is missing?

By the way, I3C write works fine in both I2C and I3C modes.

0 Kudos
Reply

1,602 Views
jingpan
NXP TechSupport
NXP TechSupport

Hi,

But the example has two part. First it use I2C mode to submit and receive. Then it switch to  I3CSdr mode to W/R data again. I tested on my board. It works fine.

BTW, please switch to UART debug console before debugging.

 

Regards,

Jing

0 Kudos
Reply

1,599 Views
bslava
Contributor II

Hi Jing,

Thanks for your response.

What do you mean by "switch to UART debug console before debugging"? Will it work in default mode too? When I take the master and slave examples and run them on two cards in parallel, the I2C write passes, but the I2C read does not receive ASK and fails.

I modified the scripts and left only I3C. In this scenario (the slave still works with the static address), the I3C write works, but the I3C read does not receive an ACK and fails. If I add lines to switch to dynamic address, both I3C read and write work as expected. What am I doing wrong?

Thanks,

Slava

0 Kudos
Reply

1,556 Views
jingpan
NXP TechSupport
NXP TechSupport

Hi,

I tested the I3C again. If the dynamic address is used, the I3C works fine. If don't use, I3C can't work. Come back to the RM, in page 638 in RM reversion 1.2, it says "The I3C slave, if assigned an I2C static address, will act like a normal I2C device when the I3C slave first comes up. If the I3C slave is placed on an I2C bus with an I2C master, then the I3C slave will simply stay in I2C mode and operate normally." 

At this time, I3C slave can't receive I3C signal. As you know, I3C wave format is different with I2C format.

 

Regards,

Jing

1,549 Views
bslava
Contributor II

Thank you very much for explanation, Jing!

I did not see that in I3C spec, that an I3C device cannot work in I3C mode until it receives dynamic address. I thought that only IBI would not work. Moreover, if I remember correctly, in this mode (without dynamic address) the slave was able to receive I3C transaction, but but could not answer on I3C write one.

Regards,
Slava 

0 Kudos
Reply

1,513 Views
jingpan
NXP TechSupport
NXP TechSupport

Hi,

You can use SETDASA command (master assigns a Dynamic address to a Slave with a known Static Address). With this command Slave can work in I3C mode.

 

Regards,

Jing

0 Kudos
Reply