does I3C need pull-up resistances?

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

does I3C need pull-up resistances?

2,089 Views
melanie
Contributor III

Hi team

 

does I3C need pull-up resistances?what the value of the pull-up resistances?thanks

Tags (1)
0 Kudos
Reply
4 Replies

2,085 Views
guoweisun
NXP TechSupport
NXP TechSupport

For the I3C SCL is push pull, SDA Open Drain and push pull,nomrally no need pull up resistances.

 

0 Kudos
Reply

2,077 Views
melanie
Contributor III

Hi @guiweisun

thanks for you reply

but when controller assigns the dynamic address, SDA is in open drain mode. If the bus doesn't have pull-up resistances, Will the dynamic address assignment process succeed?

Q2:

what mode does contoller send the dynamic address? open-drain?push-pull?

Q3:

What is the time range for effective response from the slave?

the below picture shows the dynamic address is 0x09,

the ACK bit lasts a long time, is it right?

melanie_1-1667801021353.png

 

/* Attach main clock to I3C, 396MHz / 4 = 99MHz. */
CLOCK_AttachClk(kMAIN_CLK_to_I3C_CLK);
CLOCK_SetClkDiv(kCLOCK_DivI3cClk, 4);

PRINTF("\r\nI3C bus master example.\r\n");
/* setup I3C pins */
i3c_demo_pin_setup();

CLOCK_AttachClk(kMAIN_CLK_to_I3C_CLK);
CLOCK_SetClkDiv(kCLOCK_DivI3cClk, 20);

/* enable clock, reset module */
CLOCK_EnableClock(kCLOCK_I3c0);
RESET_PeripheralReset(kI3C0_RST_SHIFT_RSTn);

/* adjust I3C default configuration parameter selection */
I3C_MasterGetDefaultConfig(&masterConfig);
masterConfig.disableTimeout = true;
masterConfig.hKeep = kI3C_MasterHighKeeperNone;
masterConfig.baudRate_Hz.i2cBaud = 400000U;
masterConfig.baudRate_Hz.i3cOpenDrainBaud = 1000000U;
masterConfig.baudRate_Hz.i3cPushPullBaud = 6000000U;
masterConfig.enableOpenDrainStop = false;
I3C_MasterInit(EXAMPLE_MASTER, &masterConfig, I3C_MASTER_CLOCK_FREQUENCY);

// I3C FCLK = 12.5 MHz (80 ns) derived from Main Clock = 500 MHz
CLOCK_SetClkDiv(kCLOCK_DivI3cClk, 40);

I3C->MCONFIG =
I3C_MCONFIG_MSTENA(1) | // enable master
I3C_MCONFIG_DISTO(1) | // disable time out
I3C_MCONFIG_HKEEP(0) | // High-Keeper: NONE - Use PUR (Pull-Up Resistor). Hold SCL High.
I3C_MCONFIG_ODSTOP(0) | // do not emit STOP at open-drain speeds for I3C messages
I3C_MCONFIG_ODHPP(0); // Open-Drain High = 0 open-drain count for I3C messages

// open drain bit rate: ODBAUD + ODBAUD = 3.20 us <=> 312 kHz
// push-pull bit rate: TLPP + THPP = 2.56 us <=> 390 kHz
I3C->MCONFIG =
(I3C->MCONFIG & ~(I3C_MCONFIG_SKEW_MASK | I3C_MCONFIG_PPBAUD_MASK | I3C_MCONFIG_PPLOW_MASK | I3C_MCONFIG_ODBAUD_MASK | I3C_MCONFIG_I2CBAUD_MASK)) |
I3C_MCONFIG_SKEW(0) | // SKEW = 0
I3C_MCONFIG_PPBAUD(9) | // THPP = TFCLK*(1+9) = 80ns * (1+9) = 0.80us
I3C_MCONFIG_PPLOW(12) | // TLPP = THPP(1+9+12) = 80ns * (1+9+12) = 1.76us
I3C_MCONFIG_ODBAUD(1) | // ODBAUD = THPP*(1+1) = 0.8us * (1+1) = 1.6us
I3C_MCONFIG_I2CBAUD(0); // (0+0)

0x09 is dynamic address.

 

 

0 Kudos
Reply

2,067 Views
melanie
Contributor III

hi 

any updates?

thanks

0 Kudos
Reply

2,063 Views
guoweisun
NXP TechSupport
NXP TechSupport

I mean your questions about NXP I3C products P3A9606/P3S0200 not the I.MX.

If mentioned question about I.MX please submit ticket or create new topic in this community.

Home (nxp.com)

0 Kudos
Reply