Интерфейс SPI в ардуино

SPI в ардуино

Общее описание интерфейса SPI в ардуино

SPISerial Peripheral Interface в переводе  «Последовательный периферийный интерфейс». SPI является протоколом передачи данных синхронного типа. Для передачи данных посредством SPI необходимо, чтобы одно устройство было мастером (Master), а другое слэйвом (Slave). Передача данных между устройствами по SPI производится по четырем или по трем проводам.

  1. MOSI (Master Out Slave In). Провод, для отправки данных от мастера к слэйву.
  2. MISO (Master In Slave Out). Провод, для отправки данных от слэйва к мастеру.
  3. SCLK (Serial Clock). Импульсы синхронизации между мастером и слэйвом. Генерирует мастер;
  4. SS (Slave Select). Выбор Slave устройства. Устройство выбирается установкой на линии логического 0.

Для SPI в ардуино предусмотрено 4 режима передачи данных.

Режим SPI_MODE0

Бит CPOL — 0, CPHA — 0.

Режим SPI Mode 0
Рисунок 1. Режим SPI Mode 0

Режим SPI_MODE1

Бит CPOL — 0, CPHA — 1.

Режим SPI Mode 1
Рисунок 2. Режим SPI Mode 1

Режим SPI_MODE2

Бит CPOL — 1, CPHA — 0.

Режим SPI Mode 2
Рисунок 3. Режим SPI Mode 2

Режим SPI_MODE3

Бит CPOL — 1, CPHA — 1.

Режим SPI Mode 3
Рисунок 4. Режим SPI Mode 3

Заметка


Обратите внимание на рисунках сверху на линию Sample. Пики показывают в какой момент можно считывать данные. 

К одному мастеру, по SPI, может быть подключено несколько устройств Slave. Подключение устройств может быть реализовано в двух вариантах: каскадном и независимом варианте. Примеры приведены на картинке ниже.

Подключения устройств по SPI
Рисунок 5. Примеры подключения устройств по SPI

Использование и подключение интерфейса SPI в ардуино

В каждой плате ардуино переферийное устройство SPI выведено на отдельные ножки.

Рисунок 6. Контакты интерфейса SPI на платах ардуино

Библиотека для работы с SPI в Arduino IDE

Управление устройствами через протокол SPI в ардуино производится с помощь функций стандартной библиотеки SPI.h. 

Подключив библиотеку через директиву #include <SPI.h> , необходимо настроить SPI функцией

SPI.beginTransaction(SPISettings(10000000, MSBFIRST, SPI_MODE0)); 

Первым параметром идет скорость передачи, второй параметр — порядок следования бит (старший бит первый MSBFIRST или младший бит первый LSBFIRST). Третий параметр определяет режим работы SPI.

Для передачи и чтения данных предназначена функция SPI.transfer(val). Функция возвращает прочитанный байт. Если необходимо только считать данные без передачи, параметр Val прировняйте 0.

SPI.transfer(0);

Алгоритм работы с SPI ардуино

  1. Подключить библиотеку SPI.h;
  2. Провести инициализацию SPI. Выбрать нужную скорость передачи, установить порядок следования бит и режим работы.
  3. Установить линии SS в 0.
  4. Произвести запись/чтение байта. Или массива байтов. Чтение должно быть непрерывным.
  5. Установить линию SS в 1.
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии