SPI control register 1 (SPI_CR1)

Первый регистр управления SPI

Смещение (Address offset): 0x00

Reset value: 0x0000

15141312111098
BIDIMODE BIDIOE CRCEN CRCNEXT DFF RXONLY SSM SSI
rwrwrwrwrwrwrwrw
00000000
76543210
LSBFIRST SPE BR[2:0] MSTR CPOL CPHA
rwrwrwrwrwrw
00000000


Биты
Имя
Описание
15
BIDIMODE
Bidirectional data mode enable
Режим двунаправленной передачи данных

 0 :  режим однонаправленной передачи данных по двум линиям

 1 :  режим двунаправленной передачи данных по одной линии (Bidirectional data mode)

Бит недоступен в режиме I2S

14
BIDIOE
Output enable in bidirectional mode
Направление передачи данных в двунаправленном режиме

Этот бит в сочетании с битом BIDImode определяет направление передачи в двунаправленном режиме.

 0 :  вывод данных запрещён, режим приёма (receive-only mode)

 1 :  вывод данных разрешён, режим передачи (transmit-only mode)

В режиме ведущего (master) используется вывод MOSI, в режиме ведомого (slave) используется вывод MISO.

Бит недоступен в режиме I2S.

13
CRCEN
Hardware CRC calculation enable
Аппаратное вычисление контрольной суммы

 0 :  расчет CRC отключен.

 1 :  расчет CRC включен.

Устанавливается только при отключенном контроллере: SPE = "0" в этом регистре.

Бит недоступен в режиме I2S.

12
CRCNEXT
CRC transfer next
Признак контрольной суммы в следующем передаваемом символе

 0 :  следующий символ - данные

 1 :  следующий символ - CRC

В полнодуплексном режиме, или при передаче в однонаправленном режиме этот бит должен быть установлен сразу после записи последних данных в регистр SPI_DR.

При приёме в однонаправленном режиме этот бит должен быть установлен сразу после приёма предпоследних данных.

Бит должен быть сброшен в режиме передачи DMA.

Бит недоступен в режиме I2S.

11
DFF
Data frame format
Разрядность данных фрейма

 0 :  8-битные данные

 1 :  16-битные данные

Устанавливается только при отключенном контроллере: SPE = "0" в этом регистре.

Бит недоступен в режиме I2S.

10
RXONLY
Receive only
Только приём

 0 :  полнодуплексный обмен

 1 :  только приём данных, передача запрещена

---

Бит недоступен в режиме I2S.

9
SSM
Software slave management
Программное управление slave-устройствами

 0 :  программное управление slave-устройствами отключено

 1 :  программное управление slave-устройствами включено

Когда бит установлен - на вывод NSS подаётся значение бита SSI.

Бит недоступен в режиме I2S.

8
SSI
Internal slave select
Аппаратное управление сигналом CS slave-устройства

Этот бит действует только при установленном бите SSM.

Значение этого бита принудительно записывается на вывод NSS, а другие возможности управления выводом NSS игнорируется.

Бит недоступен в режиме I2S.

7
LSBFIRST
Frame format
Порядок передачи битов данных во фрейме

 0 :  первым передаётся старший значащий бит (MSb - Most Significant Bit)

 1 :  первым передаётся младший значащий бит (LSb - Least Significant Bit)

Бит нельзя изменять во время обмена данными.

Бит недоступен в режиме I2S.

6
SPE
SPI enable
Включение SPI-контроллера

 0 :  контроллер SPI отключен

 1 :  контроллер SPI включен

Отключение SPI-контроллера должно выполняться по процедуре, описанной в Reference manual.

Бит недоступен в режиме I2S.

5:3
BR[2:0]
Baud rate control
Управление бодрейтом

 000 :  fPCLK/2

 001 :  fPCLK/4

 010 :  fPCLK/8

 011 :  fPCLK/16

 100 :  fPCLK/32

 101 :  fPCLK/64

 110 :  fPCLK/128

 111 :  fPCLK/256

Бит нельзя изменять во время обмена данными.

Бит недоступен в режиме I2S.

2
MSTR
Master selection
Выбор режима master - slave

 0 :  slave-режим

 1 :  master-режим

Бит нельзя изменять во время обмена данными.

Бит недоступен в режиме I2S.

1
CPOL
Clock polarity
Полярность тактовых импульсов

 0 :  при отсутствии передачи (IDLE) уровень линии CK - "0"

 1 :  при отсутствии передачи (IDLE) уровень линии CK - "1"

Бит нельзя изменять во время обмена данными.

Бит недоступен в режиме I2S.

0
CPHA
Clock phase
Фаза тактовых импульсов

 0 :  захват данных по первому фронту тактовых импульсов

 1 :  захват данных по второму фронту тактовых импульсов

Бит нельзя изменять во время обмена данными.

Бит недоступен в режиме I2S.



/*******************  Bit definition for SPI_CR1 register  ********************/

#define  SPI_CR1_CPHA         ((uint16_t)0x0001)     /* Clock Phase */
#define  SPI_CR1_CPOL         ((uint16_t)0x0002)     /* Clock Polarity */
#define  SPI_CR1_MSTR         ((uint16_t)0x0004)     /* Master Selection */

#define  SPI_CR1_BR           ((uint16_t)0x0038)     /* BR[2:0] bits (Baud Rate Control) */
#define  SPI_CR1_BR_0         ((uint16_t)0x0008)     /* Bit 0 */
#define  SPI_CR1_BR_1         ((uint16_t)0x0010)     /* Bit 1 */
#define  SPI_CR1_BR_2         ((uint16_t)0x0020)     /* Bit 2 */

#define  SPI_CR1_SPE          ((uint16_t)0x0040)     /* SPI Enable */

#define  SPI_CR1_LSBFIRST     ((uint16_t)0x0080)     /* Frame Format */
#define  SPI_CR1_SSI          ((uint16_t)0x0100)     /* Internal slave select */
#define  SPI_CR1_SSM          ((uint16_t)0x0200)     /* Software slave management */

#define  SPI_CR1_RXONLY       ((uint16_t)0x0400)     /* Receive only */
#define  SPI_CR1_DFF          ((uint16_t)0x0800)     /* Data Frame Format */

#define  SPI_CR1_CRCNEXT      ((uint16_t)0x1000)     /* Transmit CRC next */
#define  SPI_CR1_CRCEN        ((uint16_t)0x2000)     /* Hardware CRC calculation enable */

#define  SPI_CR1_BIDIOE       ((uint16_t)0x4000)     /* Output enable in bidirectional mode */
#define  SPI_CR1_BIDIMODE     ((uint16_t)0x8000)     /* Bidirectional data mode enable */