Cálculo de resistencias pull-up I2C y dónde colocarlas [duplicado]

Estoy conectando un PIC18F46K22 (maestro) a un PIC18F4620 (esclavo) usando I 2 C. El cable entre los dispositivos es de ~30 cm. Estoy usando 400kHz sin control de velocidad de respuesta. Más adelante, agregaré otro 18F4620 a ~5 cm del maestro (~35 cm del otro esclavo).

¿Cómo calculo la resistencia de pull-up necesaria tanto en la línea SCL como en la SDA?

¿Importa dónde coloco el pull-up (cerca del maestro, cerca del esclavo, ambos, en el medio, ...)?

Respuestas (2)

Los pull-ups generalmente se encuentran cerca del dispositivo maestro.

Esta nota de la aplicación incluye algunos de los cálculos. Esencialmente, el tamaño del pull-up estará definido por la capacitancia total del bus y las capacidades de pull-down de los dispositivos en el bus:

R pag V d d V O L I O L

y

R pag 300 norte s 0.847298 × C b tu s

dónde V O L es la lógica de baja tensión necesaria, I O L es la corriente de hundimiento, y C b tu s es la capacitancia del bus.

Por supuesto, una vez que se crea su muestra, lo mejor que puede hacer es medir las formas de onda y hacer los ajustes necesarios.

Cuando la línea baja, el pin del controlador (SCL en el maestro o SDA en el maestro o esclavo) suministra corriente V/R para hacer eso; entonces, si se trata de una resistencia de 10k de 5V, el controlador deberá absorber 0,5 mA. Una resistencia más grande significa que se necesita menos corriente, pero la línea subirá más lentamente (especialmente en una línea larga) y esto puede limitar su velocidad. Una resistencia más pequeña se levanta más rápido, pero en algún momento quemará el pin del controlador (consulte la hoja de datos). 3.3K a 10K probablemente esté bien; si es 3.3V tal vez 2.2K-4.7K

No importa mucho dónde los coloque eléctricamente, pero cerca del maestro es mejor si el cable puede estar desconectado; o puede poner, por ejemplo, un pullup de 10k en cada extremo, en lugar de un solo 4k7, lo que mantendrá contentos a ambos extremos cuando se desconecte el cable.

En general, para longitudes de cable de +-20 cm, SCL a 100 kHz estará satisfecho con 10k. Con el aumento de la frecuencia y/o la duración, puede bajar hasta 1k.