Wiren Board 6.7:Список GPIO
Введение
Эта статья предназначена, в первую очередь, для разработчиков стороннего ПО для контроллеров 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 в Linux читайте в документации к ядру. Также можно почитать устаревшую инструкцию в нашей Wiki — Работа с GPIO.
Для других версий контроллера смотрите Таблицы GPIO разных версий контроллера.
GPIO на клеммниках
клеммник | функция | GPIO | GPIO number | вывод i.mx6UL | комментарии |
---|---|---|---|---|---|
Выходы A1-A4 | |||||
A1(out) | FET | GPIO3_IO15 | 79 | LCD_DATA10 | Выход "открытый коллектор"; |
A2(out) | FET | GPIO3_IO16 | 80 | LCD_DATA11 | Выход "открытый коллектор"; |
A3(out) | FET | GPIO3_IO17 | 81 | LCD_DATA12 | Выход "открытый коллектор"; |
A4(out) | FET | GPIO3_IO18 | 82 | LCD_DATA13 | Выход "открытый коллектор"; |
Входы A1-A4 (инвертированы; т.е. "1" на gpio появляется, когда на входе нет напряжения) | |||||
A1 (in) | DI | GPIO3_IO14 | 78 | LCD_DATA09 | |
A2 (in) | DI | GPIO3_IO13 | 77 | LCD_DATA08 | |
A3 (in) | DI | GPIO3_IO28 | 92 | LCD_DATA23 | |
A4 (in) | DI | GPIO3_IO27 | 91 | LCD_DATA22 | |
Onewire | |||||
W1 | 1-wire/DI | GPIO3_IO4 | 68 | LCD_RESET | по умолчанию используется драйвером w1-gpio |
W2 | 1-wire/DI | GPIO1_IO11 | 11 | JTAG_TMS | по умолчанию используется драйвером w1-gpio |
Реализация UART
Название порта в Linux | Альтернативное имя порта в Linux | Разъём на контроллере | Примечание |
/dev/ttymxc0 | /dev/ttyCONSOLE | Debug-uart контроллера (micro-usb) | Настройки по умолчанию: 115200-8-N-1 |
/dev/ttymxc1 | /dev/ttyRS485-1 | Подписан RS-485, клеммники A и B | Неизолированный порт, установлен терминатор |
/dev/ttymxc3 | /dev/ttyRS485-2 | Подписан RS-485, клеммники A/L и B/H (этот порт может использоваться и как CAN) | Неизолированный порт, установлен терминатор, мультиплексирован с CAN |
/dev/ttymxc2 | /dev/ttyMOD1 | UART на модуле расширения MOD1 | Для появления нужно выставить в wb-hardware.conf "Expose UART Pins (DIY)" |
/dev/ttymxc4 | /dev/ttyMOD2 | UART на модуле расширения MOD2 | Для появления нужно выставить в wb-hardware.conf "Expose UART Pins (DIY)" |
/dev/ttymxc5 | /dev/ttyMOD3 | UART на модуле расширения MOD3 | Для появления нужно выставить в wb-hardware.conf "Expose UART Pins (DIY)" |
/dev/ttymxc6 | /dev/ttyMOD4 | UART на модуле расширения MOD4 | Для появления нужно выставить в wb-hardware.conf "Expose UART Pins (DIY)" |
/dev/ttymxc7 | /dev/ttyGSM | UART на модуле расширения WBC (разъём GSM/3G/4G-модема) | Для появления нужно выставить какой-либо из модемов в wb-hardware.conf |
Сигналы на модулях расширения
вывод sodim | GPIO | GPIO number | pinmux pad name | пин | функция |
MOD1 | |||||
- | - | - | - | 3.3V | 3.3V |
30 | GPIO1_IO24 | 24 | UART3_TX_DATA | TX | gpio/uart_tx/i2c_sda |
32 | GPIO1_IO25 | 25 | UART3_RX_DATA | RX | gpio/uart_rx/i2c_scl |
- | - | - | - | 5V | 5V |
34 | GPIO1_IO26 | 26 | UART3_CTS_B | RTS | gpio/uart_de |
- | - | - | - | GND | GND |
MOD2 | |||||
- | - | - | - | 3.3V | 3.3V |
98 | GPIO4_IO21 | 117 | CSI_DATA00 | TX | gpio/uart_tx/i2c_sda |
49 | GPIO1_IO10 | 10 | JTAG_MOD | TX (muxed через 3k, 12k PD) | spdif out |
100 | GPIO4_IO22 | 118 | CSI_DATA01 | RX | gpio/uart_rx/i2c_scl |
- | - | - | - | 5V | 5V |
52 | GPIO1_IO09 | 9 | GPIO1_IO09 | RTS | gpio/uart_de |
- | - | - | - | GND | GND |
MOD3 | |||||
- | - | - | - | 3.3V | 3.3V |
90 | GPIO4_IO17 | 113 | CSI_MCLK | TX | gpio/uart_tx/i2c_sda |
92 | GPIO4_IO18 | 114 | CSI_PIXCLK | RX | gpio/uart_rx/i2c_scl |
- | - | - | - | 5V | 5V |
94 | GPIO4_IO19 | 115 | CSI_VSYNC | RTS | gpio/uart_de |
- | - | - | - | GND | GND |
MOD4 | |||||
- | - | - | - | 3.3V | 3.3V |
194 | GPIO3_IO21 | 85 | LCD_DATA16 | TX | gpio/uart_tx/i2c_sda |
192 | GPIO3_IO22 | 86 | LCD_DATA17 | RX | gpio/uart_rx/i2c_scl |
112 | GPIO4_IO28 | 124 | CSI_DATA07 | MISO | spi miso |
106 | GPIO4_IO25 | 121 | CSI_DATA04 | SCK | spi sck |
- | - | - | - | 5V | 5V |
150 | GPIO3_IO0 | 64 | LCD_CLK | RTS | gpio/uart_de |
- | - | - | - | GND | GND |
110 | GPIO4_IO27 | 123 | CSI_DATA06 | MOSI | spi mosi |
108 | GPIO4_IO26 | 122 | CSI_DATA05 | SS | spi ss |
WBC (модем) | |||||
188 | GPIO3_IO24 | 88 | LCD_DATA19 | SIM_SELECT | SIM slot select (low: 1, high: 2) |
166 | GPIO3_IO19 | 83 | LCD_DATA14 | STATUS | Modem power status (input) |
164 | GPIO3_IO20 | 84 | LCD_DATA15 | POWER_GSM | Modem PWRKEY (output) |
125 | GPIO5_IO04 | 132 | SNVS_TAMPER4 | 5V | gpio (включение/выключение 5V на модем) |
186 | - | - | LCD_DATA20 | TX | uart_tx |
184 | - | - | LCD_DATA21 | RX | uart_rx |
- | - | - | - | GND | GND |
Каналы АЦП
клеммник | Канал АЦП | Делитель |
---|---|---|
A1 | 4 | 88k7, 10k |
A2 | 2 | |
A3 | 1 | |
A4 | 3 | |
Vin | 8 | 200k, 12k |
5Vout | 5 | 33k, 12k |
Ножки для внутреннего использования
вывод sodim | GPIO | GPIO number | вывод i.mx6UL | функция |
---|---|---|---|---|
84 | GPIO1_IO13 | 13 | JTAG_TDI | транзисторная подтяжка 1-wire к верху (W2) |
77 | GPIO4_IO16 | 112 | NAND_DQS | транзисторная подтяжка 1-wire к верху (W1) |
36 | GPIO1_IO27 | 27 | 5V out | |
23 | GPIO2_IO19 | 51 | SD1_DATA1 | watchdog input |
162 | PWM1_OUT | LCD_DATA00 | Buzzer | |
80 | Red LED, управление индикатором | |||
82 | Green LED, управление индикатором | |||
65 | GPIO1_IO18 | 18 | STAT1 (BATTERY_CHARGING) | |
67 | GPIO1_IO19 | 19 | STAT2 (BATTERY_PRESENT) | |
152 | GPIO3_IO10 | 74 | питание Wi-Fi (active low) | |
29 | GPIO2_IO16 | 48 | i2c для RTC, SDA | |
31 | GPIO2_IO17 | 49 | i2c для RTC, SCL | |
144 | GPIO3_IO12 | 76 | PAD_LCD_DATA07 | i2c для EEPROM1, SDA |
142 | GPIO3_IO03 | 67 | PAD_LCD_VSYNC | i2c для EEPROM1, SCL |
160 | GPIO3_IO06 | 70 | PAD_LCD_DATA01 | i2c для EEPROM2, SDA |
158 | GPIO3_IO07 | 71 | PAD_LCD_DATA02 | i2c для EEPROM2, SCL |
75 | GPIO4_IO11 | 107 | питание USB | |
154 | GPIO3_IO09 | 73 | V_OUT_ON | |
156 | GPIO3_IO08 | 72 | V_OUT_ST | |
102 | GPIO4_IO23 | 119 | PAD_CSI_DATA02 | RS-485-1 failsafe bias |
96 | GPIO4_IO20 | 87 | CSI_HSYNC | RS-485-2 failsafe bias |
40 | GPIO1_IO23 | 23 | PAD_UART2_RTS_B | CAN transciever power |
117 | GPIO5_IO00 | 128 | SNVS_TAMPER0 | Termination resistor on RS-485-1 |
121 | GPIO5_IO02 | 130 | SNVS_TAMPER2 | Termination resistor on RS-485-2 |
GPIO5_IO10 | 138 | FW button |