Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
evgenij-byvshev
7 лет назад

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

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

И снова здравствуйте.

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

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

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

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

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

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

Регистр SPCR0:

Бит 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:

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


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


Если есть вопросы и предложения по этому уроку, пишите комментарии буду рад ответить на ваши вопросы.


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

4
740.684 GOLOS
На Golos с February 2017
Комментарии (1)
Сортировать по:
Сначала старые