Wiren Board 6.2: Peripherals: различия между версиями

Материал из Wiren Board
м (EvgenyBoger переименовал страницу Wiren Board 6.2:Список GPIO в Wiren Board 6.2: Peripherals)
 
(не показаны 22 промежуточные версии 5 участников)
Строка 1: Строка 1:
Статья описывает подключение встроенной периферии к сигналам процессора для '''версии Wiren Board 6 (ревизии 6.2, 6.3 и 6.4)'''.
<languages/>
 
<translate>
[[Wiren Board 6.1:Список GPIO]]
Статья описывает подключение встроенной периферии к сигналам процессора для '''версии Wiren Board 6 (ревизии 6.2, 6.3, 6.4, 6.5, 6.6)'''.
 
{{Wbincludes: GPIO}}
== Реализация портов RS-485 ==
== Реализация портов RS-485 ==  


<!--T:4-->
{| class="wikitable"
{| class="wikitable"
|'''Модель контроллера'''
|'''Модель контроллера'''
Строка 12: Строка 13:
|'''Примечание'''
|'''Примечание'''
|-
|-
| rowspan="2" |[[Wiren Board 5|Wiren Board 6]]
| rowspan="2" |[[Special:MyLanguage/Wiren Board 5|Wiren Board 6]]
|/dev/ttymxc1
|/dev/ttymxc1
|/dev/ttyRS485-1
|/dev/ttyRS485-1
Строка 25: Строка 26:
|}
|}


=== GPIO на клеммниках ===


{| border="1"
=== GPIO на клеммниках === <!--T:5-->
 
 
<!--T:6-->
{| class="wikitable"
| клеммник || функция|| GPIO  
| клеммник || функция|| GPIO  
|||вывод i.mx6UL || комментарии
|||вывод i.mx6UL || комментарии
|-
|-


<!--T:7-->
| W1 (in)  || '''1-wire'''/DI  ||GPIO1_IO11
| W1 (in)  || '''1-wire'''/DI  ||GPIO1_IO11
|11||P14||по-умолчанию 1-wire
|11||P14||по-умолчанию 1-wire
|-
|-


<!--T:8-->
| W2 (in)  ||1-wire/'''DI'''
| W2 (in)  ||1-wire/'''DI'''
||GPIO4_IO12
||GPIO4_IO12
Строка 41: Строка 48:
|-
|-


<!--T:9-->
|}
|}


=== GPIO для транзисторов (A1-A4)  ===


{| border="1"
=== GPIO для транзисторов (A1-A4)  === <!--T:10-->
 
 
<!--T:11-->
{| class="wikitable"
| клеммник || функция|| GPIO  
| клеммник || функция|| GPIO  
|GPIO number||вывод i.mx6UL || комментарии
|GPIO number||вывод i.mx6UL || комментарии
|-
|-


| '''A1 (out)'''  || ADC/'''FET'''/DI ||GPIO3_15
<!--T:12-->
| '''A1 (out)'''  || ADC/'''FET'''/DI ||GPIO3_IO15
|79||||Выход "открытый коллектор";  
|79||||Выход "открытый коллектор";  
|-
|-




| '''A2 (out)'''  || ADC/'''FET'''/DI ||GPIO3_16
<!--T:13-->
| '''A2 (out)'''  || ADC/'''FET'''/DI ||GPIO3_IO16
|80||||Выход "открытый коллектор";
|80||||Выход "открытый коллектор";
|-
|-


| '''A3 (out)'''  || ADC/'''FET'''/DI ||GPIO3_17
<!--T:14-->
| '''A3 (out)'''  || ADC/'''FET'''/DI ||GPIO3_IO17
|81||||Выход "открытый коллектор";  
|81||||Выход "открытый коллектор";  
|-
|-


| '''A4 (out)'''  || ADC/'''FET'''/DI ||GPIO3_18
<!--T:15-->
| '''A4 (out)'''  || ADC/'''FET'''/DI ||GPIO3_IO18
|82||||Выход "открытый коллектор";
|82||||Выход "открытый коллектор";
|-
|-


<!--T:16-->
|}
|}


=== GPIO для входов (A1-A4) ===
 
=== GPIO для входов (A1-A4) === <!--T:17-->
 
<!--T:18-->
{| class="wikitable"
{| class="wikitable"
!клеммник
!клеммник
Строка 106: Строка 126:
|
|
|}
|}
'''В версии 6.5 изменена полярность входов - наличие напряжения на  A1-A4 соответсвует 0 на GPIO.'''


=== Каналы АЦП ===
 
=== Каналы АЦП === <!--T:19-->
 
==== Ревизии 6.2-6.4 ====
<!--T:20-->
{| class="wikitable"
{| class="wikitable"
!клеммник
!клеммник
Строка 120: Строка 145:
| rowspan="4" |88k7, 12k
| rowspan="4" |88k7, 12k
| rowspan="4" |
| rowspan="4" |
| rowspan="4" |27.7 В
| rowspan="4" |
| rowspan="4" |
|-
|'''A2'''
|2
|-
|'''A3'''
|1
|-
|'''A4'''
|3
|-
|
|
|
|
|
|
|-
|'''Vin'''
|8
|88k7, 12k
|
|27.7 В
|
|-
|'''5Vout'''
|5
|33k, 12k
|
|
|
|}
==== Ревизии 6.5-6.5.1 ====
<!--T:20-->
{| class="wikitable"
!клеммник
!Канал АЦП
!Делитель
!Итоговая формула (без делителя)
!V макс. измеряемое
!комментарии
|-
|'''A1'''
|4
| rowspan="4" |88k7, 12k
| rowspan="4" |
| rowspan="4" |27.7 В
| rowspan="4" |
| rowspan="4" |
|-
|-
Строка 138: Строка 212:
|
|
|
|
|-
|'''Vin''' (в WB6.5)
|8
|200k, 12k
|
|58.3 В
|
|-
|'''5Vout'''
|5
|33k, 12k
|
|
|
|}
==== Ревизии 6.5.2 и более новые ====
<!--T:20-->
{| class="wikitable"
!клеммник
!Канал АЦП
!Делитель
!Итоговая формула (без делителя)
!V макс. измеряемое
!комментарии
|-
|'''A1'''
|4
| rowspan="4" |88k7, 10k
| rowspan="4" |
| rowspan="4" |32.5 В
| rowspan="4" |
|-
|-
|'''A2'''
|2
|-
|'''A3'''
|1
|-
|'''A4'''
|3
|-
|'''Vin'''
|'''Vin'''
|8
|8
|88k7, 12k
|200k, 12k
|
|
|
|58.3 В
|
|
|-
|-
Строка 154: Строка 271:
|}
|}


=== Ножки для внутреннего использования ===
=== Ножки для внутреннего использования === <!--T:21-->
{| border="1"
 
<!--T:22-->
{| class="wikitable"
| вывод sodim || GPIO  
| вывод sodim || GPIO  
|GPIO number||вывод i.mx6UL || функция
|GPIO number||вывод i.mx6UL || функция
Строка 161: Строка 280:




<!--T:23-->
|84||GPIO1_IO13
|84||GPIO1_IO13
|13|||| транзисторная подтяжка 1-wire к верху  
|13|||| транзисторная подтяжка 1-wire к верху  
Строка 180: Строка 300:
|178
|178
||GPIO3_IO13
||GPIO3_IO13
|||LCD_DATA08||  [[Special:MyLanguage/RFM69H|RFM69H]] _DIO2
|77||LCD_DATA08||  [[Special:MyLanguage/RFM69H|RFM69H]] _DIO2
|-
|-
|180
|180
|GPIO3_IO28
|GPIO3_IO28
|
|92
|LCD_DATA23
|LCD_DATA23
|RFM69 MISO
|RFM69 MISO
Строка 190: Строка 310:
|182
|182
|GPIO3_IO27
|GPIO3_IO27
|
|91
|LCD_DATA22
|LCD_DATA22
|RFM69 MOSI
|RFM69 MOSI
Строка 196: Строка 316:
|186
|186
|GPIO3_IO25
|GPIO3_IO25
|
|89
|LCD_DATA20
|LCD_DATA20
|RFM69 SCK
|RFM69 SCK
Строка 202: Строка 322:
|184
|184
||GPIO3_IO26
||GPIO3_IO26
|||LCD_DATA21||  [[Special:MyLanguage/RFM69H|RFM69H]] chip select
|90||LCD_DATA21||  [[Special:MyLanguage/RFM69H|RFM69H]] chip select
|-
|-
|102||GPIO4_IO23
|?||?
|119||||  SIM900R power FET (RESET)
|?||||  SIM900R power FET (RESET)
|-
|-
|164||GPIO3_IO20
|164||GPIO3_IO20
Строка 247: Строка 367:
|-
|-
|152||GPIO3_IO10
|152||GPIO3_IO10
|||||  питание Wi-Fi (active low)
|74||||  питание Wi-Fi (active low)
|-
|-
|29
|29
|GPIO2_IO16
|GPIO2_IO16
|
|48
|
|
|i2c для RTC, SDA
|i2c для RTC, SDA
Строка 257: Строка 377:
|31
|31
|GPIO2_IO17
|GPIO2_IO17
|
|49
|
|
|i2c для RTC, SCL
|i2c для RTC, SCL
Строка 263: Строка 383:
|144
|144
|GPIO3_IO12
|GPIO3_IO12
|
|76
|PAD_LCD_DATA07
|PAD_LCD_DATA07
|i2c для EEPROM1, SDA
|i2c для EEPROM1, SDA
Строка 269: Строка 389:
|142
|142
|GPIO3_IO03
|GPIO3_IO03
|
|67
|PAD_LCD_VSYNC
|PAD_LCD_VSYNC
|i2c для EEPROM1, SCL
|i2c для EEPROM1, SCL
Строка 275: Строка 395:
|160
|160
|GPIO3_IO06
|GPIO3_IO06
|
|70
|PAD_LCD_DATA01
|PAD_LCD_DATA01
|i2c для EEPROM2, SDA
|i2c для EEPROM2, SDA
Строка 281: Строка 401:
|158
|158
|GPIO3_IO07
|GPIO3_IO07
|
|71
|PAD_LCD_DATA02
|PAD_LCD_DATA02
|i2c для EEPROM2, SCL
|i2c для EEPROM2, SCL
Строка 322: Строка 442:
|-
|-
|
|
|GPIO5_10
|GPIO5_IO10
|138
|138
|
|
Строка 328: Строка 448:
|}
|}


=== GPIO на разъёме расширения MOD1 === <!--T:24-->


=== GPIO на разъёме расширения MOD1 ===
<!--T:25-->
{| class="wikitable"
{| class="wikitable"
|вывод sodim
|вывод sodim
Строка 349: Строка 470:
|'''30'''
|'''30'''
|GPIO1_IO24
|GPIO1_IO24
|
|24
|H17
|H17
|UART3_TX_DATA
|UART3_TX_DATA
Строка 357: Строка 478:
|'''32'''
|'''32'''
|GPIO1_IO25
|GPIO1_IO25
|
|25
|H16
|H16
|UART3_RX_DATA
|UART3_RX_DATA
Строка 373: Строка 494:
|'''34'''
|'''34'''
|GPIO1_IO26
|GPIO1_IO26
|
|26
|H15
|H15
|UART3_CTS_B
|UART3_CTS_B
Строка 388: Строка 509:
|}
|}


=== GPIO на разъёме расширения MOD2 ===
=== GPIO на разъёме расширения MOD2 === <!--T:26-->
 
<!--T:27-->
{| class="wikitable"
{| class="wikitable"
|вывод sodim
|вывод sodim
Строка 410: Строка 533:
|'''98'''
|'''98'''
|GPIO4_IO21
|GPIO4_IO21
|
|117
|E4
|E4
|CSI_DATA00
|CSI_DATA00
Строка 428: Строка 551:
|'''100'''
|'''100'''
|GPIO4_IO22
|GPIO4_IO22
|
|118
|E3
|E3
|CSI_DATA01
|CSI_DATA01
Строка 446: Строка 569:
|'''52'''
|'''52'''
|GPIO1_IO09
|GPIO1_IO09
|
|9
|M15
|M15
|GPIO1_IO09
|GPIO1_IO09
Строка 463: Строка 586:
|}
|}


=== GPIO на разъёме расширения MOD3 ===
=== GPIO на разъёме расширения MOD3 === <!--T:28-->
 
<!--T:29-->
{| class="wikitable"
{| class="wikitable"
|вывод sodim
|вывод sodim
Строка 575: Строка 700:
|
|
|}
|}
</translate>

Текущая версия на 13:10, 23 августа 2022

Другие языки:

Статья описывает подключение встроенной периферии к сигналам процессора для версии Wiren Board 6 (ревизии 6.2, 6.3, 6.4, 6.5, 6.6).

Введение

Эта статья предназначена, в первую очередь, для разработчиков стороннего ПО для контроллеров 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, или в разделе ниже.

Реализация портов RS-485

Модель контроллера Название порта в Linux Альтернативное имя порта в Linux Разъём на контроллере Примечание
Wiren Board 6 /dev/ttymxc1 /dev/ttyRS485-1 Подписан RS-485, клеммники A и B Неизолированный порт, установлен терминатор
/dev/ttymxc3 /dev/ttyRS485-2 Подписан RS-485, клеммники A/L и B/H (этот порт может использоваться и как CAN) Неизолированный порт, установлен терминатор, мультиплексирован с CAN


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_IO15 79 Выход "открытый коллектор";
A2 (out) ADC/FET/DI GPIO3_IO16 80 Выход "открытый коллектор";
A3 (out) ADC/FET/DI GPIO3_IO17 81 Выход "открытый коллектор";
A4 (out) ADC/FET/DI GPIO3_IO18 82 Выход "открытый коллектор";


GPIO для входов (A1-A4)

клеммник функция GPIO GPIO number вывод i.mx6UL комментарии
A1 (in) ADC/FET/DI GPIO4_IO13 109 MX6UL_PAD_NAND_CE0_B
A2 (in) ADC/FET/DI GPIO4_IO15 111 MX6UL_PAD_NAND_CLE
A3 (in) ADC/FET/DI GPIO4_IO14 110 MX6UL_PAD_NAND_CE1_B
A4 (in) ADC/FET/DI GPIO1_IO00 0 MX6UL_PAD_GPIO1_IO00

В версии 6.5 изменена полярность входов - наличие напряжения на A1-A4 соответсвует 0 на GPIO.


Каналы АЦП

Ревизии 6.2-6.4

клеммник Канал АЦП Делитель Итоговая формула (без делителя) V макс. измеряемое комментарии
A1 4 88k7, 12k 27.7 В
A2 2
A3 1
A4 3
Vin 8 88k7, 12k 27.7 В
5Vout 5 33k, 12k

Ревизии 6.5-6.5.1

клеммник Канал АЦП Делитель Итоговая формула (без делителя) V макс. измеряемое комментарии
A1 4 88k7, 12k 27.7 В
A2 2
A3 1
A4 3
Vin (в WB6.5) 8 200k, 12k 58.3 В
5Vout 5 33k, 12k

Ревизии 6.5.2 и более новые

клеммник Канал АЦП Делитель Итоговая формула (без делителя) V макс. измеряемое комментарии
A1 4 88k7, 10k 32.5 В
A2 2
A3 1
A4 3
Vin 8 200k, 12k 58.3 В
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 77 LCD_DATA08 RFM69H _DIO2
180 GPIO3_IO28 92 LCD_DATA23 RFM69 MISO
182 GPIO3_IO27 91 LCD_DATA22 RFM69 MOSI
186 GPIO3_IO25 89 LCD_DATA20 RFM69 SCK
184 GPIO3_IO26 90 LCD_DATA21 RFM69H chip select
? ? ? 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 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
190 GPIO3_IO23 87 PAD_LCD_DATA18 RS-485-2 failsafe bias
40 GPIO1_IO23 23 PAD_UART2_RTS_B CAN transciever power
GPIO5_IO10 138 FW button

GPIO на разъёме расширения MOD1

вывод sodim GPIO GPIO number вывод imx287 pinmux pad name пин функция
- - - 3.3V -
30 GPIO1_IO24 24 H17 UART3_TX_DATA TX uart tx
32 GPIO1_IO25 25 H16 UART3_RX_DATA RX uart rx
- 5V -
34 GPIO1_IO26 26 H15 UART3_CTS_B DE uart de
- GND -

GPIO на разъёме расширения MOD2

вывод sodim GPIO GPIO number вывод imx6ul pinmux pad name пин функция
- - - 3.3V -
98 GPIO4_IO21 117 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 118 E3 CSI_DATA01 RX MX6UL_PAD_CSI_DATA01__UART5_DCE_RX
- 5V -
52 GPIO1_IO09 9 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