Merge pull request #62 from urpylka/uart-article

Add UART article & new UART configure of image
This commit is contained in:
Smirnov Artem
2018-09-12 20:55:04 +03:00
committed by GitHub
5 changed files with 92 additions and 1 deletions

View File

@@ -13,6 +13,7 @@
* [Прошивка PixHawk/PixRacer](firmware.md)
* [Пилотирование со смартфона](rc.md)
* [SSH-доступ](ssh.md)
* [Устройство UART](uart.md)
* [Неисправности радиоаппаратуры](radioerrors.md)
* [Безопасность](safety.md)
* [Техника безопасности по пайке](tb.md)

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

View File

@@ -64,3 +64,7 @@ Armed состояние коптера готовности к полету
## MAVROS
Библиотека-связующее звено между аппаратом, работающем по протоколу MAVLink, и ROS.
## UART
Последовательный асинхронный интерфейс передачи данных, применяемый во многих устройствах. Например GPS антенны, Wi-Fi роутеры или PixHawk.

85
docs/uart.md Normal file
View File

@@ -0,0 +1,85 @@
# Интерфейс 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
```
## Дефолтная настройка образа
На образе CLEVER мы изначально выключили `Mini UART` и Bluetooth модуль.
## Bugs
Если использовать подключение `Mini UART` к Bluetooth, `hciuart` падает с ошибкой:
![hciuart error](assets/hciuart_error.jpg)
В случае отключения Bluetooth
```
/dev/serial0 -> ttyAMA0
/dev/serial1 -> ttyS0
```

View File

@@ -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