Forum: Mikrocontroller und Digitale Elektronik STM32F733 und SPI: Bitanzahl passt nicht


von Pepe (Gast)


Angehängte Dateien:

Lesenswert?

Hallo.
Ich verwende einen STM32F733 und möchte per SPI ein Bitmuster (insgesamt 
4 Byte) einlesen. Wollte eigentlich byteweise einlesen.

Hier meine Init:

  hspi3.Instance = SPI3;
  hspi3.Init.Mode = SPI_MODE_MASTER;
  hspi3.Init.Direction = SPI_DIRECTION_2LINES;
  hspi3.Init.DataSize = SPI_DATASIZE_8BIT;
  hspi3.Init.CLKPolarity = SPI_POLARITY_HIGH;
  hspi3.Init.CLKPhase = SPI_PHASE_2EDGE;
  hspi3.Init.NSS = SPI_NSS_SOFT;
  hspi3.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256;
  hspi3.Init.FirstBit = SPI_FIRSTBIT_MSB;
  hspi3.Init.TIMode = SPI_TIMODE_DISABLE;
  hspi3.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
  hspi3.Init.CRCPolynomial = 7;
  hspi3.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE;
  hspi3.Init.NSSPMode = SPI_NSS_PULSE_ENABLE;
  HAL_SPI_Init(&hspi3);

Zum Starten des Einlesens schreibe ich ins DR Register und der SPI legt 
los. SPI3->DR = 0

Aber der SPI erzeugt immer 16 Clocks und nicht wie eingestellt 8.
Habe CR1 & CR2 schon per Hand durchgeschaut, aber mir fällt nichts auf, 
warum die Bitlänge nicht passt.
Folgende Werte stehen in den Registern: CR1 = 0x037F; CR2 = 0x1748
direkt beim Starten des Einlesens.

Mit fällt gerade nichts mehr ein.
Kann mir jemand helfen?

Vielen Dank.
Pepe.

von A. B. (Gast)


Lesenswert?

Im RM, 28.5.9, steht's unter "Data Packing", Fig. 351:

Das DR ist ein 16-bit Register. SPI3->DR = 0 schreibt beim Datenformat 8 
Bit also ZWEI Einträge in den FIFO, sprich es kommen dann eben auch 2 * 
8 Bit heraus. Den Pointer auf uint8_t casten!

von Pepe (Gast)


Lesenswert?

Kaum schreib ich als uint8_t ins DR funktioniert es auch.
Danke für die schnelle Hilfe. Hat mich heute seit 11:30 beschäftigt.
Hätt' ich mal früher gefragt ;-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.