微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

STM32 SPI 通信仅回显发送数据

如何解决STM32 SPI 通信仅回显发送数据

我正在设置从我的 STM32L471ZETx 到 ADS1261 ADC 的 SPI 通信,但我一直无法获得从 ADC 返回的正确数据。我当前的代码将回显发送给它的字节,根据我的理解,这是因为 ADC 没有将数据加载到返回缓冲区中以发送回来,所以来自主站的数据只是在循环?我也在使用 FreeRTOS,所以不确定这是否会影响我的设置方式。

我已按照此处的示例代码进行操作:https://www.ti.com/product/ADS1261#design-development##software-development 以进行操作。

我目前正在调查 SPI 配置设置,因为据我所知,一般命令是正确的?

static void MX_SPI3_Init(void)
{

  /* USER CODE BEGIN SPI3_Init 0 */

  /* USER CODE END SPI3_Init 0 */

  /* USER CODE BEGIN SPI3_Init 1 */

  /* USER CODE END SPI3_Init 1 */
  /* SPI3 parameter configuration*/
  hspi3.Instance = SPI3;
  hspi3.Init.Mode = SPI_MODE_MASTER;
  hspi3.Init.Direction = SPI_DIRECTION_2LInes;
  hspi3.Init.DataSize = SPI_DATASIZE_8BIT;
  hspi3.Init.CLKPolarity = SPI_POLARITY_LOW;
  hspi3.Init.CLKPhase = SPI_PHASE_2EDGE;
  hspi3.Init.NSS = SPI_NSS_HARD_OUTPUT;
  hspi3.Init.BaudratePrescaler = SPI_BAUdratEPRESCALER_8;
  hspi3.Init.FirstBit = SPI_FirsTBIT_MSB;
  hspi3.Init.TIMode = SPI_TIMODE_disABLE;
  hspi3.Init.CRCCalculation = SPI_CRCCALculaTION_disABLE;
  hspi3.Init.CRCpolynomial = 7;
  hspi3.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE;
  hspi3.Init.NsspMode = SPI_NSS_pulse_disABLE;
  if (HAL_SPI_Init(&hspi3) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN SPI3_Init 2 */

  /* USER CODE END SPI3_Init 2 */

}

void SPITask(void *arguments) {
    uint8_t transmission_buf[6] = { 0x12,0x03,0x00,0x00};
    uint8_t start_conversion_buf[2] = { 0x08,0x03 };
    uint8_t reset_buf[2] = { 0x06,0x03 };
    uint8_t receive_buf[6] = { 0x00,0x00 };
    uint8_t id_buf[6] = { 0x20,0x00 }; //read id register

    HAL_GPIO_WritePin(GPIOB,ADC1_nPWDN_Pin,GPIO_PIN_SET); //pwdn pin is high before conversions
    HAL_GPIO_WritePin(GPIOB,ADC1_nRESET_Pin,GPIO_PIN_SET); //reset pin is high before conversions
    HAL_GPIO_WritePin(GPIOB,ADC1_START_Pin,GPIO_PIN_SET); //start pin is high before conversions
    //poll for the drdy bit
    while(HAL_GPIO_ReadPin(GPIOB,ADC1_nDRDY_Pin) == 1);
    for (;;) {
        HAL_SPI_Init(&hspi3);
        HAL_SPI_TransmitReceive(&hspi3,(uint8_t*)id_buf,(uint8_t*) receive_buf,6,100);
        HAL_SPI_DeInit(&hspi3);
    }
} 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。