Skip to main content
Associate II
July 27, 2023
Solved

About I3C ENTDAA ,How to do End DAA procedure waveform?

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.
CLHUANG_1-1690457730965.png

How can I do it?End DAA procedure waveform

CLHUANG_0-1690457717715.png

Below picture is all protocol , no End DAA procedure waveform

CLHUANG_2-1690457746444.png

 

 

 

 

 

This topic has been closed for replies.
Foued_KH
Foued_KHBest answer
ST Employee
July 28, 2023

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.

12 replies

Foued_KH
ST Employee
July 27, 2023

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.
CLHUANGAuthor
Associate II
July 27, 2023

Dear Foued:

How to define payload?

 

Foued_KH
ST Employee
July 27, 2023
/* 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.
Foued_KH
ST Employee
July 27, 2023

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.
CLHUANGAuthor
Associate II
July 28, 2023

Dear Foued

why  48-bit provisioned ID have two data?

CLHUANG_0-1690513548495.png

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

CLHUANG_1-1690513731289.png

 

Foued_KH
Foued_KHBest answer
ST Employee
July 28, 2023

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.
CLHUANGAuthor
Associate II
July 28, 2023

CLHUANG_0-1690525862079.png

I still can't make a protocol with a red circle

Foued_KH
ST Employee
July 28, 2023

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.
Foued_KH
ST Employee
July 28, 2023

The ENTDAA  not supported with the LPS22HH ( see datasheet ).
You need to use another way using SETDASA .

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.
CLHUANGAuthor
Associate II
July 28, 2023

Dear Foued

Now I get it!  Thank you very much.