我试图使用HAL_SPI_Transmit(。)进行16位数据传输。STM32 HAL SPI 16位发送
我已经使用STM32Cube作为16位的数据大小
(与hspi2.Init.DataSize = SPI_DATASIZE_16BIT
)上配置的SPI。
我试图在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相当陌生,因此对您来说答案可能很明显。
我使用2作为Size参数的原因是我想发送2个16位数据。我应该在这种情况下写4吗? @Guillaume – Alithewise
我刚看了一下HAL代码,看起来大小就是单词的数量。所以看起来你是对的,应该是2(发送2个16位字) –
感谢您的回答。我测试了它,它工作。但我认为应该改变函数定义来支持16位数据而不用进行类型转换。 – Alithewise