2024-07-21 08:49 AM
Hi ,
I tested example " I3C_Controller_Private_Command_IT " with Controller H503RB board
and modified for JEDEC SMBUS for DDR5
( JEDEC smbus is more simple than MIPI I3C ,
No DynAddrAssign function , Initially I2C after CCC SetAASA , it change I2C ==> I3C )
1. CCC SetAASA is OK , When I read register address 0x1 with I3C 1byte private read , I3C read value is not what i want . Read value is pointing register address 0x0 value and fixed . I think there is a stop bit in Read protocol and after Stop bit , Internal read pointer in my chip is cleared
example an5879, 9.8 Private Read code , also Stop Bit in I3C private Read command
* It is JEDEC I3C Specification , repeated start bit , No Stop Bit in Read Command
* example 9.8 code
2. I tried to change it when TX frame setting , but Not cleared
I3C_PRIVATE_WITH_ARB_STOP ==> I3C_PRIVATE_WITH_ARB_RESTART , MEND=0
Can u tell me how to do it ?
Thanks
* My test Code for CCC SetAASA /* Enable arbitration header */ /* Write CCC information in the control register */ HAL_Delay(100); LL_I3C_DisableArbitrationHeader(hi3c->Instance); HAL_Delay(100);
/*##- Add context buffer transmit in Frame context #####################*/ /*##- Start the transmission process ###################################*/
if (HAL_I3C_AddDescToFrame(&hi3c1, /* Wait for USER push-button press before starting the Communication */ /* Wait for USER push-button release before starting the Communication */ /*##- Start the reception process ######################################*/
|
Solved! Go to Solution.
2024-07-30 01:46 AM
Hello @LEE_SE ,
To handle I3C as Controller data buffer transmission/reception, you can use HAL_I3C_Ctrl_MultipleTransfer_IT() function.
This mean that the HAL_I3C_Ctrl_MultipleTransfer_IT() function allow the I3C Controller to send a transmission buffer which contain the register address of the data, and to retrieve and fill the data into reception buffer.
This function is similar to HAL_I2C_Mem_Read/HAL_I2C_Mem_Write.
Let me know if this helps you!
Foued
To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.
2024-07-30 01:46 AM
Hello @LEE_SE ,
To handle I3C as Controller data buffer transmission/reception, you can use HAL_I3C_Ctrl_MultipleTransfer_IT() function.
This mean that the HAL_I3C_Ctrl_MultipleTransfer_IT() function allow the I3C Controller to send a transmission buffer which contain the register address of the data, and to retrieve and fill the data into reception buffer.
This function is similar to HAL_I2C_Mem_Read/HAL_I2C_Mem_Write.
Let me know if this helps you!
Foued
To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.
2024-07-31 08:23 PM - edited 2024-07-31 08:24 PM
Hi
I reviewd example " I3C Sensor Private Command IT " and using HAL_I3C_Ctrl_MultipleTransfer_IT();
its OK. Repeated start bit in I3C Read Command and it works well
thanks