Hola a todos,
Estoy trabajando en el dispositivo de comunicación basado en I2C bq27742-g1 (Texas Instrument) El indicador de combustible de la batería, que es la dirección del dispositivo esclavo, es 0xAA. He puesto la resistencia pull up de 10K.
En esto, estoy usando el microcontrolador Cortex M4 de la serie Kinetis como dispositivo maestro. El microcontrolador funciona con otro dispositivo I2C.
Probé el indicador de combustible de la batería bq27741-g1 con una placa Launchpad MSP430 usando un escáner I2C y funciona bien.
Adjunto una captura de pantalla de las señales CRO (SDA(PINK) SCL(Yellow)) del dispositivo I2C en el noveno pulso de reloj de SCL cuando SDA tiene un estado indeterminado. ¿Por qué ocurre esto en este nivel? ¿Es este problema de la resistencia pull-up?
No estoy familiarizado con Kinetic MCU, pero en una MCU diferente tuve la misma forma de onda cuando configuré mal la línea SDA como una salida normal en lugar de configurarla como una salida de drenaje abierto.
Puede ver que el esclavo está respondiendo con un ACK y tratando de reducir el SDA, pero algo (probablemente el Kinetic como maestro I2C) está elevando el SDA, por lo que ve el voltaje a la mitad del riel durante el bit 9.
Configure SDA como desagüe abierto.
Este problema ocurre cuando el esclavo y el maestro I2C intentan conducir la línea al mismo tiempo en direcciones opuestas.
Su indicador de combustible de la batería es esclavo I2C y MSP es maestro I2C. ¿Está utilizando algunas bibliotecas para la comunicación I2C o ha implementado el protocolo I2C por su cuenta?
En el noveno ciclo de reloj, el MSP debe liberar la línea SDA (hacer que sea una entrada triestablecida ), para permitir que el indicador de combustible lo reduzca. Esta baja debe interpretarse como un Reconocimiento. Verifique su código I2C.
usuario19579
st2000
CL.
Kalarav Parmar
Kalarav Parmar
Kalarav Parmar
st2000
CHendrix
Sam Gibson
Kalarav Parmar
Kalarav Parmar
Kalarav Parmar
st2000
Sam Gibson
Kalarav Parmar
Kalarav Parmar