diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md index f97f45c4..23b4149a 100644 --- a/docs/SUMMARY.md +++ b/docs/SUMMARY.md @@ -13,6 +13,7 @@ * [Прошивка PixHawk/PixRacer](firmware.md) * [Пилотирование со смартфона](rc.md) * [SSH-доступ](ssh.md) +* [Устройство UART](uart.md) * [Неисправности радиоаппаратуры](radioerrors.md) * [Безопасность](safety.md) * [Техника безопасности по пайке](tb.md) diff --git a/docs/assets/hciuart_error.jpg b/docs/assets/hciuart_error.jpg new file mode 100644 index 00000000..b7ece83a Binary files /dev/null and b/docs/assets/hciuart_error.jpg differ diff --git a/docs/glossary.md b/docs/glossary.md index 97ea72c1..8d9c34a5 100644 --- a/docs/glossary.md +++ b/docs/glossary.md @@ -64,3 +64,7 @@ Armed – состояние коптера готовности к полету ## MAVROS Библиотека-связующее звено между аппаратом, работающем по протоколу MAVLink, и ROS. + +## UART + +Последовательный асинхронный интерфейс передачи данных, применяемый во многих устройствах. Например GPS антенны, Wi-Fi роутеры или PixHawk. \ No newline at end of file diff --git a/docs/uart.md b/docs/uart.md new file mode 100644 index 00000000..ccf89936 --- /dev/null +++ b/docs/uart.md @@ -0,0 +1,74 @@ +# Интерфейс UART + +UART – последовательный асинхронный интерфейс для передачи данных, применяемый во многих устройствах. Например GPS антенны, Wi-Fi роутеры или PixHawk. + +Интерфейс обычно содержит две линии: TX – линия для передачи данных, RX – линия для приёма данных. А также обычно использует 5-ти вольтовую логику. + +Для соединения двух устройств необходимо линию TX первого устройства подать на RX второго. Аналогичную операцию нужно совершить с другой стороны, чтобы обеспечить двустороннюю передачу данных. + +> Также необходимо синхронизировать уровни напряжений – соединить землю на двух устройствах. + +Почитать больше про интерфейс и протокол можно в [этой статье](https://habr.com/post/109395/). + +## Linux TTY + +В Linux есть понятие Posix Terminal Interface (подробнее [здесь](https://ru.wikipedia.org/wiki/TTY-абстракция)) это некоторая асбтракция над последовательным или виртуальным интерфейсом позволяющая работать с устройством нескольким агентам одновременно. + +В качестве примера такой абстрации в Raspbian можно привести `/dev/tty1` – устройство вывода текста на экран подключенный по HDMI. + +## UART на Raspberry Pi 3 + +В Raspberry Pi 3 есть два аппаратных UART интерфейса: + +1. `Mini UART` (/dev/ttyAMA0) – для своей работы использует тактирование видео-ядра RPi, в связи с чем ограничивает его частоту. +2. `PL011` (/dev/ttyS0) – полноценный UART интерфейс выполненный на отдельном блоке кристалла микроконтроллера. + +Подробнее про UART на Raspberry Pi в [оффициальной статье](https://www.raspberrypi.org/documentation/configuration/uart.md). + +Данные интерфейсы с помощью вентелей микроконтроллера можно переключать между двуями физическими выходами: + +1. Разъём UART на GPIO +2. Bluetooth модуль RPi + +По умолчанию, в Raspberry Pi 3, `PL011` подключен к Bluetooth модулю. А `Mini UART` отключен с помощью значения директивы `enable_uart`, по-дефолту равной `0`. + +> Надо понимать, что директива `enable_uart` меняет свое дефолтное значение исходя из того, какой UART подключен к Bluetooth модулю RPi с помощью директивы `dtoverlay=pi3-miniuart-bt`. + +Для удобства работы с этими выходами в Raspbian существуют алиасы: + +* `/dev/serial0` – всегда указывает на то TTY устройство, что подключено к GPIO портам. +* `/dev/serial1` – всегда указывает на то TTY устройство, что подключено к Bluetooh модулю. + +### Настройка UART на Raspberry Pi + +Для настроек UART существуют директивы которые находятся в `/boot/config.txt`. + +Для включения UART интерфейса на GPIO: + +``` +enable_uart=1 +``` + +Для отключения UART интерфейса от Bluetooth модуля: + +``` +dtoverlay=pi3-disable-bt +``` + +Для подключения `Mini UART` к Bluetooth модулю: + +``` +dtoverlay=pi3-miniuart-bt +``` + +В случае отключения Bluetooth модуля следует отключить `hciuart` сервис: + +```bash +sudo systemctl disable hciuart.service +``` + +### Bugs + +Если использовать подключение `Mini UART` к Bluetooth, `hciuart` падает с ошибкой: + +![hciuart error](assets/hciuart_error.jpg) \ No newline at end of file