#include "initialize.h" void periphery_init(void) { /*##################################################################################################### * SPI Interface (SPI1) */ // Enable clock for SPI interface RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE); // Enable clock for AHB1-periphery RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); // MISO, MOSI, SCK RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE); // NSS // Enable SPI interface for pins GPIO_PinAFConfig(GPIOA, GPIO_PinSource5, GPIO_AF_SPI1); // SCK GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_SPI1); // MISO GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_SPI1); // MOSI // Initialization of SPI-GPIOs GPIO_InitTypeDef GPIO_SPI; GPIO_SPI.GPIO_Pin = MISO | MOSI | SCK; GPIO_SPI.GPIO_Mode = GPIO_Mode_AF; GPIO_SPI.GPIO_OType = GPIO_OType_PP; GPIO_SPI.GPIO_Speed = GPIO_Speed_50MHz; GPIO_SPI.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOA, &GPIO_SPI); // Initialization of NSS-Pin GPIO_InitTypeDef GPIO_NSS; GPIO_NSS.GPIO_Pin = NSS; GPIO_NSS.GPIO_Mode = GPIO_Mode_OUT; GPIO_NSS.GPIO_OType = GPIO_OType_PP; GPIO_NSS.GPIO_Speed = GPIO_Speed_50MHz; GPIO_NSS.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOC, &GPIO_NSS); // Set NSS (chip select pin) High GPIOC->BSRRL |= NSS; // Initalize SPI interface SPI_InitTypeDef SPI_InitStruct; SPI_InitStruct.SPI_Direction = SPI_Direction_1Line_Tx; // Only transmitting data SPI_InitStruct.SPI_Mode = SPI_Mode_Master; // F4 is configured as master SPI_InitStruct.SPI_DataSize = SPI_DataSize_16b; // Data is transmitted via 16 bit SPI_InitStruct.SPI_CPOL = SPI_CPOL_Low; SPI_InitStruct.SPI_CPHA = SPI_CPHA_1Edge; SPI_InitStruct.SPI_NSS = SPI_NSS_Soft | SPI_NSSInternalSoft_Set; SPI_InitStruct.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256; SPI_InitStruct.SPI_FirstBit = SPI_FirstBit_MSB; SPI_InitStruct.SPI_CRCPolynomial = 7; SPI_Init(SPI1, &SPI_InitStruct); SPI_Cmd(SPI1, ENABLE); }