Hallo,
ich versuche vergeblich das SPI2 (Master Mode) eines STM32 (STM32F103RB)
auf einem STM32-PerformanceStick von Hitex in Gang zu kriegen. Dazu
verwende ich die STM-Lib und habe mich an den Beispielen orientiert.
Wenn ich versuche über
1 | SPI_I2S_SendData(SPI2, 0xaa);
|
etwas zu senden, tut sich überhaupt nichts (auch die Clock ist Null auf
dem Oszi).
Hier mein Code, fällt jemandem vielleicht irgendetwas auf, bzw. hat
jemand Beispielcode parat, der funktioniert?
1 | /* RCC */
|
2 | RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
|
3 | RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);
|
4 |
|
5 | /* GPIO */
|
6 |
|
7 | /* SPI2 NSS @ PB12 */
|
8 | GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
|
9 | GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
|
10 | GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
11 | GPIO_Init(GPIOB, &GPIO_InitStructure);
|
12 |
|
13 | /* SPI2 SCK/MISO/MOSI @ PB13/PB14/PB15 */
|
14 | GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14| GPIO_Pin_15;
|
15 | GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
16 | GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
17 | GPIO_Init(GPIOB, &GPIO_InitStructure);
|
18 |
|
19 | /* SPI */
|
20 | SPI_InitTypeDef SPI_InitStructure;
|
21 |
|
22 | SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
|
23 | SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
|
24 | SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
|
25 | SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
|
26 | SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
|
27 | SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
|
28 | SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256; // 36MHz/256=140kHz < 400kHz
|
29 | SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
|
30 | SPI_InitStructure.SPI_CRCPolynomial = 7;
|
31 | SPI_Init(SPI2, &SPI_InitStructure);
|
32 |
|
33 | SPI_CalculateCRC(SPI2, DISABLE);
|
34 | SPI_Cmd(SPI2, ENABLE);
|
Vielen Dank für Anregungen!