小编Ani*_*AIT的帖子

STM32 SPI与HAL通信

我刚刚开始对 STM32 进行编程,并使用 CubeMX 生成了一个代码,用于与陀螺仪 (L3GD20) 进行 SPI 通信。我对 HAL_SPI 命令有疑问。

我首先尝试读取WHO_AM_I返回良好响应(0xD4)的寄存器,然后我尝试对寄存器执行相同的操作CTRL_REG1,返回(0x07)仍然很好。

但是,如果我尝试一个接一个地获取它们,则会HAL_SPI_Receive不断发送第一个代码的数据HAL_SPI_Transmit...尝试为其提供其他缓冲区,但仍然不起作用。

这是我感兴趣的代码部分:

    uint8_t txData[8],rxData[8];    //Buffers for the first read.
    uint8_t rBuffer[8];             //Buffer for the second read.
/*...............................................................
 *...............................................................
 *...............................................................
*/...............................................................
  txData[0] = ADDR_WHO_AM_I | 0x80; 
  HAL_SPI_Transmit(&hspi2, txData, 1, HAL_MAX_DELAY);
  HAL_SPI_Receive(&hspi2, rxData, 1, HAL_MAX_DELAY);   //Returns the right value
  HAL_Delay(1000);

  txData[0] = ADDR_CTRL_REG1 | 0x80;
  HAL_Delay(500);
  
  HAL_SPI_Transmit(&hspi2, txData, 1, HAL_MAX_DELAY);
  HAL_SPI_Receive(&hspi2, rBuffer, 1, HAL_MAX_DELAY);  //Returns the same value...
  HAL_Delay(1000);
Run Code Online (Sandbox Code Playgroud)

PS:我还想了解更多有关HAL_SPI_TransmitReceive如果可能的话,我应该如何使用它来执行相同的任务?(从不同的寄存器读取 …

embedded hal spi stm32 stm32f4discovery

1
推荐指数
1
解决办法
2万
查看次数

标签 统计

embedded ×1

hal ×1

spi ×1

stm32 ×1

stm32f4discovery ×1