Cómo ponerse en contacto con el magnetómetro auxiliar InvenSense MPU9150

2

Estoy tratando de llegar al magnetómetro InvenSense MPU9150 utilizando el modo maestro desactivado y el modo de derivación activado. Estos valores se escriben y luego se confirman desde el MPU9150:

0x6B = 0x01, // Clock from gyro X
0x6A = 0x00, // I2C Master mode disabled
0x37 = 0x02. // Bypass mode enabled

Luego traté de alcanzar el magnetómetro a través de las direcciones de esclavo 0x0C- > 0x0F pero nunca recibí una respuesta correcta del registro 0x00 de WHOAMI. ¿Me he perdido un registro? Los pines AUX en la PCB están flotando. Puedo hablar correctamente con el MPU9150 y leer el acelerómetro y los datos del giroscopio. ¿Podría estar muerto el magnetómetro en el MPU9150 a su llegada?

    
pregunta user35282

2 respuestas

1

¿Obtienes respuestas que no sean cero al leer 0x00? Creo que la hoja de datos es incorrecta y WIA en realidad no devuelve 0x48, pero no tengo un chip a mano en este momento para probar.

No estoy seguro de si hay otros registros que deban configurarse para que la MPU funcione, pero para el registro, lo tengo funcionando y estos son los valores de registro de la MPU que uso:

0x6B = 0x01; // Clock source is PLLGYROZ
0x19 = 0x04; // Set SMPLRT_DIV to 0x04; this gives a 200 Hz sample rate when using the DLPF
0x1A = 0x03; // 42 Hz LPF
0x6A = 0x01; // Disable master mode and clear all signal paths
0x1B = 0x18; // Full gyro range
0x1C = 0x08; // 4G accel range
0x37 = 0x32; // Interrupts pin stays high until cleared, cleared on any read, I2C bypass
0x38 = 0x01; // Data ready interrupt enabled

Puede intentar ponerlo en modo FUSEROM (escriba 0x0F en el registro 0xA) y luego leer los valores de ajuste de sensibilidad de los registros 0x10 a 0x12; debe obtener el mismo valor en varias lecturas.

No estoy seguro de si hay una secuencia de inicialización "adecuada" para el AK8975, pero he tenido más éxito con: Poner en modo FUSEROM - > lea ASAX / Y / Z - > modo de muestra única, y luego esperando la interrupción DRDY (que, a pesar de lo que afirma la hoja de datos MPU9150, está disponible en el pin 14). Sin embargo, definitivamente tuve una gran cantidad de problemas para que funcionara correctamente.

Una última pregunta: ¿a qué velocidad está ejecutando el bus I2C? La línea STM32F4xx, al menos, tiene problemas para funcionar a 100 kHz. Tengo que correr a 400 kHz para obtener la funcionalidad correcta.

    
respondido por el glward
0

Por lo que recuerdo, una vez en modo bypass, estás hablando directamente con el magnetómetro. Le sugiero que intente utilizar un osciloscopio o un analizador lógico para ver si sus señales llegan al magnetómetro desde su microcontrolador.

Si lo hacen y obtendrás un NACK, obtén la dirección de esclavo correcta para que el magnetómetro se asegure de que se trata. Tenga cuidado con las representaciones de 7 y 8 bits de la dirección.

    
respondido por el Gustavo Litovsky

Lea otras preguntas en las etiquetas