STM32F103C8T6: SPI - Serial peripheral interface


SPI - регистры последовательного интерфейса передачи данных
Имя регистра
Смещение
Наименование
0x00
SPI control register 1 (not used in I2S mode)
Первый регистр управления SPI
0x04
SPI control register 2
Второй регистр управления SPI
0x08
SPI status register
Регистр состояния SPI
0x0C
SPI data register
Регистр данных SPI
0x10
SPI CRC polynomial register (not used in I2S mode)
Регистр полинома контрольной суммы SPI
0x14
SPI RX CRC register (not used in I2S mode)
Регистр контрольной суммы SPI-приёмника
0x18
SPI TX CRC register (not used in I2S mode)
Регистр контрольной суммы SPI-передатчика
0x1C
SPI_I2S configuration register
Регистр конфигурации SPI/I2S
0x20
SPI_I2S prescaler register
Регистр тактирования I2S



#define PERIPH_BASE         ((uint32_t)0x40000000)      /* Peripheral base address in the alias region */
#define APB2PERIPH_BASE     (PERIPH_BASE + 0x10000)
#define SPI1_BASE           (APB2PERIPH_BASE + 0x3000)
#define SPI2_BASE           (APB1PERIPH_BASE + 0x3800)
#define SPI3_BASE           (APB1PERIPH_BASE + 0x3C00)

#define SPI1                ((SPI_TypeDef *) SPI1_BASE)
#define SPI2                ((SPI_TypeDef *) SPI2_BASE)
#define SPI3                ((SPI_TypeDef *) SPI3_BASE)


typedef struct
{
  __IO uint16_t CR1;
       uint16_t  RESERVED0;
  __IO uint16_t CR2;
       uint16_t  RESERVED1;
  __IO uint16_t SR;
       uint16_t  RESERVED2;
  __IO uint16_t DR;
       uint16_t  RESERVED3;
  __IO uint16_t CRCPR;
       uint16_t  RESERVED4;
  __IO uint16_t RXCRCR;
       uint16_t  RESERVED5;
  __IO uint16_t TXCRCR;
       uint16_t  RESERVED6;
  __IO uint16_t I2SCFGR;
       uint16_t  RESERVED7;
  __IO uint16_t I2SPR;
       uint16_t  RESERVED8;  
} SPI_TypeDef;


typedef enum IRQn
{
  SPI1_IRQn    = 35,     /* SPI1 global Interrupt       */
  SPI2_IRQn    = 36,     /* SPI2 global Interrupt       */
  SPI3_IRQn    = 51,     /* SPI3 global Interrupt       */
}