首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用HAL stm32库通过SPI传输签名(int)值?

如何使用HAL stm32库通过SPI传输签名(int)值?
EN

Stack Overflow用户
提问于 2016-03-11 11:50:45
回答 1查看 2K关注 0票数 1

我正在尝试从lis3dsh加速度计(STM32f4discovery板)获取数据。我用HAL图书馆。据我所知,从加速度计输入的数据值可能是负值(int类型),但是HAL库函数使用uint类型。

代码语言:javascript
运行
复制
HAL_StatusTypeDef HAL_SPI_TransmitReceive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size)    
{    
......    
}

SPI的其他功能也有相同的情况。还有USART。如何接收和传递有符号的值&

EN

回答 1

Stack Overflow用户

发布于 2016-03-24 11:02:25

我有过使用MPU6050加速度计(STM32F0)的经验。正如在他的评论中所说的那样,SPI发送和接收比特流。查看函数头,函数期望8位。如果您试图从加速度计获取数据,可能需要使用位移位操作。对于位移位操作,您应该避免符号extension.Thus的有符号值,应该将传感器的值分配给无符号类型的Rx缓冲区。在位移位或‘’ing‘之后,选择输出类型作为有符号的value.That符号类型输出将为您生成负值和正值。下面是一个示例,说明从IMU(由I2C创建)接收数据时的数据类型是什么:

代码语言:javascript
运行
复制
  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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35939553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档