2023-07-27 04:40 AM - edited 2023-07-27 04:44 AM
hi
I do the ENTDAA protocol use this code
if (HAL_I3C_Ctrl_DynAddrAssign_IT(&hi3c1, 0) != HAL_OK)
{
/* Error_Handler() function is called when error occurs. */
Error_Handler();
}
In below picture , I get the ENTDAA Protocol, but After protocol there should be repect start and do End DAA procedure waveform. It always keep ,pull up high after a few seconds.(ref three pic.
How can I do it?End DAA procedure waveform
Below picture is all protocol , no End DAA procedure waveform
Solved! Go to Solution.
2023-07-28 02:05 AM
Hello @CLHUANG ,
You have this waveform because on the IKS01A3 shield you have 2 I3C sensors LSM6DSO and LPS22HH,
So you need to remove jumpers and use one (LSM6DSO for example : JP2 ) to get the same waveform as the Application Note.
Please check the 9.3 Hardware and software settings section on the AN.
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.
2023-07-27 05:36 AM
Hello @CLHUANG
I suggest you this code :
/* Assign dynamic address processus */
do
{
status = HAL_I3C_Ctrl_DynAddrAssign(&hi3c1, &payload[1], I3C_RSTDAA_THEN_ENTDAA, 5000);
if (status == HAL_BUSY)
{
HAL_I3C_Ctrl_SetDynAddr(&hi3c1, DynAddr);
}
TargetDesc1.TARGET_BCR_DCR_PID = (uint64_t) payload;
}while (status == HAL_BUSY);
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.
2023-07-27 07:21 AM
Dear Foued:
How to define payload?
2023-07-27 07:32 AM
/* Buffer that contain payload data, mean PID, BCR, DCR */
uint64_t TargetPayload[64];
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.
2023-07-27 08:00 AM
Dear Foued:
How do I define "DynAddr", which is generated automatically?
2023-07-27 08:07 AM
Just you can set your own dynamic address : uint8_t Dynaddr = 0x32;
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.
2023-07-27 08:07 PM - edited 2023-07-27 08:09 PM
Dear Foued
why 48-bit provisioned ID have two data?
my code
uint64_t status;
uint64_t TargetPayload[64];
do
{
status = HAL_I3C_Ctrl_DynAddrAssign(&hi3c1, &TargetPayload[1], I3C_ONLY_ENTDAA, 5000);
if (status == HAL_BUSY)
{
HAL_I3C_Ctrl_SetDynAddr(&hi3c1, 0x32);
}
TargetDesc1.TARGET_BCR_DCR_PID = (uint64_t) TargetPayload;
}while (status == HAL_BUSY);
I want same as this sample one => https://www.st.com/resource/en/application_note/an5879-introduction-to-i3c-for-stm32h5-series-mcu-stmicroelectronics.pdf
2023-07-27 11:31 PM
I still can't make a protocol with a red circle
2023-07-28 02:05 AM
Hello @CLHUANG ,
You have this waveform because on the IKS01A3 shield you have 2 I3C sensors LSM6DSO and LPS22HH,
So you need to remove jumpers and use one (LSM6DSO for example : JP2 ) to get the same waveform as the Application Note.
Please check the 9.3 Hardware and software settings section on the AN.
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.
2023-07-28 02:08 AM
Could you please provide a screenshot about your issue ?
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.