¿Cuáles son los posibles problemas para que el esclavo no proporcione ACK (línea SDA desplegable) después de 8 bits de datos? Puedo ver 8bits (dirección de esclavo) con un osciloscopio, pero el ACK es alto en el pulso de reloj de 9º bit, ¿por qué?
¿Cuáles son los posibles problemas para que el esclavo no proporcione ACK (línea SDA desplegable) después de 8 bits de datos? Puedo ver 8bits (dirección de esclavo) con un osciloscopio, pero el ACK es alto en el pulso de reloj de 9º bit, ¿por qué?
Un problema común cuando no hay ACK es que la dirección del esclavo se colocó incorrectamente en el byte de salida.
La dirección de 7 bits debe cambiarse un bit a la izquierda e insertar el bit R / W en el LSB.
¿Con qué dispositivo intentas comunicarte? ¿Cuál es la dirección de esclavo que estás usando?
Interesante: ya enumeré las posibles razones en este comentario en esa pregunta similar. Sin embargo, dado que ese comentario en realidad responde a la pregunta más general aquí , lo "promoveré" a una respuesta.
Las 3 categorías generales de problemas que pueden causar ese comportamiento son:
Problema eléctrico en el bus, por lo que el esclavo en realidad no "ve" que se está abordando. Algunos ejemplos son obvios (por ejemplo, faltan resistencias pull-up). Otros son más sutiles (por ejemplo, valores de resistencia de pull-up no adecuados para la longitud del bus, falta de conversión de voltaje, etc.) y pueden necesitar un osciloscopio para investigar.
problema de dirección, por ejemplo, cree que ha configurado el esclavo para usar la dirección X, pero en realidad está usando la dirección Y, por lo que correctamente no hace la dirección "Ack" X (esto es específico del dispositivo). Compruebe la hoja de datos.
El esclavo se está dirigiendo correctamente, pero no está en el estado correcto para "Ack" en este momento; esto es específico del dispositivo (por ejemplo, puede haber restricciones de tiempo, etc., etc.). Compruebe la hoja de datos.
O, por supuesto, el esclavo podría simplemente estar defectuoso, o el diseño tiene otro problema de hardware (por ejemplo, falta de alimentación o falta de especificación del voltaje de la fuente de alimentación, falta de desacoplamiento u otras condiciones especificadas en la hoja de datos del dispositivo).
Todas las situaciones que "he respondido I 2 C slave" que he visto encajan en una de esas categorías.
Si eres Blabec de esa pregunta anterior sería sensato quedarse con un nombre de usuario y hacer referencia a las preguntas anteriores cuando haga una nueva, para evitar que las personas hagan esfuerzos duplicados, ya que es posible que no vean las preguntas relacionadas anteriores.
Lea otras preguntas en las etiquetas microcontroller i2c communication protocol