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

Для того чтобы использовать SPI протокол на Arduino и «общаться» с ведомыми устройствами, нужно подключить библиотеку SPI. Arduino в этом случае выступает в роли ведущего устройства.

SPI – это последовательный периферийный интерфейс обмена данными. Обмен данными осуществляется между ведущим устройством и несколькими ведомыми устройствами на небольших расстояниях. В роли ведущего устройства выступает микроконтроллер. Подключение устройств к микроконтроллеру осуществляется по трем проводам (линиям) и линией, которая необходима для выбора устройства.

Каждая линия имеет свое обозначение:

  • MISO (Master In Slave Out) - для передачи информации от ведомого к ведущему
  • MOSI (Master Out Slave In) - для передачи данных от ведущего к ведомому
  • Serial Clock (SCK) - используется для генерации синхронизирующего сигнала от ведущего устройства
  • Slave Select pin (SS) – линия для выбора ведущего устройства, если на входе в ведомое устройство LOW то обмен данными возможен, если HIGH то ведомое устройство игнорирует данные.

Важно понимать, что SPI это не аналоговый выход. Для того что бы подключить Arduino и использовать ее как ведущее устройство, нужно знать определенные выходы.

К примеру на Mega2560 шина SPI реализована на следующих выводах:

  • MISO – 50
  • MOSI – 51
  • SCK – 52
  • SS – 53

На других контроллерах на базе ATMega 168/328

  • MISO – 12
  • MOSI – 11
  • SCK – 13
  • SS – 10

Если вы не используете выход SS он все равно должен быть установлен как выход с помощью метода: pinMode(SSpin,OUTPUT)

Библиотека SPI содержит ряд методов которые упрощают обмен данными с устройствами.

Для вызова этого методов используется следующая конструкция: SPI.methodname();

begin() – инициализация шины SPI. Настраивает пины SCK, MOSI, SS как выходы. На SCK, MOSI записывает значение LOW а на SS значение HIGH.

end() – отключает шину SPI

setClockDivider() – используется для установки частоты синхронизации шины SPI к заданной частоте контроллера.

Параметры:

  • SPI_CLOCK_DIV2
  • SPI_CLOCK_DIV4
  • SPI_CLOCK_DIV8
  • SPI_CLOCK_DIV16
  • SPI_CLOCK_DIV32
  • SPI_CLOCK_DIV64
  • SPI_CLOCK_DIV128

setBitOrder() - устанавливает порядок вывода даннах в/из шины SPI.

Параметры:

  • LSBFIRST
  • MSBFIRST

satDataMode() –режима SPI, настройка уровня сигнала синхронизации и фазу синхронизации.

Параметры:

  • SPI_MODE0
  • SPI_MODE1
  • SPI_MODE2
  • SPI_MODE3

transfer() – используется для передачи одного байта информации по шине.

Параметры:

  • один байт информации.

Добавить комментарий


Защитный код
Обновить

Последние комментарии

Последнии темы форума

  • Нет сообщений для показа