I/O Expander Design

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

I/O Expander Design

Jump to solution
364 Views
ApurvaAgre
Contributor II

Hello, 

We are planning to use the PCAL6416APW,118 in one of our designs. Our VDD(p) is 3.3V and VDD(I2C) is 1.8V. We have added a 100K ohm pull-up resistor on INT, RESET, and ADDR, and 2K ohm pull-up resistors on the I2C lines. Are our resistor values correct, or do we need to change them?

Regards,
Apurva Agre

Tags (1)
0 Kudos
Reply
1 Solution
277 Views
JozefKozon
NXP TechSupport
NXP TechSupport

Hello Apurva,

the VDD(I2C-bus) voltage defines the I2C voltage levels and the pull-up resistors should be chosen considering this 1.8V voltage. Rp(min) can be read from the Figure 42. in the UM10204. Please make sure that your MCU communicating with the PCAL6416APW via the I2C has defined the same 1.8V voltage levels.

JozefKozon_0-1724656888052.png

The 400kHz is Fast mode. For this the current must be limited to 3mA, so the Rp(min) is approximately 0.4kOhm. 

JozefKozon_1-1724656986238.png

The Rp(max) can be calculated from the Figure (1). 

JozefKozon_2-1724657029278.png

The maximum allowed rising time tr for the 400kHz is 300ns. 

JozefKozon_3-1724657108378.png

The bus capacitance can be estimated from the bus length which is 20cm. A very rough rule of thumb is 3pF per 1cm. This gives out 60pF. You need to add capacitance which the devices adds. The PCAL6416A adds 8pF. 

JozefKozon_4-1724657261092.png

Devices usually add up to 15pF. I presume your MCU adds maximally 15pF. This gives out Cb=83pF. To be on the safe side and for easier calculation, estimated bus capacitance is Cb=100pF. 

Rp(max)=tr/(0.8473*Cb)=300ns/(0.8473*100pF)

Rp(max)=0.0000003s/(0.8473*0.0000000001F)

Rp(max)=0.0000003s/0.00000000008473

Rp(max)=3.54kOhm

Please chose a pull-up resistor between the Rp(min)=0.4kOhm and Rp(max)=3.54kOhm. E.g. 1.5kOhm or 2kOhm should be ok. The 10kOhm is definitely too high value. 

With Best Regards,

Jozef

 

View solution in original post

3 Replies
285 Views
ApurvaAgre
Contributor II

Hello Jozef,

Sorry for the late reply. I2C speed will be 400 kHz and the approximate length of the SDAA, SCLA, SDAB, and SCLB PCB traces will be less than 20 cm.

Regards,

Apurva Agre

 

0 Kudos
Reply
278 Views
JozefKozon
NXP TechSupport
NXP TechSupport

Hello Apurva,

the VDD(I2C-bus) voltage defines the I2C voltage levels and the pull-up resistors should be chosen considering this 1.8V voltage. Rp(min) can be read from the Figure 42. in the UM10204. Please make sure that your MCU communicating with the PCAL6416APW via the I2C has defined the same 1.8V voltage levels.

JozefKozon_0-1724656888052.png

The 400kHz is Fast mode. For this the current must be limited to 3mA, so the Rp(min) is approximately 0.4kOhm. 

JozefKozon_1-1724656986238.png

The Rp(max) can be calculated from the Figure (1). 

JozefKozon_2-1724657029278.png

The maximum allowed rising time tr for the 400kHz is 300ns. 

JozefKozon_3-1724657108378.png

The bus capacitance can be estimated from the bus length which is 20cm. A very rough rule of thumb is 3pF per 1cm. This gives out 60pF. You need to add capacitance which the devices adds. The PCAL6416A adds 8pF. 

JozefKozon_4-1724657261092.png

Devices usually add up to 15pF. I presume your MCU adds maximally 15pF. This gives out Cb=83pF. To be on the safe side and for easier calculation, estimated bus capacitance is Cb=100pF. 

Rp(max)=tr/(0.8473*Cb)=300ns/(0.8473*100pF)

Rp(max)=0.0000003s/(0.8473*0.0000000001F)

Rp(max)=0.0000003s/0.00000000008473

Rp(max)=3.54kOhm

Please chose a pull-up resistor between the Rp(min)=0.4kOhm and Rp(max)=3.54kOhm. E.g. 1.5kOhm or 2kOhm should be ok. The 10kOhm is definitely too high value. 

With Best Regards,

Jozef

 

344 Views
JozefKozon
NXP TechSupport
NXP TechSupport

Hello Apurva,

the pull-up resistors for the I2C lines should be chosen between the Rp(min) and Rp(max). Please refer to the section 7.1 in the UM10204 attached. Please let me know your required I2C communication speed and approximate length of the SDA and SCL PCB traces and/or cables to estimate the bus capacitance and I can calculate the Rp(min) and Rp(max) values for you.

For the INT and RESET pins, please use 10kOhm pull-up resistors. The ADDR pin must be connected directly to VDD(P) or to GND.

JozefKozon_0-1724056478584.png

JozefKozon_1-1724056512551.png

With Best Regards,

Jozef

0 Kudos
Reply