STM32F733 und SPI: Bitanzahl passt nicht

Gast #5608526
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.
Angehängte Dateien:
Gast #5608572
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!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren