Hi @melanie ,
I find some screenshot about the 42688 +RT500 test result on myside.
Please check my attached picture, it will helps your understanding, it also use i3c_bus_master_read_icm42688p.
Wish it helps you!
Best Regards,
Kerry
Hi @melanie ,
你把SDK 包下载了,直接拖到MCUXpresso IDE 的installed SDK, 然后就可以导入工程了。
你可以参考下这个文档:
SDK_2_12_0_MIMXRT685-AUD-EVK\docs\Getting Started with MCUXpresso SDK for EVK-MIMXRT685.pdf
chapter 3 Run a demo using MCUXpresso IDE.
Best Regards,
Kerry
Hi @melanie ,
你忘了之前我和你说的了,这个代码的flash和你EVK的flash不一样。
所以测试要注意下,有两个办法:
1. 你可以跑到RAM里面
注意,RAM代码就是要debug,掉电就没了。
2.你需要修改FCB为RT685-EVK,下载算法也改成RT685-EVK的。
flash_config.c内容修改为MIMXRT685-EVK 对应的flash_config.c代码。
下载改为MIMXRT685-EVK的下载算法:
这样修改后,你就可以直接跑到你的MIMXRT685-EVK flash了。
你试试看。
Best Regards,
Kerry
Hi @melanie ,
Thanks for your interest in the NXP MIMXRT product, I would like to provide service for you.
Yes, we have the RT600 I3C ICM-42688 demo.
Do you know, we also have a RT600 EVK board named as MIMXRT685-AUD-EVK? This board contains the ICM-42688, so the related SDK also contains the demo:
https://mcuxpresso.nxp.com/en/builder?hw=MIMXRT685-AUD-EVK
After you download the SDK, you can find the demo from this path:
\SDK_2_12_0_MIMXRT685-AUD-EVK\boards\mimxrt685audevk\driver_examples\i3c\master_read_sensor_icm42688p
Wish it helps you!
Best Regards,
Kerry
Hi @kerryzhou
thanks for your reply.
I use EVK-MIMXRT685 , not MIMXRT685-AUD-EVK.
Another question:
int main(void)
{
uint8_t result;
i3c_master_config_t masterConfig;
uint8_t fifodata[16];
i3c_master_transfer_t masterXfer;
/* Attach main clock to I3C, 396MHz / 4 = 99MHz. */
CLOCK_AttachClk(kMAIN_CLK_to_I3C_CLK);
CLOCK_SetClkDiv(kCLOCK_DivI3cClk, 20);
BOARD_InitBootPins();
BOARD_InitBootClocks();
BOARD_InitDebugConsole();
PRINTF("\r\nI3C master read sensor data example.\r\n\r\n");
I3C_MasterGetDefaultConfig(&masterConfig);
masterConfig.baudRate_Hz.i2cBaud = EXAMPLE_I2C_BAUDRATE;
masterConfig.baudRate_Hz.i3cPushPullBaud = 12500000U;
masterConfig.baudRate_Hz.i3cOpenDrainBaud = 2500000U;
masterConfig.enableOpenDrainStop = false;
I3C_MasterInit(EXAMPLE_MASTER, &masterConfig, I3C_MASTER_CLOCK_FREQUENCY);
/* Create master handle. */
I3C_MasterTransferCreateHandle(EXAMPLE_MASTER, &g_i3c_m_handle, &masterCallback, NULL);
PRINTF("i3cPushPullBaud: %d\r\n", masterConfig.baudRate_Hz.i3cPushPullBaud);
PRINTF("i3cOpenDrainBaud: %d\r\n", masterConfig.baudRate_Hz.i3cOpenDrainBaud);
PRINTF("Broadcast CCC DISEC (DISHJ + DISMR + DISINT): ");
display_ccc_status(i3c_ccc_disec_b(CCC_DISEC_BYTE_DISHJ | CCC_DISEC_BYTE_DISMR | CCC_DISEC_BYTE_DISINT));
PRINTF("\r\n");
PRINTF("Broadcast CCC RSTDAA: ");
display_ccc_status(i3c_ccc_rstdaa_b());
PRINTF("\r\n");
i3c_demo_setdasa(0x68, 0x27);
When I use this demo to get the dynamic address. the code can't jump this while loop.
Could you help me ? thanks
Hi @melanie ,
MIMXRT685-AUD-EVK is similar to the MIMXRT685-EVK board, just the AUD-EVK on board contains the ICM-42688 sensor.
So, please still check my mentioned SDK code at first, then you can port the related I3C demo to your own project and test.
Please check my mentioned SDK code at first, thanks.
Best Regards,
kerry
Hi @melanie ,
Talk about my experience for I3C.
I think, just check the code debug result is not enough, do you have the logic analyzer? It's better to contains the I3C function, then check the bus, it will helps you to find the detail area issues.
About the testing, you can download the SDK and test it on the EVK directly, just run it in RAM, not the flash, as I know EVK and audio EVK used external flash have differences, others should be similar.
About the connection to your sensor, make sure you add the external pull up.
Then test the I3C wave, whether it has response or not? Check the DAA works or not?
The wave should like this:
I checked my previous wave, but seems my logic tool meet issues, it deletes all my saved old 42688 I3C wave, so can't share you directly now. Maybe you need to test it by yourself.
If you have the AUDIO-EVK, that will be more useful to you.
Best Regards,
kerry