Forum: Mikrocontroller und Digitale Elektronik SPI clockt 16 bit im trotz data size 8 bit


von Markus Grunwald (Gast)


Angehängte Dateien:

Lesenswert?

Servus,

auf meinem STM32F303 initialisiere ich die SPI-Schnittstelle so:
1
    //Configure SPI (but without enabling it)
2
    SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
3
    SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
4
    SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
5
    SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
6
    SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
7
    SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
8
    //PCLK2/32 = 72MHz/32 = 2.25MHz
9
    SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16;/* SPI_BaudRatePrescaler_32;*/
10
    SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
11
    SPI_InitStructure.SPI_CRCPolynomial = 7;
12
    SPI_Init(SPI2, &SPI_InitStructure);
13
14
    //Enable SPI
15
    SPI_Cmd(SPI2, ENABLE);

Auf das
1
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
 kommt's mir an:

Wenn ich nämlich ein Byte abschicke, werden 16 bit auf SCL getaktet, 
nicht nur 8. Die "extra" 8 bit sind dann alle 0. Jedenfalls auf MOSI. 
Wenn Daten über MISO kommen, sieht es so aus, als ob 16 bit ankämen...

Siehe auch Screenshot: oben clock,darunter MOSI, MISO und CS.

Irgendwas ist doch da bei der Initialisierung falsch, oder? Ich würde 
nur 8 clocks für 8 bit erwarten...

Kann mir da bitte jemand auf die Sprünge helfen?

von wisch (Gast)


Lesenswert?

Markus Grunwald schrieb:
> Wenn ich nämlich ein Byte abschicke, werden 16 bit auf SCL getaktet,
> nicht nur 8. Die "extra" 8 bit sind dann alle 0. Jedenfalls auf MOSI.
> Wenn Daten über MISO kommen, sieht es so aus, als ob 16 bit ankämen...
>
> Siehe auch Screenshot: oben clock,darunter MOSI, MISO und CS.

Aha, alles unklar, besonders SCL und das Byte.

von Jim M. (turboj)


Lesenswert?

Zeige uns mal Deinen SPI Transfer Code.

von Markus Grunwald (Gast)


Lesenswert?

Serus,

sowas passiert, wenn man statt  SPI_SendData8  SPI_SendData16 verwendet 
(doh) :(

Problem gelöst :)

cu
Markus

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.