Leyendo una palabra de 16 bits a través de SPI desde un sensor actual [STM32 & CubeMx]

0

Tengo problemas para leer mi sensor actual, que se encuentra en la parte emisora de un IGBT de potencia.

Esta es la hoja de datos de mi sensor / p>

Esta es mi rutina cada 10 ms:

HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET); //Bring slave select low
HAL_SPI_Receive(&hspi1, (uint8_t *)&SPIRx, 2, 10); //Receive data
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET); //Bring slave select high

Sin embargo, obtengo valores aleatorios incluso cuando la corriente es cero. Estoy obteniendo valores como:

0x8800

0x8803

0x8801

0xA7FF

0x87FC

0x97FE

0xA802

0xA801

0x97FD

0x87FD

0xA800

0xA7FE

Según la hoja de datos, estos son mensajes de estado del sensor, pero ninguno de ellos son mensajes actuales del sensor. El hardware parece estar bien. Este sensor no es tan común, creo. No he encontrado mucha ayuda. ¿Cuál crees que es el problema? Puedo cargar todo el código generado por CubeMx si es necesario.

    

1 respuesta

0

Esos valores son bastante consistentes. Recuerde que los bits más altos contienen la paridad y su resultado es aproximadamente 0x800, que es IMO correcto. Recuerda que la corriente puede fluir en ambas direcciones. Por lo tanto, el cero será menos la corriente máxima, el valor medio (este es su caso) representa cero y el valor máximo representa la corriente máxima.

    
respondido por el P__J__

Lea otras preguntas en las etiquetas