STM32 HAL SPI 16位发送

时间:2017-08-24 06:27:37

标签: c stm32 spi stm32f4discovery stm32f4

我正在尝试使用HAL_SPI_Transmit(。)进行16位数据传输。

我已使用STM32Cube将SPI配置为16位数据

hspi2.Init.DataSize = SPI_DATASIZE_16BIT)。

我尝试用16位发送数据:

uint16_t DataToSend[10]={...};

HAL_SPI_Transmit(&hspi2,DataToSend, 2,TIMEOUTSPI);

但函数HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout)特别需要uint8_t *,并返回以下错误:

error: #167: argument of type "uint16_t *" is incompatible with parameter of type "uint8_t *"

那么如何使用HAL_SPI_Transmit()发送16位数据?

我发现了这个link,但只讨论了错误而不是使用该函数的方法。所以我的问题仍然存在。

我没有运气就搜索过网。 我对STM32很新,所以答案可能对你很明显。

1 个答案:

答案 0 :(得分:1)

要删除错误,请写:

HAL_SPI_Transmit(&hspi2,(uint8_t*)(DataToSend), 2,TIMEOUTSPI);

我注意到你的数组的大小是10 uint16_t DataToSend[10](这是20个字节),也许你的意思是:

HAL_SPI_Transmit(&hspi2,(uint8_t*)(DataToSend), 20,TIMEOUTSPI);

当您使用STM32F4系列时,不应该得到链接中提到的对齐错误。