cancel
Showing results for 
Search instead for 
Did you mean: 

STM32 H5 I3C 0x7E start byte in I2C waveform

Ren1
Visitor

Hello,

I am trying to use the I3C interface between STM32H563ZI in MB1404 board and NXP's temperature sensor P3T1085UK.

 

I have found a question would like to be answered:

 

Is there any way to send the IBI header (7'h7E) with SCL signal configured in I2C timing characteristics?

According to MIPI I3C Basic specification v1.1.1, page 33, table 3, note 3, It is expecting an I3C / I2C capable target having a switchable 50ns spick filter and the swtich is triggered by the IBI header (7'h7E).

spike_filter.png

I have selected the "Bus Characteristics" as "Mixed I3C and I2C" and "I2C Duty Cycle" to be 50% in stm32cubeIDE's "Pinout & Configuration -> Connectivity -> I3C1", It generates the code with "hi3c1.Init.CtrlBusCharacteristic.SCLI2CHighDuration = 0x7c;", which seens fine. But when I run the function "HAL_I3C_Ctrl_DynAddrAssign", I found the waveform is different, the SCL high duration is actually controlled by the parameter "SCLI3CHighDuration", shown below.

IBI_header.png

the SCL pulse is around 50ns and It is not responed by the temperature sensor P3T1085UK, the sensor does responed to the waveform when I change the parameter "SCLI3CHighDuration" to larger one, which is beyond 50ns. I believe the SCL signal is filtered out by the filter in defualt I2c configuration after power up, and I need to swiich it off by sending the IBI header with I2C timing, altought P3T1085UK document states it only have a 20ns filter.

And I have not found any good alternative way to generate a start + IBI header in I2c timing to tigger it, other than toggling the SCL pin like the traditional soft I2C.

 

Thanks for checking this post.

0 REPLIES 0