Интерфейсы Raspberry Pi
Интерфейс I²C
Шина I²C — самый простой способ обмена информацией. Каждое подключенное к линии I²C устройство имеет свой адрес, по которому к нему обращается Raspberry Pi.
Линии интерфейса имеют встроенную подтяжку к питанию резисторами. Соответственно их невозможно использовать в качестве общих портов ввода/вывода в случаях, требующих отключения подтяжки.
Включения шины
По умолчанию шина I²C отключена. Для включения выполните следующие действия.
- Откройте терминал с рабочего стола Raspberry Pi или подключитесь по SSH-соединению.
- Зайдите в настройки Raspberry Pi.
sudo raspi-config
- Выберите пункт
Interfacing options
- Далее пункт
I²C
. - Нажмите
Yes
для подтверждения включения шины. - Для проверки включения шины I²C запустите листинг директории /dev:
ls /dev/
В ответ вы должны увидеть полотно файлов, среди которых: i2c-1
.
Теперь вы можете использовать интерфейс I²C для коммуникации с датчиками и модулями.
I²C сканер
Список с адресами устройств, подключенных к линии I²C можно получить программой i2cdetect
из пакета i2c-tools
:
- Установите пакет i2c-tools:
sudo apt-get install i2c-tools
- Выполните поиск устройств на шине:
sudo i2cdetect -y 1
Интерфейс SPI
SPI — последовательный четырёх-проводной интерфейс передачи данных, предназначенный для обеспечения простого и недорогого высокоскоростного сопряжения микроконтроллеров и периферии.
Raspberry Pi имеет одну шину SPI
— SPI0. Но более новые версии одноплатника — например, Raspberry Pi 4 Model B — обладают двумя шинами: SPI0 и SPI1
Включения шины SPI0
По умолчанию шина SPI0 отключена. Для включения выполните следующие действия.
- Откройте терминал с рабоче стола Raspberry Pi или подключитесь по SSH-соединению.
- Зайдите в настройки Raspberry Pi.
sudo raspi-config
- Выберите пункт
Interfacing options
- Далее пункт
SPI
. - Нажмите
Yes
для подтверждения включения шины. - Для проверки включения шины SPI0 запустите листинг директории /dev:
ls /dev/
В ответ вы должны увидеть полотно файлов, среди которых два: spidev0.0
и spidev0.1
.
Это значит что у вас включён SPI0 с возможностью подключения двух ведомых устройств.
Теперь вы можете использовать интерфейс SPI для коммуникации с датчиками и модулями.
Включения шины SPI1
Если вы используете Raspberry Pi 4 Model B, то вам доступно две шины SPI: SPI0
и SPI1
.
Для включения шины SPI1, необходимо вручную отредактировать файл настроек загрузки системыconfig.txt
.
- Откройте от пользователя
root
файл настройки загрузки системы.sudo nano /boot/config.txt
- В конец файла добавьте команду включения
SPI1
.dtoverlay=spi1-3cs
- Сохраните файл сочетанием клавиш
Ctrl
+x
. - Для вступления изменений в силу перезагрузите Raspberry Pi.
sudo reboot
- Для проверки включения шины 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