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?