我正在尝试从lis3dsh加速度计(STM32f4discovery板)获取数据。我用HAL图书馆。据我所知,从加速度计输入的数据值可能是负值(int类型),但是HAL库函数使用uint类型。
HAL_StatusTypeDef HAL_SPI_TransmitReceive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size)
{
......
}SPI的其他功能也有相同的情况。还有USART。如何接收和传递有符号的值&
发布于 2016-03-24 11:02:25
我有过使用MPU6050加速度计(STM32F0)的经验。正如在他的评论中所说的那样,SPI发送和接收比特流。查看函数头,函数期望8位。如果您试图从加速度计获取数据,可能需要使用位移位操作。对于位移位操作,您应该避免符号extension.Thus的有符号值,应该将传感器的值分配给无符号类型的Rx缓冲区。在位移位或‘’ing‘之后,选择输出类型作为有符号的value.That符号类型输出将为您生成负值和正值。下面是一个示例,说明从IMU(由I2C创建)接收数据时的数据类型是什么:
uint8_t RxData[]; //Variable to be assigned for sensor values by SPI
int16_t Accel_X_Out; //Output
HAL_SPI_...(//arguments)
{
Accel_X_Out=((RxData[0] << 8) | RxData[1]);
}如果您需要更多的信息,您可以查看链接。使用有符号类型:What does AND 0xFF do?符号扩展:extension
https://stackoverflow.com/questions/35939553
复制相似问题