Ich versuche, HAL_SPI_Transmit (.) Für 16-Bit-Datenübertragung zu verwenden.STM32 HAL SPI 16 Bit Senden
Ich habe die SPI unter Verwendung STM32Cube als 16-Bit-Datengrße
(mit hspi2.Init.DataSize = SPI_DATASIZE_16BIT
) konfiguriert.
uint16_t DataToSend[10]={...};
HAL_SPI_Transmit(&hspi2,DataToSend, 2,TIMEOUTSPI);
Aber die Funktion HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout)
speziell für uint8_t * benötigt, und es gibt folgende Fehler
Ich habe versucht, Daten mit 16 Bit zu senden
error: #167: argument of type "uint16_t *" is incompatible with parameter of type "uint8_t *"
Wie also kann Ich sende 16 Bit Daten mit HAL_SPI_Transmit()
?
Ich fand diese link aber nur der Fehler wurde diskutiert und nicht die Art, die Funktion zu verwenden. Also meine Frage bleibt.
Ich habe das Netz ohne Glück gesucht. Ich bin ziemlich neu zu STM32, so dass die Antwort für Sie offensichtlich sein kann.
Der Grund, warum ich 2 als Size-Parameter verwendet habe, ist, dass ich 2 16-Bit-Daten senden wollte. Soll ich in diesem Fall 4 schreiben? @ Guillaume – Alithewise
Ich habe gerade einen Blick auf den HAL-Code, und es sieht aus wie die Größe ist die Anzahl der Wörter. So scheint es, dass Sie Recht haben, sollte es 2 sein (um 2 16-Bit-Wörter zu senden) –
Danke für Ihre Antwort. Ich habe es getestet und es hat funktioniert. Aber ich denke, die Funktionsdefinition sollte geändert werden, um 16-Bit-Daten ohne Typumwandlung zu unterstützen. – Alithewise