LIS331HH registra solo cero

1

Estoy usando LIS331HH y FRDM-K22F board.

Puedo escribir en el registro de alimentación y encender el LIS331HH, también puedo escribir en el registro de control de interrupciones (23h) y leer el valor que he escrito.

Por alguna razón, no puedo leer el registro INT1_CFG (30), el registro INT1_SOURCE (31) o cualquiera de los otros registros relacionados con interrupciones.

Parece que puedo escribirles un valor.

El STATUS_REG (0x27) también siempre devuelve 0.

Me pregunto si alguien se ha topado con este problema con este dispositivo. ¿Cómo puedo verificar si el dispositivo no está roto a nivel de hardware?

No estoy seguro de si debo publicar el código aquí, pero necesito hacerlo, por favor hágamelo saber.

    
pregunta Tony The Lion

1 respuesta

1
  

¿Cómo hago para verificar que el dispositivo no esté roto a nivel de hardware?

Nunca puedes completamente eliminar la posibilidad de que un dispositivo tenga una falla de hardware, independientemente de las pruebas que realices (por ejemplo, considera fallas intermitentes o sutiles).

Sin embargo, en el tipo de situación que describe, podría:

  1. Verifique que los voltajes de la fuente de alimentación del sensor, los condensadores de desacoplamiento y el diseño de la PCB coincidan con los requisitos que se explican en su hoja de datos ( especialmente si no está utilizando una placa de ruptura comercial probada para el sensor ).

  2. Use un osciloscopio para ver los niveles de señal de la interfaz, la forma de la onda, etc. y confirme que no haya problemas allí. Entonces ...

  3. Utilice un osciloscopio (o, en esta etapa, un analizador lógico o la funcionalidad de descodificación de protocolo integrada en algunos osciloscopios sería mejor) para capturar las secuencias de comandos (en cualquier interfaz que esté utilizando para ese sensor, I < sup> 2 C o SPI) que son enviados por su código FRDM-K22F actual.

  4. Compare las secuencias de comandos enviadas por su programa actual a las que se muestran en la hoja de datos del sensor. Esta comparación puede requerir la asistencia de expertos, ya que puede ser difícil para usted confirmar que su programa definitivamente está enviando los comandos correctos.

  5. También compare las diferentes secuencias de comandos que mencionó entre sí , ya que informa que los accesos a algunos registros parecen comportarse como se esperaba, y otros no 't.

O:

  1. Igual que arriba, primero verifique la potencia, el desacoplamiento, el diseño de PCB, etc.

  2. Como se mencionó anteriormente, use un osciloscopio para confirmar que no hay problemas con las formas de onda de la señal de la interfaz.

  3. Conecte temporalmente su sensor a un Arduino que funciona bien.

  4. Use una de las bibliotecas de Arduino existentes para ese sensor (por ejemplo, esta de SparkFun que utiliza la interfaz SPI) para obtener confianza en el propio hardware de su sensor.

  5. Suponiendo que su sensor funciona con ese código Arduino, luego use un osciloscopio o un analizador lógico como se mencionó anteriormente, para capturar las secuencias de comandos al usar el Arduino "de trabajo" y su biblioteca.

  6. Compare las secuencias de comandos iniciadas por Arduino "de trabajo" con aquellas que no "funcionan" en el código FRDM-K22F actual, encuentre las diferencias y luego utilice los métodos de depuración estándar para corregir ese código.

O, si no tiene un osciloscopio o un analizador lógico, no puede recopilar las secuencias de comandos reales que se envían en la interfaz del sensor:

  1. Revise visualmente las secuencias de comandos, especialmente en la inicialización, utilizadas por el código existente de otras personas (por ejemplo, en la biblioteca de Arduino que mencioné).

  2. Compare esas secuencias con las utilizadas en el código FRDM-K22F actual.

  3. Concentre su investigación en las diferencias encontradas entre esos dos conjuntos.

    Por supuesto, esto solo puede ayudar a encontrar problemas que están visibles en el código, y asume que el código escrito por otras personas es correcto. Este es un enfoque de solución de problemas relativamente débil en comparación con observar lo que realmente está sucediendo en la interfaz, como se describe en las sugerencias anteriores de la lista.

Esta no es una lista exhaustiva de posibles enfoques de resolución de problemas, pero esperamos que den algunas ideas sobre lo que se podría hacer en esta situación.

    
respondido por el SamGibson

Lea otras preguntas en las etiquetas