Confusión general de llamadas I2C

4

Estoy tratando de entender cómo se supone que la "Dirección de llamada general" de I2C funciona para la implementación en un microcontrolador.

Según la Especificación I2C (PDF) , Sección 3.1.13:

  

Cuando el bit B es un 'cero', el segundo byte tiene la siguiente definición:

     
  • 0000 0110 (06h): reinicie y escriba la parte programable de la dirección del esclavo por hardware. Al recibir esta secuencia de 2 bytes, todos los dispositivos   diseñado para responder al restablecimiento general de la dirección de llamada y tomar en el   Parte programable de su dirección. Se deben tomar precauciones para   asegúrese de que un dispositivo no esté bajando la línea SDA o SCL después de   aplicando la tensión de alimentación, ya que estos niveles bajos bloquearían la   autobús.

  •   
  • 0000 0100 (04h): escriba una parte programable de la dirección del esclavo por hardware. Se comporta como se indicó anteriormente, pero el dispositivo no se reinicia.

  •   

¿Cómo se debe configurar la parte "programable" de la dirección del esclavo? ¿Se supone que hay un tercer byte en el comando de llamada general?

    
pregunta Nate

2 respuestas

4

El significado de ' take in 'la dirección es para que el esclavo lea las líneas de programación de las direcciones que están presentes en ellas y restablezca la parte programable de sus direcciones.

Tan pronto como se reciban las 06 h, los dispositivos se reiniciarán y recibirán su dirección programable de sus líneas de dirección. Para las 04h, no se restablecen completamente, sino que simplemente toman su dirección programable de sus líneas de dirección. No hay tercer byte.

    
respondido por el Adam Lawrence
1

Recuerdo que usé la llamada general en el microcontrolador PIC24 para conectar un microchip DAC MCP4728 sobre I2C, que puede ser útil para su problema.

Ahora, de forma predeterminada, el microchip establece la dirección del esclavo como un valor codificado. Este valor puede leerse enviando el comando ReadAddress como hoja de datos especificada por el microchip. Si desea cambiar la dirección del esclavo, hay una secuencia de tiempo y bytes para ser enviado para lograr eso.

Aquí se menciona de esta manera en la hoja de datos. Es necesario traducirlo al código en lenguaje C como una función para implementarlo.

    
respondido por el Gopi

Lea otras preguntas en las etiquetas