7 votos

Problemas de I2C con el primer PCB

Como advertencia, este es mi primer PCB. Estoy experimentando problemas con el bus I2C. Hay dos esclavos I2C en este bus (la pantalla SSD1306 y el medidor de combustible BQ27441, actualmente el programa sólo envía comandos a la pantalla en 0x3C, así que no me preocupa que el otro dispositivo cause problemas en este momento).

Mi primera preocupación fueron los problemas de ruido porque no me di cuenta de que era una mala práctica encaminar las señales I2C una al lado de la otra, así que corté las trazas y las reencaminé utilizando hilo magnético. Esto resultó en el mismo problema. El problema es: la pantalla sólo se muestra durante un segundo, ni siquiera, y luego se corta. Cambié las resistencias pull-up a valores bastante bajos (1,1k, originalmente 4,7k pero el tiempo de subida en el osciloscopio se veía bastante mal). Nota importante: la pantalla no funcionaba en absoluto antes de este cambio. Sin embargo, la pantalla sigue siendo muy intermitente, lo que me lleva a creer que esta no era la causa directa.

La traza SDA es de 71,5mm y la traza SCL es de 80,8mm, no pensé que la coincidencia de longitudes fuera importante a 400kHz, pero pensé en incluir la información. Además, ¿el acoplamiento cruzado podría ser un problema aquí? El espacio libre es de unos 5 milímetros, creo. Probablemente no fue la mejor idea para la ruta bajo el ESP32 tampoco ... Definitivamente he estado aprendiendo el camino difícil en este proyecto.

Es una placa de 2 capas, la mayor parte de la capa inferior es un plano de tierra, hay un par de secciones muy pequeñas de las trazas I2C que bajan a esta capa. La capa superior y la inferior tienen un grosor de 0,03556mm separadas por un dieléctrico FR-4 de 1,6mm.

Tenga en cuenta que este código fue verificado en el ESP32 DevKitC V4 y funcionaba perfectamente. También probé diferentes frecuencias en el bus I2C también (100kHz, 400kHz y 700kHz).

A partir de la captura del osciloscopio, mi primera conjetura sería una capacitancia de bus demasiado alta, pero me gustaría tener otras opiniones antes de verme obligado a hacer otra revisión de la placa.

También capturé la comunicación con un analizador lógico como se ve abajo. Repetidamente está haciendo una escritura de configuración a 0xF8 que no aparece en el código en absoluto (basado en la captura del osciloscopio no esperaría nada significativo de un analizador lógico de todos modos, pero para completar), de nuevo apuntando a un problema de hardware.

Tampoco parece que sean problemas de alimentación porque tanto los raíles de 3v3 como los de 5v parecen estables.

Editar: He cortado las trazas que van al indicador de combustible para eliminar cualquier posible contención del bus, todavía nada. También he añadido el esquema, junto con la configuración del osciloscopio y otra captura del osciloscopio con "datos" repetidos. Es interesante que las señales parecen ser bastante opuestas. SCL & SDA traces going under a ESP32 on top layer

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here Rojo: SCL (CH1), Blanco: SDA (CH2), Naranja: GND

enter image description here

Me las arreglé para capturar este ^^ tan pronto como me conecté mi tablero en micro-USB....interesting. Esto no debería ser un problema de energía, los convertidores DC-DC están clasificados para más de un amperio cada uno en sus voltajes de 3v3 y 5v, no dibujar en cualquier lugar cerca de eso.

enter image description here

¡EDIT: Fui terco en cuanto a las respuestas sobre la tierra del osciloscopio, pero por la razón equivocada! El cabezal J2 está teniendo problemas de tierra aparentemente, pude capturar esto en el osciloscopio usando uno de los agujeros de montaje como referencia de tierra para el osciloscopio, voy a tener que comprobar la conexión de soldadura para el cabezal, o tal vez incluso reemplazar el cabezal ya que había un poco de flujo que rodeaba el cabezal y puede haber quedado atascado allí? He comprobado que el pin GND de J2 va directamente al plano de tierra de la capa inferior. enter image description here

0 votos

Muéstranos el esquema.

6 votos

1. ¿Cómo estaba conectada la tierra de la sonda del osciloscopio cuando tomaste la traza del osciloscopio? 2. Mencionas que tienes fuentes de alimentación de 3,3 y 5 V. ¿Con cuál de ellas se alimentan tus dispositivos I2C? ¿A cuál están conectados los pull-ups?

4 votos

I2C es bastante indulgente con los problemas de diseño. Mi primera sospecha sería otra cosa. Como que olvidaste pullups o usaste el valor incorrecto de pullups o tienes contención en el bus (alguien manejándolo cuando no debería). etc.

7voto

mactalent Puntos 273

Me gustaría aprovechar este momento para pedir disculpas a la gente de Internet, me equivoqué al ignorar a los que sugirieron problemas de conexión a tierra con el osciloscopio. Era, de hecho, un problema de tierra con el pin GND de J2. Después de conectar las sondas de tierra del osciloscopio a uno de los agujeros de montaje en su lugar, pude capturar esto en el osciloscopio, un conjunto de hermosas señales. Gracias a todos vosotros por vuestra ayuda. Que esto sea una lección de muchas para mí en mis futuros esfuerzos al entrar en el mundo de la ingeniería eléctrica (graduándose en mayo).

enter image description here

1 votos

+1. En definitiva, buen trabajo y buena actitud.

1 votos

Por favor, "acepte" su auto-respuesta para que la pregunta aparezca como resuelta en lugar de necesitar más atención

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X