Каталог товаров

Связь с SPI-устройствами

Omega имеет встроенный аппаратный SPI-контроллер, позволяющий связываться с периферийными устройствами, которые поддержкивают SPI. Чтобы реализовать SPI-соединение, Omega имеет библиотеку на языке C, модуль Python и командную строку. В этой статье основное внимание будет уделено команде spi-tool.

Что такое SPI?

Последовательный периферийный интерфейс (SPI) представляет собой четырехпроводный синхронный протокол связи, в основном используемый для подключения микропроцессоров или микроконтроллеров к датчикам, памяти и другим периферийным устройствам.

Четыре сигнала:

сигналы SPI

SPI - это синхронная шина данных. Одна из линий -  часы, используемые для синхронизации битов, отправляемых по другим линиям данных.

Протокол основан на архитектуре ведущий-ведомый. Ведущий генерирует тактовые сигналы System Clock и сигналы ведомому Slave Select. Каждому ведомому устройству требуется собственное подключение к ведущему.

Для дополнительной информации, посмотрите статью Википедии.

Omega и SPI

SPI-шина Omega2 имеет одну доступную линию для выбора ведомого (CS1). Шина зарегистрирована в операционной системе через файл виртуального устройства /dev/spidev32766.1. Это стало возможным благодаря sysfs, псевдо-файловой системе, которая содержит информацию об аппаратном обеспечении Omega в файлах и позволяет пользователю управлять оборудованием, редактируя файлы.

Вот что означают цифры в названии виртуального устройства:

  • 32766 - номер шины Omega2.
  • 1 - идентификатор устройства. В данном случае соответствует ведомому устройству, подключенному к выводу CS1 Omega2.

При использовании данной шины вам нужно будет указать конкретно эти номера. Держите их под рукой!

Сбоку устройство 0 (CS0) подключено к флэш-памяти, используемой Omega.

Аппаратное обеспечение

Ниже показаны контакты SPI на Omega2 и на док-станции расширения.

SPI Omega2

SPI Omega 2

Командная строка

Утилита командной строки spi-tool позволяет пользователю читать и писать одиночные байты и/из SPI-шины Omega2. В приведенных ниже примерах используйте номер SPI-шины и идентификатор устройства (см. раздел выше).

По умолчанию этой утилиты нет в прошивке Omega. Чтобы установить ее:

opkg update

opkg install spi-tool

Запустите spi-tool -h для вывода описания параметров утилиты.

Чтение байт

Чтобы прочитать байт с SPI-устройства, укажите адрес памяти на устройстве:

spi-tool -b -d [options] read

Эта команда выведет байт, считанный с указанного адреса на SPI-устройстве.

Аргументы и параметры

Требуются следующие аргументы:

  • , - указанные в этом разделе.
  • address - указывает адрес, с которого следует считать SPI-устройство.

Вот некоторые полезные параметры, которые вы можете использовать:

  • --frequency - установка максимальной частоты SPI (Гц)
  • --delay - Установить задержку после последнего переданного бита до следующей передачи в микросекундах.
  • --bpw - установить количество бит на слово (число)
  • --cs - установить GPIO для сигнала SPI CS
  • --3wire – совмещение сигналов ведомого на входа/выходе
  • --no-cs – сигнал о том, что микросхема не выбрана
  • --cs-high – перевести микросхему в активное состояние (active HIGH)
  • -lsb - перенос наименее значимого бита

Примеры

Как прочесть байт на шине 32766, с устройства 1, с адреса 0x11:

root@Omega-ABCD: ~ # spi-tool -b 32766 -d 1 read 0x11

> SPI Read from addr 0x11: 0x81

Как прочесть байт на шине 32766, с устройства 1; выбор микросхемы active HIGH; от адреса 0x00:

root@Omega-ABCD:~# spi-tool -b 32766 -d 1 --cs-high read 0x00

> SPI Read from addr 0x00: 0xf8

Как прочесть байт на шине 32766, с устройства 1; общего входного/выходного сигнала ведомого; от адреса 0xaf:

root@Omega-ABCD:~# spi-tool -b 32766 -d 1 --3wire read 0xaf

> SPI Read from addr 0xaf: 0xbe

Запись байта

Наряду с чтением вы также можете использовать spi-tool для записи на SPI- устройство:

spi-tool -b -d [options] write

Аргументы и параметры

  • , - указаны в этом разделе.
  • - указывает адрес по которому проводится запись
  • - значение для записи.

Параметры такие же как в разделе «Чтение байта»

Примеры

На шине 32766, на устройстве 1, записать по адресу 0x12 значение 0x42:

root@Omega-ABCD:~# spi-tool -b 32766 -d 1 write 0x12 0x42

> SPI Write to addr 0x12: 0x42

На шине 32766, на устройстве 1, перевести микросхему в статус active HIGH, записать по адресу 0x09 значение 0xfa:

root@Omega-ABCD:~# spi-tool -b 32766 -d 1 --cs-high write 0x09 0xfa

> SPI Write to addr 0x09: 0xfa

На шине 32766, на устройстве 1; объединить входной и выходной сигналы ведомого; записать по адресу 0xbf значение 0x01:

root@Omega-ABCD:~# spi-tool -b 32766 -d 1 --3wire write 0xbf 0x01

> SPI Write to addr 0xbf: 0x01

Перемещение за пределы командной строки

Утилита spi-tool позволяет достичь некоторого базового взаимодействие с SPI-устройствами. С более сложными проектами потребуется дополнительное взаимодействие с SPI-устройством, которое не может быть реализовано в командной строке.

Onion разработал библиотеку на языке C и модуль Python, которые дадут вам гибкость в использовании SPI-устройств.

Контакты

г. Москва, Пятницкое ш. д. 18, пав. 566

zakaz@compacttool.ru

8-495-752-55-22

Информация представленная на данном информационном ресурсе преследует исключительно рекламные цели и не является договором-офертой !

© Все права защищены 2021г https://compacttool.ru