Estamos probando un acelerómetro I2C conectado al microcontrolador ATMega32A. El acelerómetro funcionaba bien. Podemos escribir y leer los registros utilizando el protocolo I2C. Cuando está conectado al osciloscopio, nos resulta muy difícil descodificar las señales al valor normal.
Solo estamos escribiendo un valor 0x08
( 00001000
) en el registro 0x10
( 00010000
).
Según el protocolo I2C, después de la condición de inicio tenemos que escribir SLA + W (dirección de esclavo + comando de escritura). La dirección del esclavo de 8 bits con comando de escritura para el acelerómetro es 0x30
( 00110000
).
Los datos I2C deben ser así
0 0 1 1 0 0 0 0 0(ack) 0 0 0 1 0 0 0 0 0(ack) 0 0 0 0 1 0 0 0 0(ack)
0 (ack) es el reconocimiento del esclavo I2C (acelerómetro). Sin embargo, la señal que obtuvimos del osciloscopio no da ninguna pista
El reloj y la configuración de I2C son los siguientes
- Reloj del controlador: reloj interno de 4 MHz
- Frecuencia I2C: 100 kHz
- Resistencias pull-up: 4.7 kOhms
Aquí está la imagen de las líneas I2C-clock (Señal amarilla) y I2C-data (Señal azul).
Realmente necesito la mano de alguien para ayudar en la decodificación