¿Cómo depurar el bus I2C grande?

1

Tengo una placa de circuito con muchos chips SMD soldados. Hay unos pocos componentes I2C conectados al mismo bus y el bus también está conectado a un interruptor de aislamiento de "interruptor de bus". Desafortunadamente el autobús se está comportando de manera extraña. Parece que tiene una gran capacidad, y mi microcontrolador parece incapaz de bajar la señal del reloj.

Si estuviera en una placa de pruebas, simplemente podría eliminar los componentes hasta que funcionara, y si se tratara de una colección de componentes conectados en serie, podría mirar las señales entre componentes para encontrar dónde van raros .

Pero desafortunadamente no puedo modificar el circuito (sin mucho esfuerzo) y todos los componentes están conectados al mismo bus.

¿Alguien sabe de alguna forma inteligente de depurar esta situación? ¿O recurrirías a eliminar los componentes SMD?

(Por cierto, esta es una de las cosas que siempre odié sobre la electrónica: ¡las relaciones implícitas entre todo hacen que sea realmente difícil de depurar!)

    
pregunta Timmmm

1 respuesta

4

La técnica de prueba dependerá de si se trata de un nuevo diseño de primer artículo que se está depurando por primera vez o de si es una placa de un diseño de trabajo conocido que está actuando.

Para los fines aquí, asumiré que este es el primer caso en el que acaba de crear esta placa y ahora está intentando que funcione.

Una técnica es usar un cortador afilado como un cuchillo xacto para cortar las trazas del bus en algún punto de la cadena de conexión. Esta es una forma rápida de aislar si el problema es presentado por un determinado grupo de chips o no. Una vez que se haya depurado el problema, puede raspar la máscara de soldadura en los trazados de corte y soldarla nuevamente con un pedazo corto de alambre fino. Esta técnica es más rápida que eliminar componentes individuales y aproxima una búsqueda binaria al problema si es necesario realizar varios cortes.

Tenga en cuenta que si utiliza la idea de traza de corte, es posible que deba parchear temporalmente una resistencia de pull-up para el bus I2C si el pullup a bordo está en el lado cortado del bus.

Otra técnica es usar un osciloscopio para observar cómo se ve la señal cuando está siendo impulsado por un componente u otro. Por ejemplo, si la MCU está tratando de conducir la línea SCL, es posible que vea algún movimiento en la señal. Eso puede llevar a dar pistas sobre lo que puede estar mal. Por ejemplo, si puede bajar de 3.3V a 1.2V pero no menor, el problema podría ser un valor de resistencia de pullup demasiado bajo o un corto de la línea SCL a alguna otra red que quiera estar en un nivel alto.

    
respondido por el Michael Karas

Lea otras preguntas en las etiquetas