Estoy usando este sensor actual: archivo de archivoIdcc Según la hoja de datos:
¿Cómo puede el maestro SPI enviar exactamente 16 pulsos de reloj al esclavo, por lo que no recibo los 0?
Cuando estoy leyendo este sensor, obtengo una gran cantidad de 0. Entonces, pensé que podría ser la razón, que estoy enviando más de 16 pulsos de relojes. Estoy usando un Núcleo STM32 a 2 MHz, pero el reloj SPI se ha preescalado a 1 MHz . Apreciaría cualquier consejo. Este es el código que utilizo para leer el sensor y calcular la corriente:
while (1)
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);
HAL_SPI_Receive(&hspi1, (uint8_t *)&SPIRx, 2, 10);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
motorCurrent=motor_current();
float motor_current() {
float Iout;
float BIout;
int16_t Bit15;
Bit15 = SPIRx&0x8000;
if(Bit15==0x8000){
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, GPIO_PIN_SET);
}
else {
BIout= SPIRx&0x1FFF;
Iout = (BIout-4096)/80;
}
return Iout;
}