La pregunta corta : ¿hay alguna diferencia entre usar (en una placa de pruebas) una resistencia pullup estándar de 10K de orificio pasante y usar un cable Dupont modificado con una resistencia pullup de 10K soldada en el medio, al configurar una MCU y un periférico usando I2C? ? El cable Dupont modificado no funciona para mi caso.
Entorno : placa de pruebas, el Espressif ESP32 MCU como maestro I2C usando el pin n.° 21 como SCL y el pin n.° 17 como SDA (las pullups internas "débiles" +-4.7K están habilitadas), un sensor de campo magnético Melexis MLX90393 como esclavo I2C en un Sparkfun placa de conexión (producto https://www.sparkfun.com/products/14571 ; las dominadas de 10K en la placa de conexión Sparkfun también están habilitadas). Vea la imagen para la configuración de la placa de prueba (enfóquese en la resistencia pullup).
El software funciona bien y obtengo 5 lecturas de sensor por segundo si conecto una resistencia pull-up de 10K básica entre el orificio junto al pin SCL n.º 21 de la MCU y un orificio en el riel de 3,3 V de la placa de prueba. Este es un procedimiento estándar para los esquemas I2C con el fin de llevar el SCL I2C alto de forma predeterminada. Lo mismo para SDA.
Sin embargo, quería hacer que el cableado de las cosas en la placa de prueba fuera mucho más fácil y usar un cable Dupont modificado para el pullup . Así que tomé un cable Dupont de 30 centímetros, lo corté por la mitad y soldé una resistencia pull-up estándar de 10K en el medio y puse un tubo retráctil alrededor. Si mido la impedancia entre los 2 extremos del cable, entonces es +-10K Ohm.
Así que conecté el cable Dupont modificado además del pin SCL n.º 21 de la MCU y el riel de 3,3 V de la placa de prueba (reemplazando las resistencias básicas de la configuración anterior). Ahora el sistema ya no funciona* (falla la comunicación I2C).
¿Cuál podría ser la razón (¿eléctrica?) de la falla? No tengo osciloscopio pero si analizador lógico.
Gracias de un principiante.
No, en casos normales eso no debería hacer una diferencia notable.
Pero tal vez
He tomado algunas medidas drásticas para llegar al fondo de esto; y la configuración está funcionando ahora :)
He leído en alguna parte que I2C fue diseñado principalmente para conectar dispositivos I2C que están relativamente cerca de la MCU. Estaba usando cables Dupont de 30 cm para conectar la placa del sensor (I2C Slave) a la MCU (I2C Master). Así que los reemplacé con cables Dupont más cortos de 10 cm y ahora funciona perfectamente (las resistencias pullup externas ya no son necesarias).
Estoy usando otro tipo de protoboard nuevo y diferente. He desmontado la protoboard transparente que se utilizó para este proyecto y vi que las conexiones metálicas eran de mala calidad (aunque he usado algunas durante 3 meses sin problemas). Supongo que las conexiones de una placa de prueba se desgastan con el tiempo y una placa de prueba debe reemplazarse de vez en cuando cuando se usa intensamente.
Espero que estas suposiciones sean correctas y que los informes también ayuden a otros.
Definitivamente hay una diferencia: uno funciona y el otro no.
Pero bromas aparte: el cable Dupont va a introducir más capacitancia. No menciona la frecuencia de SCL, pero si la capacitancia es demasiado, el tiempo de subida de SCL se degradará. Puede degradarse hasta el punto en que no supera el VIH, momento en el cual I2C ya no funcionará.
Es una lástima que no tenga un osciloscopio, porque podría verificar esto fácilmente. La forma más rápida de verificar será reducir la frecuencia I2C a algo ridículamente lento; si eso funciona, entonces la capacitancia es su problema. Si ese es su problema, puede solucionarlo reduciendo la resistencia al pull-up, lo que limpiará los bordes ascendentes.
usuario103380
Transeúnte
eliot alderson
Transeúnte
Rolf