我正在尝试使用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很新,所以答案可能对你很明显。
答案 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系列时,不应该得到链接中提到的对齐错误。