Wiren Board 7.4: Peripherals: различия между версиями
Строка 175: | Строка 175: | ||
|A3 | |A3 | ||
|a3-volt | |a3-volt | ||
|- | |||
|A4 | |||
|a4-volt | |||
|- | |- | ||
|Vin | |Vin |
Версия 11:13, 30 июня 2023
Это черновик страницы. Последняя правка сделана 30.06.2023 пользователем Boris Marochkin.
Введение
Эта статья предназначена, в первую очередь, для разработчиков стороннего ПО для контроллеров Wiren Board.
Самый простой и удобный способ работы с железом контроллера — через MQTT, связываясь с сервисами wb: wb-mqtt-gpio, wb-mqtt-adc, wb-mqtt-gpio и т.п. Сервисы wb- позволяют работать с железом через унифицированный интерфейс MQTT и скрывают аппаратные различия между аппаратными ревизиями контроллеров.
Работа в обход стандартных сервисов wb- обычно используется, когда программное обеспечение выполняется на разных Linux-контроллерах разных вендоров, и работа через соответсвующие интерфейсы ядра уже реализована в ПО. Данная статья содержит описание периферии, нужное для работы с ней через стандартные интерфейсы ядра. При работе с ядерными интерфейсами не забудьте отключить соответствующий сервис wb-.
Большая часть периферии, описанной в этой статье, описана также в ноде /wirenboard в Devicee Tree контроллера. Сервисы wb-mqtt-gpio, wb-mqtt-adc и т.д. берут описание периферии именно оттуда, считывая описание каждый раз при старте контроллера. Этот способ является предпочтительным и для стороннего ПО, чтобы сохранить совместимость с прошлыми и будущими аппаратными ревизиями оборудования.
Работа с GPIO в Linux
GPIO (General-purpose input/output — ввод/вывод общего назначения) — контакт электрической схемы, который может принимать одно из двух логических состояний — единицу или ноль. Пользователь может устанавливать и считывать состояние GPIO.
В разных устройствах высокий логический уровень может представляться разным напряжением — следите за этим. В контроллерах Wiren Board логическая единица — это 3.3 В.
ВНИМАНИЕ: не подключайте напрямую к GPIO контроллера сигналы с напряжением больше 3.3 В! Если нужно подключить устройство, которое выдает сигнал с более высоким напряжением — используйте схемы согласования. В некоторых случаях, если напряжение сигнала не больше 5 В, то можно согласовать сигналы через резистор на 20 кОм.
Подробно про работу с GPIO читайте в статье Работа с GPIO. Также рекомендуем прочитать соответствующий раздел документации к ядру Linux.
Для других версий контроллера смотрите Таблицы GPIO разных версий контроллера.
Посмотреть таблицу GPIO можно командой cat /sys/kernel/debug/gpio
, или в разделе ниже.
GPIO на клеммниках
Функция | GPIO number | Примечание | |
---|---|---|---|
Выходы A1-A3, D1 | |||
A1 OUT | 109 | Выход «открытый коллектор» | |
A2 OUT | 108 | Выход «открытый коллектор» | |
A3 OUT | 107 | Выход «открытый коллектор» | |
D1 OUT | 106 | Выход «открытый коллектор» | |
Входы A1-A3, D1 (1 — нет сигнала) | |||
A1 IN | 231 | ||
A2 IN | 230 | ||
A3 IN | 227 | ||
D1 IN | 228 | ||
Onewire | |||
W1 | 226 | 1-wire/DI | |
W2 | 273 | 1-wire/DI |
Реализация UART
Название порта в Linux | Альтернативное имя порта в Linux | Разъём на контроллере | Примечание |
/dev/ttyS0 | /dev/ttyCONSOLE | Debug-uart контроллера (micro-usb) | Настройки по умолчанию: 115200-8-N-1 |
/dev/ttyS2 | /dev/ttyRS485-1 | Подписан RS-485, клеммники A и B | Неизолированный порт, установлен терминатор |
/dev/ttyS4 | /dev/ttyRS485-2 | Подписан RS-485, клеммники A/L и B/H (этот порт может использоваться и как CAN) | Неизолированный порт, установлен терминатор, мультиплексирован с CAN |
/dev/ttyS7 | /dev/ttyMOD1 | UART на модуле расширения MOD1 | |
/dev/ttyS6 | /dev/ttyMOD2 | UART на модуле расширения MOD2 | |
/dev/ttyS5 | /dev/ttyMOD3 | UART на модуле расширения MOD3 | |
/dev/ttyS3 | /dev/ttyMOD4 | UART на модуле расширения MOD4 |
Сигналы на модулях расширения
Функция | GPIO number | Примечание |
---|---|---|
MOD1 | ||
MOD1 RTS | 36 | |
MOD1 TX | 276 | |
MOD1 RX | 277 | |
MOD2 | ||
MOD2 RTS | 84 | |
MOD2 TX | 268 | |
MOD2 RX | 269 | |
MOD3 | ||
MOD3 RTS | 52 | |
MOD3 TX | 266 | |
MOD3 RX | 267 | |
MOD4 | ||
MOD4 RTS | 270 | |
MOD4 TX | 224 | |
MOD4 RX | 225 | |
MOD4 SPI MOSI | 64 | |
MOD4 SPI MISO | 65 | |
MOD4 SPI CLK | 66 | |
MOD4 SPI CS | 87 | |
GSM (WBC) | ||
GSM Status | 121 | Modem power status (input) |
GSM PWRKEY | 122 | Modem PWRKEY (output) |
GSM ON | 123 | On/OFF 5 V |
SIM_SELECT | 34 | SIM slot select (low: 1, high: 2) |
Аналоговые входы
Аналоговые входы в Wiren Board 7 доступны через стандартный ядерный интерфейс IIO. Конвертация сигналов с учётом внешний по отношению к процессору делителей происходит внутри ядра.
Каждому аналоговому входу соответствует своё устройство в подсистеме IIO. Приложения должны считывать текущие значения из файлов с суффиксом raw, текущий масштаб и сдвиг из файлов scale и offset.
В Wiren Board 7 scale аналоговых входов постоянный, а offset всегда равен нулю.
Пример чтения напряжения Vin на контроллере:
root@wirenboard-AHIN3TB:~# cat /sys/bus/iio/devices/iio\:device4/name vin-volt root@wirenboard-AHIN3TB:~# cat /sys/bus/iio/devices/iio\:device4/in_voltage0_raw 1779 root@wirenboard-AHIN3TB:~# cat /sys/bus/iio/devices/iio\:device4/in_voltage0_scale 13.481987847 # 1779 * 13.481987847 mV = 23 984 mV
Приложения должны искать IIO устройства по именам, номера не являются стабильными.
Клеммник | Имя IIO устройства |
---|---|
A1 | a1-volt |
A2 | a2-volt |
A3 | a3-volt |
A4 | a4-volt |
Vin | vin-volt |
Ножки для внутреннего использования
Функция (label) | GPIO number | Примечание |
---|---|---|
SoM Eth1 RXD3 | 0 | |
SoM Eth1 RXD2 | 1 | |
SoM Eth1 RXD1 | 2 | |
SoM Eth1 RXD0 | 3 | |
SoM Eth1 TXD3 | 4 | |
SoM Eth1 TXD2 | 5 | |
SoM Eth1 TXD1 | 6 | |
SoM Eth1 TXD0 | 7 | |
SoM Eth1 RXCK | 8 | |
SoM Eth1 RXERR | 9 | |
SoM Eth1 RXDV | 10 | |
SoM Eth1 MDC | 11 | |
SoM Eth1 MDIO | 12 | |
SoM Eth1 TXEN | 13 | |
SoM Eth1 TXCK | 14 | |
SoM Eth1 CRS | 15 | |
SoM Eth1 RST | 237 | |
CAN TX | 16 | |
CAN RX | 17 | |
CAN TXRX ON | 53 | |
CAN/UART RX ALT | 229 | |
SoM PMIC SCL | 32 | |
SoM PMIC SDA | 33 | |
BUZZER | 35 | |
Red LED | 41 | Управление индикатором |
Green LED | 42 | |
W1 UP | 256 | |
W2 UP | 257 | |
WBIO SCL | 50 | |
WBIO SDA | 51 | |
WBIO INT | 272 | |
DEBUG UART TX | 54 | |
DEBUG UART RX | 55 | |
SoM Wi-Fi ON | 67 | |
SoM Wi-Fi CMD | 192 | |
SoM Wi-Fi CLK | 193 | |
SoM Wi-Fi D0 | 194 | |
SoM Wi-Fi D1 | 195 | |
SoM Wi-Fi D2 | 196 | |
SoM Wi-Fi D3 | 197 | |
SoM Wi-Fi HOST_WAKE | 80 | |
SoM BT ON | 68 | |
SoM BT TX | 198 | |
SoM BT RX | 199 | |
SoM BT WAKE | 81 | |
SoM BT HOST_WAKE | 82 | |
SoM BT reserved | 200 | |
SoM BT reserved | 201 | |
SoM eMMC CMD | 70 | |
SoM eMMC CLK | 71 | |
SoM eMMC D0 | 72 | |
SoM eMMC D1 | 73 | |
SoM eMMC D2 | 74 | |
SoM eMMC D3 | 75 | |
SoM eMMC D4 | 76 | |
SoM eMMC D5 | 77 | |
SoM eMMC D6 | 78 | |
SoM eMMC D7 | 79 | |
SoM eMMC RST | 88 | |
LVDS D0 P | 96 | |
LVDS D0 N | 97 | |
LVDS D1 P | 98 | |
LVDS D1 N | 99 | |
LVDS D2 P | 100 | |
LVDS D2 N | 101 | |
LVDS DCK P | 102 | |
LVDS DCK N | 103 | |
LVDS D3 P | 104 | |
LVDS D3 N | 105 | |
Pushbutton | 110 | |
EC WBMZ Status | 389 | |
USB0 ID | 116 | |
USB0 ON | 128 | |
Wi-Fi ON | 120 | |
5VOut ON | 129 | |
VOut ON | 388 | |
RS-485-1 RTS | 83 | |
RS-485-1 Termination | 137 | |
RS-485-1 Failsafe | 139 | |
RS-485-1 TX | 274 | |
RS-485-1 RX | 275 | |
RS-485-2 RTS | 85 | |
RS-485-2 Termination | 132 | |
RS-485-2 Failsafe | 138 | |
RS-485-2 TX | 202 | |
RS-485-2 RX | 203 | |
microSD D1 | 160 | |
microSD D0 | 161 | |
microSD CLK | 162 | |
microSD CMD | 163 | |
microSD D3 | 164 | |
microSD D2 | 165 | |
microSD CD | 69 | |
SoM Eth0 RXD3 | 232 | |
SoM Eth0 RXD2 | 233 | |
SoM Eth0 RXD1 | 234 | |
SoM Eth0 RXD0 | 235 | |
SoM Eth0 TXD3 | 238 | |
SoM Eth0 TXD2 | 239 | |
SoM Eth0 TXD1 | 240 | |
SoM Eth0 TXD0 | 241 | |
SoM Eth0 RXCK | 242 | |
SoM Eth0 RXERR | 243 | |
SoM Eth0 RXDV | 244 | |
SoM Eth0 MDC | 245 | |
SoM Eth0 MDIO | 246 | |
SoM Eth0 TXEN | 247 | |
SoM Eth0 TXCK | 248 | |
SoM Eth0 CRS | 249 | |
SoM Eth0 RST | 236 | |
SoM Eth0 COL | 250 | |
SoM LCD Backlight ON | 251 | |
EC CS | 46 | |
EC CLK | 47 | |
EC MOSI | 48 | |
EC MISO | 49 | |
EC SWCLK/BOOT0 | 114 | |
EC RESET | 115 | |
EC INT | 271 | |
CR_RTC SCL | 258 | |
CR_RTC SDA | 259 | |
ON periph voltage | 45 |
Расположение данных на внутреннем накопителе
Offset (in bytes) | ||
---|---|---|
0x00000000 | MBR | Device-specific factory data |
0x000000D9 | ||
0x000001BE | Partition table | |
0x000001FE | ||
0x000001FF | ||
0x00002000 | Bootloader | |
0x00087fff | ||
0x00088000 | Bootloader environment | |
0x000a7fff | ||
0x000fc000 | Device-specific factory data Factory DT overlay with revision, batch, adc and crystal calibration data and so on |
|
0x000fffff | ||
0x00100000 | /dev/mmcblk0p1 Device-specific factory data |
|
0x00500000 | hiddenfs Ext3 filesystem, currently holding device-specific cryptographic certificates | |
0x005fffff | ||
0x010fffff | ||
0x01100000 | /dev/mmcblk0p2 Rootfs partition |
|
0x410fffff | ||
0x41100000 | /dev/mmcblk0p3 Rootfs partition |
|
0x810fffff | ||
0x81200000 | /dev/mmcblk0p5 Swap partition |
|
0x911fffff | ||
0x91300000 | /dev/mmcblk0p6 /mnt/data partition |
|
end |