Интерфейсы Raspberry Pi

Интерфейс I²C

Шина I²C — самый простой способ обмена информацией. Каждое подключенное к линии I²C устройство имеет свой адрес, по которому к нему обращается Raspberry Pi.

Линии интерфейса имеют встроенную подтяжку к питанию резисторами. Соответственно их невозможно использовать в качестве общих портов ввода/вывода в случаях, требующих отключения подтяжки.

Включения шины

По умолчанию шина I²C отключена. Для включения выполните следующие действия.

  1. Откройте терминал с рабочего стола Raspberry Pi или подключитесь по SSH-соединению.
  2. Зайдите в настройки Raspberry Pi.
    sudo raspi-config

  3. Выберите пункт Interfacing options
  4. Далее пункт I²C.
  5. Нажмите Yes для подтверждения включения шины.
  6. Для проверки включения шины I²C запустите листинг директории /dev:
    ls /dev/

В ответ вы должны увидеть полотно файлов, среди которых: i2c-1. Теперь вы можете использовать интерфейс I²C для коммуникации с датчиками и модулями.

I²C сканер

Список с адресами устройств, подключенных к линии I²C можно получить программой i2cdetect из пакета i2c-tools:

  1. Установите пакет i2c-tools:
    sudo apt-get install i2c-tools
  2. Выполните поиск устройств на шине:
    sudo i2cdetect -y 1

Интерфейс SPI

SPI — последовательный четырёх-проводной интерфейс передачи данных, предназначенный для обеспечения простого и недорогого высокоскоростного сопряжения микроконтроллеров и периферии.

Raspberry Pi имеет одну шину SPISPI0. Но более новые версии одноплатника — например, Raspberry Pi 4 Model B — обладают двумя шинами: SPI0 и SPI1

Включения шины SPI0

По умолчанию шина SPI0 отключена. Для включения выполните следующие действия.

  1. Откройте терминал с рабоче стола Raspberry Pi или подключитесь по SSH-соединению.
  2. Зайдите в настройки Raspberry Pi.
    sudo raspi-config

  3. Выберите пункт Interfacing options
  4. Далее пункт SPI.
  5. Нажмите Yes для подтверждения включения шины.
  6. Для проверки включения шины SPI0 запустите листинг директории /dev:
    ls /dev/

В ответ вы должны увидеть полотно файлов, среди которых два: spidev0.0 и spidev0.1. Это значит что у вас включён SPI0 с возможностью подключения двух ведомых устройств. Теперь вы можете использовать интерфейс SPI для коммуникации с датчиками и модулями.

Включения шины SPI1

Если вы используете Raspberry Pi 4 Model B, то вам доступно две шины SPI: SPI0 и SPI1.

Для включения шины SPI1, необходимо вручную отредактировать файл настроек загрузки системыconfig.txt.

  1. Откройте от пользователя root файл настройки загрузки системы.
    sudo nano /boot/config.txt
  2. В конец файла добавьте команду включения SPI1.
    dtoverlay=spi1-3cs

  3. Сохраните файл сочетанием клавиш Ctrl+x.
  4. Для вступления изменений в силу перезагрузите Raspberry Pi.
    sudo reboot
  5. Для проверки включения шины SPI1 запустите листинг директории /dev:
    ls /dev/

В ответ вы должны увидеть полотно файлов, среди которых три отвечают за SPI1: spidev1.0, spidev1.1 и spidev1.2.

Если у вас включена шина SPI0, то будут ещё два файла: spidev0.0 и spidev0.1.

Это значит что у вас включён SPI0 с возможностью подключения двух ведомых устройств и SPI1 с возможностью подключения трёх ведомых устройств.

Интерфейс UART

UART (Serial) — асинхронный интерфейс передачи данных, последовательно передающий биты из байта данных. Асинхронная передача позволяет осуществлять передачу данных без использования тактирующего сигнала от передатчика к приёмнику. Вместо этого приёмник и передатчик заранее договариваются о временных параметрах и специальных «стартовых битах», которые добавляются к каждому слову данных для синхронизации приёмника и передатчика. Существует множество устройств, с которыми Raspberry Pi может обмениваться данными по UART протоколу.

В Raspberry Pi 3 есть два аппаратных UART интерфейса:

  • PL011 (/dev/ttyAMA0) – для своей работы использует тактирование видеоядра RPi, в связи с чем ограничивает его частоту.
  • Mini UART (/dev/ttyS0) – полноценный UART интерфейс выполненный на отдельном блоке кристалла микроконтроллера.

Для удобства работы с этими выходами в Raspbian существуют алиасы:

  • /dev/serial0 – всегда указывает на то TTY устройство, что подключено к GPIO портам.
  • /dev/serial1 – всегда указывает на то TTY устройство, что подключено к Bluetooth модулю.

Отключить консоль:

sudo systemctl stop serial-getty@ttyS0.service
sudo systemctl disable serial-getty@ttyS0.service

Ресурсы