首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这是通向SPI的正确方式吗?

这是通向SPI的正确方式吗?
EN

Stack Overflow用户
提问于 2020-11-19 17:22:53
回答 1查看 36关注 0票数 1

我目前正在尝试检查函数,看我的SPI是否正常工作。这个函数应该返回1,如果一切都是fine...but,它总是返回0。也许pTxData中的值是错误的?

代码语言:javascript
复制
uint8_t Gyro_CanReadWHOAMI() {
    uint8_t pTxData[2] = {0x0F | 0x80, 0};
    uint8_t pRxData[2] = {0, 0};
    
    HAL_GPIO_WritePin(NCS_MEMS_SPI_GPIO_Port, NCS_MEMS_SPI_Pin, GPIO_PIN_RESET);
    HAL_SPI_TransmitReceive(&hspi5, pTxData, pRxData, 2, HAL_MAX_DELAY);
    
    HAL_GPIO_WritePin(NCS_MEMS_SPI_GPIO_Port, NCS_MEMS_SPI_Pin, GPIO_PIN_SET);
    uint8_t test = pRxData[1] == 0x32;
    return test;
}
代码语言:javascript
复制
int main(void)
{
  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();
  SystemClock_Config();
  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_SPI5_Init();

  uint32_t reads = 0;

  while (1)
  {
      Gyro_CanReadWHOAMI();
  }

}

使用STM32F429I-DISC1

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-19 17:50:17

已解决,错误的值

代码语言:javascript
复制
uint8_t Gyro_CanReadWHOAMI() {

      uint8_t pTxData[2] = {0b10000000 | 0x0F, 0};

      uint8_t pRxData[2] = {0, 0};

      HAL_GPIO_WritePin(NCS_MEMS_SPI_GPIO_Port, NCS_MEMS_SPI_Pin, GPIO_PIN_RESET);
      HAL_SPI_TransmitReceive(&hspi5, pTxData, pRxData, 2, HAL_MAX_DELAY);

      HAL_GPIO_WritePin(NCS_MEMS_SPI_GPIO_Port, NCS_MEMS_SPI_Pin, GPIO_PIN_SET);
      uint8_t test = pRxData[1] == 0xD4;
      return test;

}

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

https://stackoverflow.com/questions/64908732

复制
相关文章

相似问题

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