Wiren Board 6.1: GPIO List
Статья описывает подключение встроенной периферии к сигналам процессора для версии Wiren Board 6 (ревизии 6.1).
Введение
Эта статья предназначена, в первую очередь, для разработчиков стороннего ПО для контроллеров 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 | вывод i.mx6UL | комментарии | |
| W1 (in) | 1-wire/DI | GPIO1_IO11 | 11 | P14 | по-умолчанию 1-wire |
| W2 (in) | 1-wire/DI | GPIO4_IO12 | 108 | A3 |
GPIO для транзисторов (A1-A4)
| клеммник | функция | GPIO | GPIO number | вывод i.mx6UL | комментарии |
| A1 (out) | ADC/FET/DI | GPIO3_15 | 79 | Выход "открытый коллектор"; | |
| A2 (out) | ADC/FET/DI | GPIO3_16 | 80 | Выход "открытый коллектор"; | |
| A3 (out) | ADC/FET/DI | GPIO3_17 | 81 | Выход "открытый коллектор"; | |
| A4 (out) | ADC/FET/DI | GPIO3_18 | 82 | Выход "открытый коллектор"; |
Каналы АЦП
| клеммник | Канал АЦП | Делитель | Итоговая формула (без делителя) | V макс. измеряемое | комментарии |
|---|---|---|---|---|---|
| A1 | 4 | 88k7, 12k | |||
| A2 | 2 | ||||
| A3 | 1 | ||||
| A4 | 3 | ||||
| Vin | 8 | 88k7, 12k | |||
| 5Vout | 5 | 33k, 12k |
Ножки для внутреннего использования
| вывод sodim | GPIO | GPIO number | вывод i.mx6UL | функция |
| 84 | GPIO1_IO13 | 13 | транзисторная подтяжка 1-wire к верху | |
| 77 | GPIO4_IO16 | 112 | транзисторная подтяжка 1-wire к верху (W2) | |
| 36 | GPIO1_IO27 | 27 | 5V out | |
| 176 | GPIO3_IO14 | 78 | LCD_DATA09 | RFM69H IRQ |
| 178 | GPIO3_IO13 | LCD_DATA08 | RFM69H _DIO2 | |
| 180 | GPIO3_IO28 | LCD_DATA23 | RFM69 MISO | |
| 182 | GPIO3_IO27 | LCD_DATA22 | RFM69 MOSI | |
| 186 | GPIO3_IO25 | LCD_DATA20 | RFM69 SCK | |
| 184 | GPIO3_IO26 | LCD_DATA21 | RFM69H chip select | |
| 102 | GPIO4_IO23 | 119 | SIM900R power FET (RESET) | |
| 164 | GPIO3_IO20 | 84 | SIM900R power KEY | |
| 166 | GPIO3_IO19 | 83 | SIM900R power status (input) | |
| 188 | GPIO3_IO24 | 88 | SIM slot select (low: 1, high: 2) | |
| 23 | GPIO2_IO19 | 51 | SD1_DATA1 | watchdog input |
| 162 | PWM1_OUT | Buzzer | ||
| 80 | Red LED | |||
| 82 | Green LED | |||
| 69 | 2nd ethernet LED | |||
| 65 | GPIO1_IO18 | 18 | STAT1 (BATTERY_CHARGING) | |
| 67 | GPIO1_IO19 | 19 | STAT2 (BATTERY_PRESENT) | |
| 152 | GPIO3_IO10 | питание Wi-Fi (active low) | ||
| 29 | GPIO2_IO16 | i2c для RTC, SDA | ||
| 31 | GPIO2_IO17 | i2c для RTC, SCL | ||
| 144 | GPIO3_IO12 | PAD_LCD_DATA07 | i2c для EEPROM1, SDA | |
| 142 | GPIO3_IO03 | PAD_LCD_VSYNC | i2c для EEPROM1, SCL | |
| 160 | GPIO3_IO06 | PAD_LCD_DATA01 | i2c для EEPROM2, SDA | |
| 158 | GPIO3_IO07 | 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 |
| 190 | GPIO3_IO23 | 87 | PAD_LCD_DATA18 | RS-485-2 failsafe bias |
| 40 | GPIO1_IO23 | 23 | PAD_UART2_RTS_B | CAN transciever power |
GPIO на разъёме расширения MOD1
| вывод sodim | GPIO | GPIO number | вывод imx287 | pinmux pad name | пин | функция |
| - | - | - | 3.3V | - | ||
| 30 | GPIO1_IO24 | H17 | UART3_TX_DATA | TX | uart tx | |
| 32 | GPIO1_IO25 | H16 | UART3_RX_DATA | RX | uart rx | |
| - | 5V | - | ||||
| 34 | GPIO1_IO26 | H15 | UART3_CTS_B | DE | uart de | |
| - | GND | - |
GPIO на разъёме расширения MOD2
| вывод sodim | GPIO | GPIO number | вывод imx6ul | pinmux pad name | пин | функция | |
| - | - | - | 3.3V | - | |||
| 98 | GPIO4_IO21 | E4 | CSI_DATA00 | TX | uart tx | MX6UL_PAD_CSI_DATA00__UART5_DCE_TX | |
| 49 | JTAG_MOD | TX (muxed через 3k, 12k PD) | spdif out | ||||
| 100 | GPIO4_IO22 | E3 | CSI_DATA01 | RX | MX6UL_PAD_CSI_DATA01__UART5_DCE_RX | ||
| - | 5V | - | |||||
| 52 | GPIO1_IO09 | M15 | GPIO1_IO09 | DE | uart de, pwm, spdif in | ||
| - | GND | - |
GPIO на разъёме расширения MOD3
| вывод sodim | GPIO | GPIO number | вывод imx6ul | pinmux pad name | пин | функция | ||
| - | 3.3V | - | ||||||
| 194 | GPIO3_IO21 | 85 | LCD_DATA16 | TX | uart tx | |||
| 192 | GPIO3_IO22 | 86 | LCD_DATA17 | RX | uart rx | |||
| 112 | GPIO4_IO28 | 124 | D1 | CSI_DATA07 | MISO | spi miso | MX6UL_PAD_CSI_DATA07__ECSPI1_MISO | |
| 106 | GPIO4_IO25 | 121 | D4D | CSI_DATA04 | SCK | spi sck | MX6UL_PAD_CSI_DATA04__ECSPI1_SCLK | |
| - | 5V | - | ||||||
| 150 | GPIO3_IO11 | 75 | A10 | LCD_DATA06 | DE | uart de | ||
| - | GND | - | ||||||
| 110 | GPIO4_IO27 | 123 | D2 | CSI_DATA06 | MOSI | spi mosi | MX6UL_PAD_CSI_DATA06__ECSPI1_MOSI | |
| 108 | GPIO4_IO26 | 122 | D3 | CSI_DATA05 | SS | spi ss | MX6UL_PAD_CSI_DATA05__ECSPI1_SS0 |