Resistencias pull-up en el puerto I2C

ingrese la descripción de la imagen aquí

Hola a todos, estoy confundido acerca de las resistencias pull-up I2C. Yo uso 4 sensores I2C. No estoy seguro de si es cierto que las resistencias pull-up cuentan. Uso todos los sensores para resistencias pull-up. Si uso solo un puerto I2C (me refiero a un puerto para todos los sensores), ¿es suficiente?

Además, escuché que "no se requieren resistencias pull-up porque STM32F ya tiene una". ¿es eso cierto? Por favor, ayúdame al respecto. Seré muy apreciado.

Una muy cálida bienvenida al sitio. Los gráficos para los valores de la resistencia pull-up del bus a diferentes velocidades se proporcionan en la especificación del bus I2C. Échale un vistazo, lo encontrarás en Internet. Por cierto, no caiga en la tentación de publicar muchas preguntas pequeñas sobre el mismo problema, ya que el sitio no es un foro de ayuda, es un sitio de preguntas y respuestas. De nuevo, bienvenido.

Respuestas (2)

El número de resistencias pull-up no importa, lo que importa es el valor combinado de ellas. Tienes cuatro resistencias, dos de 10k y dos de 4k7. Eso suma 1,6k de resistencia total equivalente, lo que equivale a unos 2 mA de corriente necesarios para impulsar el autobús. Está dentro de la especificación I2C y está bien si todos los chips tienen etapas de E/S lo suficientemente potentes para impulsar esa corriente, por lo que debe verificar las hojas de datos de cada chip, ya que la mayoría de los chips pueden hacerlo, pero es posible que algunos chips especiales no puedan hacerlo. En la práctica, nadie usaría cuatro resistencias separadas sino una sola resistencia con el tamaño adecuado. Entonces sí, es suficiente usar solo una resistencia.

Sí, la MCU contiene pull-ups conmutables por software en los pines IO, por lo que no es una mentira, pero decir que no requiere resistencias externas simplemente no es cierto en la práctica. En algunos casos raros, pueden estar bien, pero es tan poco probable que en la práctica no haya razón para dejar de lado las resistencias pull-up externas. Los pull-ups en los MCU STM32 son de aproximadamente 40k, lo que generalmente no es adecuado para I2C, pero depende de muchos factores si puede usar resistencias de hasta 40k en su aplicación.

Si uso solo un puerto I2C (me refiero a un puerto para todos los sensores), ¿es suficiente?

Solo necesita un conjunto de resistencias por puerto I2C: -

ingrese la descripción de la imagen aquí

Imagen de EDN .

Escuché que "no se requieren resistencias pull-up porque STM32F ya tiene una". ¿es eso cierto?

Puede tener resistencias pull-up internas en el dispositivo, pero ¿tienen el valor correcto para las velocidades de datos que necesita? También debe poder ajustar los valores de la resistencia según la velocidad de los datos y la capacitancia del bus ( consulte aquí y aquí ). Es poco probable que, independientemente de los pull-ups internos disponibles, se adapten a la mayoría de los requisitos.

Muchas gracias por la ayuda :)