¿Puede el muestreo I2C influir en la transmisión?

0

Tengo comunicación I2C de 200 kHz y la estoy controlando con Logic Analyzer que tiene una impedancia de entrada de 100 kOhm. Cuando configuro la frecuencia de muestreo a 2 Mhz, todo se ve bien en el diagrama de tiempo. Por otro lado, cuando configuro la frecuencia de muestreo a 16 MHz, algo extraño está sucediendo. Durante la condición de inicio, mi analizador muestrea SDA como '0' y SCL como '0', pero en la siguiente muestra detecta SCL como '1'. Parece que no hubo ninguna condición de inicio y no puedo depurar mi comunicación.

Unacosamásquenopuedoentendersucedecuandoconfigurounmuestreode2MHz.Despuésdelacondiciónfinal,mianalizadordetectaunacondicióndeinicioadyacente,lacondiciónfinalqueocurreenlasiguientemuestra.Nopuedosaberdedóndevieneporquenosucedeentodoslospaquetes.

Está claro que hay algo mal con mi comunicación, pero no puedo entender qué. El maestro I2C se implementa en FPGA (la simulación en ISE Simulator ha demostrado que funciona correctamente). En el bus I2C obtuve el códec de audio FPGA, ADAU1772 (con el que estoy hablando), la EEPROM de Atmel y el equivalente de Saleae Logic Analyzer (utilizado para muestrear la transmisión). He pasado 3 días descubriendo lo que está pasando y ahora es solo un gran dolor de cabeza.

    
pregunta Al Bundy

1 respuesta

3

Parece que estás entablando interferencias entre tus señales. En su primer ejemplo, el borde descendente de la línea SDA también se acopla brevemente a la línea SCK. En el segundo ejemplo, puede haber algún otro acoplamiento de señal en la línea SDA.

Para depurar esto, necesita cambiar a un osciloscopio que pueda mostrarle la forma de onda de voltaje analógica de estos fallos. Preferiblemente uno con múltiples canales, para que pueda sondear simultáneamente señales físicamente adyacentes y encontrar la correlación entre bordes y problemas técnicos.

Tenga en cuenta que una falla en el analizador lógico puede o no ser interpretada como una falla por la otra lógica en su tablero. Además, puede haber otros fallos que el analizador no está detectando, pero están afectando la lógica.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas