Инициализация
Для того, чтобы начать работу с SPI, необходимо инициализировать сам модуль, а также те выводы микроконтроллера, по которым будет осуществляться передача данных.
typedef struct {
  uint16_t SPI_Direction;
  uint16_t SPI_Mode;
  uint16_t SPI_DataSize;
  uint16_t SPI_CPOL;
  uint16_t SPI_CPHA;
  uint16_t SPI_NSS;
  uint16_t SPI_BaudRatePrescaler;
  uint16_t SPI_FirstBit;
  uint16_t SPI_CRCPolynomial;
} SPI_InitTypeDef;
SPI_Direction
SPI_Mode
SPI_DataSize
SPI_CPOL
SPI_CPHA
SPI_NSS
SPI_BaudRatePrescaler
SPI_FirstBit
SPI_CRCPolynomial

Регистры
SPI_CR1Регистр управления 1
SPI_CR2Регистр управления 2
SPI_SRРегистр состояния
SPI_DRРегистр данных
SPI_CRCPR
SPI_RXCRCR
SPI_TXCRCR
SPI_I2SPR