I2C raise and fall times are higher (>300ns) on LPC51U68

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

I2C raise and fall times are higher (>300ns) on LPC51U68

540 Views
phaniramk
Contributor I

Hello Team,

we are using LPC51U68 for a controlling and managing a power distribution application  where in for reading temperature we connected 2 (LM75) temp sensors on I2C bus (PIO0_25/PIO0_26) with a pull up of 4.7K resistor. We observed that raise time and fall time of the I2C clock is around 323 ns which is our concern. We are expecting this value to be less than 100ns. 

Please suggest 

Below is the ping configuration used for those pins:

#define IOCON_PIO_I2CSLEW_I2C 0x00u /*!< I2C mode */
#define IOCON_PIO_I2CDRIVE_LOW 0x01u /*!< High drive: 20mA */

#define IOCON_PIO_I2CFILTER_EN 0x00u /*!< I2C 50 ns glitch filter enabled */

 

//I2C
const uint32_t port0_pin25_config = (
IOCON_PIO_FUNC1 | /* Pin is configured as FC4_RTS_SCL_SSEL1 */
IOCON_PIO_I2CSLEW_I2C | /* I2C mode */
IOCON_PIO_INV_DI | /* Input function is not inverted */
IOCON_PIO_DIGITAL_EN | /* Enables digital function */
IOCON_PIO_INPFILT_OFF | /* Input filter disabled */
IOCON_PIO_I2CDRIVE_LOW | /* Low drive: 4 mA */
IOCON_PIO_I2CFILTER_EN /* I2C 50 ns glitch filter enabled */
);
IOCON_PinMuxSet(IOCON, PORT0_IDX, PIN25_IDX, port0_pin25_config); /* PORT0 PIN25 (coords: 3) is configured as FC4_RTS_SCL_SSEL1 */
const uint32_t port0_pin26_config = (
IOCON_PIO_FUNC1 | /* Pin is configured as FC4_CTS_SDA_SSEL0 */
IOCON_PIO_I2CSLEW_I2C | /* I2C mode */
IOCON_PIO_INV_DI | /* Input function is not inverted */
IOCON_PIO_DIGITAL_EN | /* Enables digital function */
IOCON_PIO_INPFILT_OFF | /* Input filter disabled */
IOCON_PIO_I2CDRIVE_LOW | /* Low drive: 4 mA */
IOCON_PIO_I2CFILTER_EN /* I2C 50 ns glitch filter enabled */
);
IOCON_PinMuxSet(IOCON, PORT0_IDX, PIN26_IDX, port0_pin26_config); /* PORT0 PIN26 (coords: 4) is configured as FC4_CTS_SDA_SSEL0 */

Attaching the screen shot of the captured waveform .

Any suggestion from you would be of great help.

 

Thanks in advance.

 

Regards,

Phaniram.K

0 Kudos
1 Reply

494 Views
frank_m
Senior Contributor III

In my experience, 4,7k is already on the upper end of pull-up resistor values, 1,2 ... 2,4k are more common.

"Slew rate" is the charge and discharge of parasitic capacitors over line resistance.

If you don't have excessive capacities on your I2C lines (check PCB routing and schematics), you could try increasing IO driver capability: 

> IOCON_PIO_I2CDRIVE_LOW | /* Low drive: 4 mA */

Try using high drive instead.

I have no experience with the LPC51U68 , though.

0 Kudos