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
Solved! Go to Solution.
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.
The 400kHz is Fast mode. For this the current must be limited to 3mA, so the Rp(min) is approximately 0.4kOhm.
The Rp(max) can be calculated from the Figure (1).
The maximum allowed rising time tr for the 400kHz is 300ns.
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.
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
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
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.
The 400kHz is Fast mode. For this the current must be limited to 3mA, so the Rp(min) is approximately 0.4kOhm.
The Rp(max) can be calculated from the Figure (1).
The maximum allowed rising time tr for the 400kHz is 300ns.
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.
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
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.
With Best Regards,
Jozef