From 2a4faedf679430372685e85e513bd549c87089a1 Mon Sep 17 00:00:00 2001 From: Artem Smirnov Date: Wed, 12 Sep 2018 19:28:53 +0300 Subject: [PATCH 1/2] Add article about UART --- docs/SUMMARY.md | 1 + docs/assets/hciuart_error.jpg | Bin 0 -> 82075 bytes docs/glossary.md | 4 ++ docs/uart.md | 74 ++++++++++++++++++++++++++++++++++ 4 files changed, 79 insertions(+) create mode 100644 docs/assets/hciuart_error.jpg create mode 100644 docs/uart.md 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 0000000000000000000000000000000000000000..b7ece83a711dfdaf8c88c64fccd2bc34d1bff7ac GIT binary patch literal 82075 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 z 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 WsF*1E*qERu>Xp=cp04W+SN{YMj%myQ literal 0 HcmV?d00001 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 From 3b49f9a67fc042fbec469f1df5ecee4acc2c6c60 Mon Sep 17 00:00:00 2001 From: Artem Smirnov Date: Wed, 12 Sep 2018 20:50:36 +0300 Subject: [PATCH 2/2] image_builder: new configure UART on RPi --- docs/uart.md | 15 +++++++++++++-- image_builder/scripts/hardware_setup.sh | 3 ++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/docs/uart.md b/docs/uart.md index ccf89936..a897b500 100644 --- a/docs/uart.md +++ b/docs/uart.md @@ -67,8 +67,19 @@ dtoverlay=pi3-miniuart-bt sudo systemctl disable hciuart.service ``` -### Bugs +## Дефолтная настройка образа + +На образе CLEVER мы изначально выключили `Mini UART` и Bluetooth модуль. + +## Bugs Если использовать подключение `Mini UART` к Bluetooth, `hciuart` падает с ошибкой: -![hciuart error](assets/hciuart_error.jpg) \ No newline at end of file +![hciuart error](assets/hciuart_error.jpg) + +В случае отключения Bluetooth + +``` +/dev/serial0 -> ttyAMA0 +/dev/serial1 -> ttyS0 +``` \ No newline at end of file diff --git a/image_builder/scripts/hardware_setup.sh b/image_builder/scripts/hardware_setup.sh index c748688e..be2abc88 100755 --- a/image_builder/scripts/hardware_setup.sh +++ b/image_builder/scripts/hardware_setup.sh @@ -38,7 +38,8 @@ echo -e "\033[0;31m\033[1m$(date) | #6 Turn on UART\033[0m\033[0m" # https://github.com/RPi-Distro/raspi-config/pull/75 /usr/bin/raspi-config nonint do_serial 1 /usr/bin/raspi-config nonint set_config_var enable_uart 1 /boot/config.txt -/usr/bin/raspi-config nonint set_config_var dtoverlay pi3-miniuart-bt /boot/config.txt +/usr/bin/raspi-config nonint set_config_var dtoverlay pi3-disable-bt /boot/config.txt +systemctl disable hciuart.service # After adding to Raspbian OS # https://github.com/RPi-Distro/raspi-config/commit/d6d9ecc0d9cbe4aaa9744ae733b9cb239e79c116