2024-09-19 04:24 PM
When executing RSTDAA and ENTDAA once, it succeeds, but when executed more than twice, it does not work properly. Since RSTDAA is being performed, I think there should be no problem, but is it not possible to execute it more than twice?
//1st rstdaa+entdaa
/* Assign dynamic address processus */
if (HAL_I3C_Ctrl_DynAddrAssign_IT(&hi3c1,I3C_RSTDAA_THEN_ENTDAA
) != HAL_OK)
{
/* Error_Handler() function is called when error occurs. */
Error_Handler();
}
// This function is succeed
while (HAL_I3C_GetState(&hi3c1) != HAL_I3C_STATE_READY)
{
}
// This function is succeed
//2nd rstdaa +entdaa
/* Assign dynamic address processus */
if (HAL_I3C_Ctrl_DynAddrAssign_IT(&hi3c1,I3C_RSTDAA_THEN_ENTDAA
) != HAL_OK)
{
/* Error_Handler() function is called when error occurs. */
Error_Handler();
}
// This function is succeed
while (HAL_I3C_GetState(&hi3c1) != HAL_I3C_STATE_READY)
{
}
// This function is Failed