2017-08-24 9 views
0

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.

Antwort

0

den Fehler zu entfernen, schreiben:

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

ich, dass die Größe der Matrix 10 uint16_t DataToSend[10] bemerkt ist (die 20 Byte ist), vielleicht gemeint Sie:

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

sollten Sie nicht Rufen Sie den in Ihrem Link erwähnten Ausrichtungsfehler ab, da Sie die STM32F4-Familie verwenden.

+0

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

+0

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) –

+0

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

Verwandte Themen