Найти в Дзене
Евгений Бывшев

Программирование микроконтроллеров. Часть 11-1

Последовательный интерфейс SPI SPI (англ. Serial Peripheral Interface, SPI bus — последовательный периферийный интерфейс, шина SPI) — последовательный синхронный стандарт передачи данных в режиме полного дуплекса, предназначенный для обеспечения простого и недорогого высокоскоростного сопряжения микроконтроллеров и периферии. SPI также иногда называют четырёхпроводным (англ. four-wire) интерфейсом. Интерфейс SPI предназначен для коммуникации с периферийными устройствами, такими как сдвиговые регистры, внешняя память, часы реального времени и пр. При этом микроконтроллер может выступать как в качестве ведущего устройства, так и ведомого. Характеристики интерфейса SPI: Регистры интерфейса SPI: Регистр SPCR0: Бит SPIE0 (7) регистра SPCR0 разрешает прерывания от модуля SPI если установить в 1.
Бит SPE0 (6) регистра SPCR0 включает модуль SPI если установить в 1.
Бит DORD (5) регистра SPCR0 управляет порядком передачи (1 - младший бит первым / 0 - старший бит первым).
Бит MSTR0 (4) регис

Последовательный интерфейс SPI

SPI (англ. Serial Peripheral Interface, SPI bus — последовательный периферийный интерфейс, шина SPI) — последовательный синхронный стандарт передачи данных в режиме полного дуплекса, предназначенный для обеспечения простого и недорогого высокоскоростного сопряжения микроконтроллеров и периферии. SPI также иногда называют четырёхпроводным (англ. four-wire) интерфейсом.

Интерфейс SPI предназначен для коммуникации с периферийными устройствами, такими как сдвиговые регистры, внешняя память, часы реального времени и пр. При этом микроконтроллер может выступать как в качестве ведущего устройства, так и ведомого.

Характеристики интерфейса SPI:

  • Полный дуплекс, трехпроводная синхронная передача данных
  • Возможность работы в качестве ведущего/ведомого устройства
  • Выбор порядка передачи данных (младший или старший бит первым)
  • 7 скоростей передачи
  • Прерывания по окончанию передачи
  • Защита от записи в еще не опустошенный буфер передачи
  • Режим пробуждения
  • Повышение скорости передачи вдвое в режиме ведущего устройства

Регистры интерфейса SPI:

  • SPCR - регистр управления модулем SPI
  • SPSR - регистр контроля
  • SPDR - регистр данных

Регистр SPCR0:

-2

Бит SPIE0 (7) регистра SPCR0 разрешает прерывания от модуля SPI если установить в 1.
Бит
SPE0 (6) регистра SPCR0 включает модуль SPI если установить в 1.
Бит
DORD (5) регистра SPCR0 управляет порядком передачи (1 - младший бит первым / 0 - старший бит первым).
Бит
MSTR0 (4) регистра SPCR0 выбирает режим работы (1 - ведущий / 0 - ведомый).
Бит
CPOL0 (3) регистра SPCR0 управляет полярностью тактового сигнала (0 - импульсы положительной полярности, если нет импульсов, на выходе 0 / 1 - импульсы отрицательной полярности, если нет импульсов, на выходе 1).
Бит
CPHA0 (2) регистра SPCR0 управляет фазой тактового сигнала (0 - для CPOL0=0 - по нарастающему фронту, для CPOL0=1 - по спадающему фронту / 1 - наоборот)
Бит
SPR01 (1) и SPR00 (0) регистра SPCR0 выбор скорости передачи:

  • 00 - CLK/4
  • 01 - CLK/16
  • 10 - CLK/64
  • 110 - CLK/128

Регистр SPSR0:

-3

Бит SPIF0 (7) регистра SPSR0 - флаг прерывания от SPI (1 - если поступило прерывание)
Бит
WCOL0 (6) регистра SPSR0 - конфликт записи данных (1 - если запись в регистр SPDR происходит во время передачи предыдущего байта).
Бит
SPI2X0 (1) регистра SPSR0 - увеличивает скорость передачи вдвое, если установить 1.

В следующей части я покажу как управлять семисегментным LED индикатором через SPI интерфейс.

Программирование микроконтроллеров:

Часть 1 Часть 2-2 Часть 2-2 Часть 3-1 Часть 3-2 Часть 4-1 Часть 4-2 Часть 5 Часть 6-1 Часть 6-2 Часть 7 Часть 8-1 Часть 8-2 Часть 9 Часть 10