Raspberry Pi 4 и UART
-
В Raspberry Pi доступно несколько последовательных портов, каждый из которых управляется UART трансивером. На всех моделях (кроме Raspberry Pi 4) их 2 - UART0, UART1. В Raspberry Pi 4 в дополнение к этим UART трансиверам могут быть активированы ещё 4 - UART2, UART3, UART4, UART5 (для активации нужно прописать в конфиг /boot/config.txt -
dtoverlay=uartX где x=2,3,4
enable_uart=1
для активациии UART0/1
Типы UART в Raspberry Pi бывают 2х видов:
PL011 - полноценный UART во многом совместимый с форматой UART 16550 https://en.wikipedia.org/wiki/16550_UART
miniUART- UART с урезанным набором возможностей и некоторыми сложностями в использовании.
Таблица соответствия последовательных устройств и GPIO пинов - UART трансиверам/dev/ttyS0 UART1 (MiniUART) TX - GPIO 14, RX - GPIO 15 /dev/ttyAMA0 UART0 (PL011) TX - GPIO 14, RX - GPIO 15 /dev/ttyAMA1 UART2 (PL011) TX2 - GPIO 0, RX2 - GPIO 1 /dev/ttyAMA2 UART3 (PL011) TX3 - GPIO 4, RX3 - GPIO 5 /dev/ttyAMA3 UART4 (PL011) TX4 - GPIO 8, RX4 - GPIO 9 /dev/ttyAMA5 UART5 (PL011) TX5 - GPIO 12, RX5 - GPIO 15
Проверить какие выводы GPIO каким UART трансиверам соответствует можно командой
raspi-gpio funcs
Если активен Bluetooth, то TX/RX пинами GPIO14/GPIO15 управляет miniUART и подключенное к порту устройство доступно как /dev/ttyS0
Если отключить Bluetooth, прописав в конфиг /boot/config.txt - dtoverlay=disable-bt (также возможно потребуется выполнить команду sudo systemctl disable hciuart), то TX/RX пинами GPIO14/GPIO15 будет управлять PL011 UART и подключенное к порту устройство доступно как /dev/ttyAMA0