Автор Тема: поддержка GPIO  (Прочитано 5978 раз)

Оффлайн ua3nbw

Re: поддержка GPIO
« Ответ #30 : Ноябрь 23, 2018, 11:26:10 pm »
А не проще работать без этой прокладки?
1. наверное, иногда удобнее одно, а иногда - другое (т.е. системная поддержка GPIO со стороны ядра);
2. а это вы у ua3nbw спросите ;) - он очень любит WiringOP ... я думаю, что он вскоре появится и внесёт ясность;
wiringPi самая популярная библиотека для работы с GPIO на Raspberry Pi создавалась с прицелом на схожесть с языком Wiring, который используется в Arduino.

Программы пишутся на C/C++, а компилируются и собираются с помощью широко известного avr-gcc
код Arduino для работы с периферией легко адаптируется,
глупо не использовать готовые наработки.

Оффлайн Olej

Re: поддержка GPIO
« Ответ #31 : Ноябрь 24, 2018, 12:04:25 am »
wiringPi самая популярная библиотека для работы с GPIO на Raspberry Pi создавалась с прицелом на схожесть с языком Wiring, который используется в Arduino.
Это всё известно и понятно.
Вы внесите ясность в другом:
- как увязать номер, указываемый в параметре gpio с номером разъёма на 40-контактной гребёнке GPIO?
- и совпадает ли этот номер gpio (если без опций -g и -1) с номером, указываемым через /sys ?
 

Оффлайн Olej

Re: поддержка GPIO
« Ответ #32 : Ноябрь 24, 2018, 12:28:20 am »
Эксперимент ... до начала какое-то состояние:
olej@orangepione:/sys/class/gpio$ gpio readall
 +-----+-----+----------+------+---+-Orange Pi+---+---+------+---------+-----+--+
 | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
 +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
 |     |     |     3.3v |      |   |  1 || 2  |   |      | 5v       |     |     |
 |  12 |   8 |    SDA.0 | ALT3 | 0 |  3 || 4  |   |      | 5V       |     |     |
 |  11 |   9 |    SCL.0 | ALT3 | 0 |  5 || 6  |   |      | 0v       |     |     |
 |   6 |   7 |   GPIO.7 | ALT3 | 0 |  7 || 8  | 0 | ALT3 | TxD3     | 15  | 13  |
 |     |     |       0v |      |   |  9 || 10 | 1 | OUT  | RxD3     | 16  | 14  |
 |   1 |   0 |     RxD2 |  OUT | 1 | 11 || 12 | 0 | ALT3 | GPIO.1   | 1   | 110 |
 |   0 |   2 |     TxD2 | ALT3 | 0 | 13 || 14 |   |      | 0v       |     |     |
 |   3 |   3 |     CTS2 | ALT3 | 0 | 15 || 16 | 0 | ALT3 | GPIO.4   | 4   | 68  |
 |     |     |     3.3v |      |   | 17 || 18 | 0 | ALT3 | GPIO.5   | 5   | 71  |
 |  64 |  12 |     MOSI | ALT3 | 0 | 19 || 20 |   |      | 0v       |     |     |
 |  65 |  13 |     MISO | ALT3 | 0 | 21 || 22 | 0 | ALT3 | RTS2     | 6   | 2   |
 |  66 |  14 |     SCLK | ALT3 | 0 | 23 || 24 | 0 | ALT3 | CE0      | 10  | 67  |
 |     |     |       0v |      |   | 25 || 26 | 0 | ALT3 | GPIO.11  | 11  | 21  |
 |  19 |  30 |    SDA.1 | ALT3 | 0 | 27 || 28 | 0 | ALT3 | SCL.1    | 31  | 18  |
 |   7 |  21 |  GPIO.21 | ALT3 | 0 | 29 || 30 |   |      | 0v       |     |     |
 |   8 |  22 |  GPIO.22 | ALT3 | 0 | 31 || 32 | 0 | ALT3 | RTS1     | 26  | 200 |
 |   9 |  23 |  GPIO.23 | ALT3 | 0 | 33 || 34 |   |      | 0v       |     |     |
 |  10 |  24 |  GPIO.24 | ALT3 | 0 | 35 || 36 | 0 | ALT3 | CTS1     | 27  | 201 |
 |  20 |  25 |  GPIO.25 | ALT3 | 0 | 37 || 38 | 0 | ALT3 | TxD1     | 28  | 198 |
 |     |     |       0v |      |   | 39 || 40 | 0 | ALT3 | RxD1     | 29  | 199 |
 +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
 | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
 +-----+-----+----------+------+---+-Orange Pi+---+------+----------+-----+-----+
Теперь добавляю ещё один пин GPIO:
root@orangepione:/sys/class/gpio# echo 20 > /sys/class/gpio/export
root@orangepione:/sys/class/gpio# echo out > /sys/class/gpio/gpio20/direction
root@orangepione:/sys/class/gpio# echo 1 > /sys/class/gpio/gpio20/value
root@orangepione:/sys/class/gpio# cat /sys/class/gpio/gpio20/value
1
olej@orangepione:/sys/class/gpio$ gpio readall
 +-----+-----+----------+------+---+-Orange Pi+---+---+------+---------+-----+--+
 | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
 +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
 |     |     |     3.3v |      |   |  1 || 2  |   |      | 5v       |     |     |
 |  12 |   8 |    SDA.0 | ALT3 | 0 |  3 || 4  |   |      | 5V       |     |     |
 |  11 |   9 |    SCL.0 | ALT3 | 0 |  5 || 6  |   |      | 0v       |     |     |
 |   6 |   7 |   GPIO.7 | ALT3 | 0 |  7 || 8  | 0 | ALT3 | TxD3     | 15  | 13  |
 |     |     |       0v |      |   |  9 || 10 | 1 | OUT  | RxD3     | 16  | 14  |
 |   1 |   0 |     RxD2 |  OUT | 1 | 11 || 12 | 0 | ALT3 | GPIO.1   | 1   | 110 |
 |   0 |   2 |     TxD2 | ALT3 | 0 | 13 || 14 |   |      | 0v       |     |     |
 |   3 |   3 |     CTS2 | ALT3 | 0 | 15 || 16 | 0 | ALT3 | GPIO.4   | 4   | 68  |
 |     |     |     3.3v |      |   | 17 || 18 | 0 | ALT3 | GPIO.5   | 5   | 71  |
 |  64 |  12 |     MOSI | ALT3 | 0 | 19 || 20 |   |      | 0v       |     |     |
 |  65 |  13 |     MISO | ALT3 | 0 | 21 || 22 | 0 | ALT3 | RTS2     | 6   | 2   |
 |  66 |  14 |     SCLK | ALT3 | 0 | 23 || 24 | 0 | ALT3 | CE0      | 10  | 67  |
 |     |     |       0v |      |   | 25 || 26 | 0 | ALT3 | GPIO.11  | 11  | 21  |
 |  19 |  30 |    SDA.1 | ALT3 | 0 | 27 || 28 | 0 | ALT3 | SCL.1    | 31  | 18  |
 |   7 |  21 |  GPIO.21 | ALT3 | 0 | 29 || 30 |   |      | 0v       |     |     |
 |   8 |  22 |  GPIO.22 | ALT3 | 0 | 31 || 32 | 0 | ALT3 | RTS1     | 26  | 200 |
 |   9 |  23 |  GPIO.23 | ALT3 | 0 | 33 || 34 |   |      | 0v       |     |     |
 |  10 |  24 |  GPIO.24 | ALT3 | 0 | 35 || 36 | 0 | ALT3 | CTS1     | 27  | 201 |
 |  20 |  25 |  GPIO.25 |  OUT | 1 | 37 || 38 | 0 | ALT3 | TxD1     | 28  | 198 |
 |     |     |       0v |      |   | 39 || 40 | 0 | ALT3 | RxD1     | 29  | 199 |
 +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
 | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
 +-----+-----+----------+------+---+-Orange Pi+---+------+----------+-----+-----+
olej@orangepione:/sys/class/gpio$ gpio exports
GPIO Pins exported:
   1: out  1  none
   4: out  0  none
   5: out  0  none
  16: out  0  none
  20: out  1  none
Увидели как изменился BCM 20? Причём его как 20 видят и /sys и gpio...
Меняем:
root@orangepione:/sys/class/gpio# echo 0 > /sys/class/gpio/gpio20/value
root@orangepione:/sys/class/gpio# cat /sys/class/gpio/gpio20/value
0
olej@orangepione:/sys/class/gpio$ gpio readall
 +-----+-----+----------+------+---+-Orange Pi+---+---+------+---------+-----+--+
 | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
 +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
 |     |     |     3.3v |      |   |  1 || 2  |   |      | 5v       |     |     |
 |  12 |   8 |    SDA.0 | ALT3 | 0 |  3 || 4  |   |      | 5V       |     |     |
 |  11 |   9 |    SCL.0 | ALT3 | 0 |  5 || 6  |   |      | 0v       |     |     |
 |   6 |   7 |   GPIO.7 | ALT3 | 0 |  7 || 8  | 0 | ALT3 | TxD3     | 15  | 13  |
 |     |     |       0v |      |   |  9 || 10 | 1 | OUT  | RxD3     | 16  | 14  |
 |   1 |   0 |     RxD2 |  OUT | 1 | 11 || 12 | 0 | ALT3 | GPIO.1   | 1   | 110 |
 |   0 |   2 |     TxD2 | ALT3 | 0 | 13 || 14 |   |      | 0v       |     |     |
 |   3 |   3 |     CTS2 | ALT3 | 0 | 15 || 16 | 0 | ALT3 | GPIO.4   | 4   | 68  |
 |     |     |     3.3v |      |   | 17 || 18 | 0 | ALT3 | GPIO.5   | 5   | 71  |
 |  64 |  12 |     MOSI | ALT3 | 0 | 19 || 20 |   |      | 0v       |     |     |
 |  65 |  13 |     MISO | ALT3 | 0 | 21 || 22 | 0 | ALT3 | RTS2     | 6   | 2   |
 |  66 |  14 |     SCLK | ALT3 | 0 | 23 || 24 | 0 | ALT3 | CE0      | 10  | 67  |
 |     |     |       0v |      |   | 25 || 26 | 0 | ALT3 | GPIO.11  | 11  | 21  |
 |  19 |  30 |    SDA.1 | ALT3 | 0 | 27 || 28 | 0 | ALT3 | SCL.1    | 31  | 18  |
 |   7 |  21 |  GPIO.21 | ALT3 | 0 | 29 || 30 |   |      | 0v       |     |     |
 |   8 |  22 |  GPIO.22 | ALT3 | 0 | 31 || 32 | 0 | ALT3 | RTS1     | 26  | 200 |
 |   9 |  23 |  GPIO.23 | ALT3 | 0 | 33 || 34 |   |      | 0v       |     |     |
 |  10 |  24 |  GPIO.24 | ALT3 | 0 | 35 || 36 | 0 | ALT3 | CTS1     | 27  | 201 |
 |  20 |  25 |  GPIO.25 |  OUT | 0 | 37 || 38 | 0 | ALT3 | TxD1     | 28  | 198 |
 |     |     |       0v |      |   | 39 || 40 | 0 | ALT3 | RxD1     | 29  | 199 |
 +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
 | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
 +-----+-----+----------+------+---+-Orange Pi+---+------+----------+-----+-----+
olej@orangepione:/sys/class/gpio$ gpio exports
GPIO Pins exported:
   1: out  1  none
   4: out  0  none
   5: out  0  none
  16: out  0  none
  20: out  0  none
Увидели как изменился BCM 20 и в /sys и в gpio?

Здесь отчётливо видно, что нумерация GPIO, используемая в /sys - это то, что утилита gpio называет как BCM - это внутренняя нумерация GPIO на процессоре (не важно какой он модели).

Но на какой ноге 40-контактного разъёма ловить осциллографом это изменение?
Будет ли этот номер ноги одинаковый для разных (хотя бы основных) моделей Orange Pi?

« Последнее редактирование: Ноябрь 24, 2018, 12:53:59 am от Olej »

Оффлайн Olej

Re: поддержка GPIO
« Ответ #33 : Ноябрь 24, 2018, 12:39:45 am »
Вот здесь Схема подключения датчика движения HC-SR04 к Orange Pi PC, Banana Pi или Raspberry Pi с GPIO на 40 выводов автор увязывает ... говорит что OrangePi PC:

GPIO18 -> PIN12
GPIO23 -> PIN16

GPIO24 -> PIN18
Но каким таким хитрым образом это у него вытекает (и верно ли это вообще?) из такого же вывода gpio readall:

Это совершенно непонятно!

Оффлайн ua3nbw

Re: поддержка GPIO
« Ответ #34 : Ноябрь 24, 2018, 02:39:36 am »
Но на какой ноге 40-контактного разъёма ловить осциллографом это изменение?
Будет ли этот номер ноги одинаковый для разных (хотя бы основных) моделей Orange Pi?
дык всё очевидно в таблице gpio readall - 37 нога на гребёнке.

Для процессора H3 WiringOP компилируете с опцией -b h3, для H5 с опцией -b h5
для H2 есть своя WiringOP
естественно таблицы gpio readall будут отличаться, там и надо смотреть номера

Оффлайн ua3nbw

Re: поддержка GPIO
« Ответ #35 : Ноябрь 24, 2018, 03:01:22 am »
Вот здесь Схема подключения датчика движения HC-SR04 к Orange Pi PC, Banana Pi или Raspberry Pi с GPIO на 40 выводов автор увязывает ... говорит что OrangePi PC:

GPIO18 -> PIN12
GPIO23 -> PIN16

Это совершенно непонятно!

картинка для Raspberry Pi, а физически подключено правильно.

Оффлайн Olej

Re: поддержка GPIO
« Ответ #36 : Ноябрь 24, 2018, 09:57:14 am »
Для процессора H3 WiringOP компилируете с опцией -b h3, для H5 с опцией -b h5
для H2 есть своя WiringOP
Не компилируется, а скачивается с GIT с разных веток (branch) репозитория: -b h3 и -b h5 соответственно. Но для этого дают разные сервера GIT:
$ git clone https://github.com/zhaolei/WiringOP.git -b h3
...
$ git clone https://github.com/kazukioishi/WiringOP.git -b h5
...
Отличаются ли эти версии с разных серверов?
Для H2 скачивается с совсем другого сервера GIT:
$ git clone https://github.com/xpertsavenue/WiringOP-Zero.git
 
А собираются (компилируются и устанавливаются) все они совершенно одинаково - войдя в скачанный каталог:
$ sudo ./build

Оффлайн Olej

Re: поддержка GPIO
« Ответ #37 : Ноябрь 24, 2018, 10:17:26 am »
дык всё очевидно в таблице gpio readall - 37 нога на гребёнке.
Не всё так очевидно:
1. Что там электрически на выходах GPIO? на 37-й ноге... Я могу изменять GPIO20 и видеть изменения:
root@orangepione:/sys/class/gpio# echo 1 > /sys/class/gpio/gpio20/value
root@orangepione:/sys/class/gpio# cat /sys/class/gpio/gpio20/value
1
root@orangepione:/sys/class/gpio# echo 0 > /sys/class/gpio/gpio20/value
root@orangepione:/sys/class/gpio# cat /sys/class/gpio/gpio20/value
0
Эти же изменения видит: gpio readall (на картинках выше именно это показано).
Но я не вижу осциллографом никаких изменений на 37-й ноге гребёнки!
Нужно ли её (ногу) подпирать каким-то потенциалом? - через резистор на +5, GND
2. Показанные выше изменения состояния GPIO20 делаются системными средствами. Никаких изменений не удаётся получить командой записи:
$ gpio write 20 1

3. Команда gpio имеет ключи (опции) -g и -1... (и это есть подробно в man gpio).
Пишут:
Цитировать
где номер порта который соответствует номеру в строке wPi, для использования физического номера используйте команду
gpio -1 mode <номер порта> <значение>
например надо физический порт 8 определить на выход
gpio -1 mode 8 out
запишем в порт логическую единицу
gpio -1 write 8 1
Но и никакие комбинации опций не позволяют не только электрически изменить уровень на ноге 37, но и считываемое значение по cat /sys/class/gpio/gpio20/value.
Что из этих опций соответствует каждой из 3-х колонок, показываемых gpio readall: BCM, wPi, Physical ?

Оффлайн Olej

Re: поддержка GPIO
« Ответ #38 : Ноябрь 24, 2018, 11:36:15 am »
Но для этого дают разные сервера GIT:
И ещё: https://github.com/lanefu/WiringOtherPi
Цитировать
An initiative to creat a unified WiringPI port to support all H2/H3 boards
It's a fork of a fork of a fork
;D
Цитировать
Не только названием отличается, она совместима с Orange Pi Zero на H2, ну и претендует на включение в релиз Armbian. Как и WiringOP, это всего лишь прослойка.
Это уже какое-то объединение реализаций H2 & H3 ... возможно, и H5.

P.S. Когда "радиолюбители" берутся за дело, то делу - труба :-[ ... как утверждал один мой начальник лаборатории.
Цитировать
crazy people
:-\

P.S. В этом GIT репозитории удивляет только то, что там есть один branch h3 ... и нет h2, h5 - оно одно и то же для всех модификаций?  :-\
« Последнее редактирование: Ноябрь 24, 2018, 04:07:45 pm от Olej »

Оффлайн ua3nbw

Re: поддержка GPIO
« Ответ #39 : Ноябрь 24, 2018, 12:08:31 pm »
утилита gpio, библиотеки WiringOP без всяких подтяжек выставит высокий логический уровень на 37-й ноге гребёнки
не заморачивайтесь с ключами -g и -1 man наверное для Raspberry писан.

gpio mode 25 out
gpio write 25 1


тоже самое через sysfs

echo 20 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio20/direction
echo 1 >  /sys/class/gpio/gpio20/value


в 3-х колонках, показываемых gpio readall: BCM, wPi, Physical  это 20 25 37

Оффлайн Olej

Re: поддержка GPIO
« Ответ #40 : Ноябрь 24, 2018, 03:22:17 pm »
утилита gpio, библиотеки WiringOP без всяких подтяжек выставит высокий логический уровень на 37-й ноге гребёнки
Да, запутался я с нумерацией гребёнки ... давно не возился с электроникой...
root@orangepione:/sys/class/gpio# echo 20 > /sys/class/gpio/unexport
bash: echo: write error: Invalid argument

root@orangepione:/sys/class/gpio# echo 20 > /sys/class/gpio/export

root@orangepione:/sys/class/gpio# gpio exports
GPIO Pins exported:
  20: in   0  none

root@orangepione:/sys/class/gpio# cat /sys/class/gpio/gpio20/value
0

root@orangepione:/sys/class/gpio# cd /sys/class/gpio/gpio20
Это начальная подготовка GPIO20, характерно, что по дефаулту пин становится в состояние IN.
root@orangepione:/sys/class/gpio/gpio20# echo out > direction

root@orangepione:/sys/class/gpio/gpio20# gpio exports
GPIO Pins exported:
  20: out  0  none

root@orangepione:/sys/class/gpio/gpio20# cat value
0

root@orangepione:/sys/class/gpio/gpio20# echo 1 > value

root@orangepione:/sys/class/gpio/gpio20# cat value
1
И теперь я действительно вижу осциллографом что 37 pin переходит LOW -> HIGH !


Оффлайн Olej

Re: поддержка GPIO
« Ответ #41 : Ноябрь 24, 2018, 03:47:02 pm »
Теперь утилита gpio:
olej@orangepione:~$ gpio read 25
1
olej@orangepione:~$ gpio write 25 0
olej@orangepione:~$ gpio read 25
0
Это соответствует № wPi=25 для BCM=20.
Мне этот эксперимент нужен был для того, чтобы проверить, что если пин инициализирован как OUT через /sys, то gpio его так уже и использует.
Ну а иначе нужно предварительно:
olej@orangepione:~$ gpio mode 25 out 
Хотя man gpio даёт немного другое написание параметра:
Цитировать
       mode <pin> <mode>
              Set  a pin into input, output or pwm mode. Can also use the literals up, down or tri to set the inter‐
              nal pull-up, pull-down or tristate (off) controls.
не заморачивайтесь с ключами -g и -1 man наверное для Raspberry писан.
А вот тут меня "наверное" не устраивает и в таких вещах хорошо бы знать, а не предполагать:
olej@orangepione:~$ gpio -1 write 37 1

olej@orangepione:~$ gpio read 25
1

olej@orangepione:~$ gpio -1 write 37 0

olej@orangepione:~$ gpio read 25
0

olej@orangepione:~$ cat /sys/class/gpio/gpio20/value
0
Вот тут уже фигурируют все 3 числа из таблички.
А вот опция -g, которая предполагала бы то же значение, что /sys - 20 - не работает.
Возможно это только для этого варианта WiringOP ... потому что их слишком много развелось ???

Оффлайн Olej

Re: поддержка GPIO
« Ответ #42 : Ноябрь 24, 2018, 05:39:05 pm »
Нашёл такое ... странное описание того, как для pin (Physical) определить номер GPIO (BCM), который ему соответствуют, или наоборот. Без использования таблички gpio, а непосредственно из распиновки (из даташита) - Доступ к GPIO на OrangePI PC Plus (H3) на Armbian 3.4.113 и новее:
Цитировать


для вывода PA1 команда будет echo 1 > sys/class/gpio/export. Номер штыря вычисляется по следующей формуле:
 (position of letter in alphabet - 1) * 32 + pin number
PA1 имеет номер штыря ('A' - первая буква) 1, PB2 имеет номер контакта 34 ('B' - вторая буква), PG7 имеет номер контакта 199 ('G' - 7-я буква (7-1) * 32 + 7 = 199)
Написанный там "номер штырька" - это номер GPIO, BCP!
Но, похоже, что это обозначение PxN а). является основой на картинках из даташитов, б). которое даёт соответствие для всех моделей Orange Pi - нынешних и будущих и в). это, скорее всего, и является основой, на которой авторы WiringPi / WiringOP и рисуют свои таблички для наглядности:
BCP = ( x - 'A' ) * 32 + N
Смотрю по даташиту OPI One (иду последовательно по номерам 40 контактов разъёма):
3 - PA12 - 12
5 - PA11 - 11
7 - PA6 - 6
11 - PA1 - 1
13 - PA0 - 0
15 - PA3 - 3
19 - PC0 - 64
21 - PC1 - 65
23 - PC2 - 66
27 - PA19 - 19
29 - PA7 - 7
31 - PA8 - 8
33 - PA9 - 9
35 - PA10 - 10
37 - PA20 - 20

8 - PA13 - 13
10 - PA14 - 14
12 - PD14 - 110
16 - PC4 - 68
18 - PC7 - 71
22 - PA2 - 2
24 - PC3 - 65
26 - PA21 - 21
28 - PA18 - 18
32 - PG8 - 200
36 - PG9 - 201
38 - PG6 - 198
40 - PG7 - 199
Это в точности та таблица, которую даёт gpio, но исключительно из обозначений в документации Orange Pi.
* - только 'G' - это вовсе не 199, как пишет хлопчик, а 192 = 6 * 32 ... т.е. хлопчик "слышал звон - да не знает где он".
 
« Последнее редактирование: Ноябрь 24, 2018, 06:03:02 pm от Olej »

Оффлайн Olej

Re: поддержка GPIO
« Ответ #43 : Ноябрь 25, 2018, 12:15:26 pm »
Теперь, в итоге, ясно откуда берутся 2 "системы координат", 2 нумерации линий GPIO:
- BCM оно же GPIO# - внутренняя нумерация линий GPIO, даже не на входах процессора, а где-то на чипах обеспечивающих GPIO; этот же номер используем в командах /sys ... например, GPIO198 (я такое же нечто подобное видел и на новых платах от Intel с GPIO, и в их описаниях) - UDOO X86:


- Physical - номер контакта (пин) 40 (или 26) контактного разъёма той же линии GPIO, например у H3 для той же GPIO198 -  pin 38; к этому номеру подключаемся электрически соединительными шнурками...

Этим 2-м нумерациям понятен физический (реальный) смысл... Не очень понятен смысл ещё одной нумерации wPi, которая используется для утилиты gpio - это что номер обозначает? Но... если бы я писал утилиту gpio, я, конечно мог бы внутри, в коде применить любую систему нумерации, "от булды" ;D... Но можно и gpio выполнять с опцией -1, тогда параметр-нумерация будет Physical - непосредственно по контактам разъёма.

P.S. Интересно, что в команде exports для gpio (и ещё некоторых случаев по man) используется исключительно нумерация GPIO# ... которая не работает в качестве параметра.

P.P.S. Вот сижу и думаю: какой смысл в этой 3-й системе нумерации линия GPIO ... даже какой она была первоначально в Rapsbery Pi, откуда перекочевала в Orange Pi - в чём была задумка?  ;) 
« Последнее редактирование: Ноябрь 25, 2018, 01:22:18 pm от Olej »

Оффлайн Olej

Re: поддержка GPIO
« Ответ #44 : Ноябрь 28, 2018, 02:44:54 pm »
Для сравнения, табличка WiringPi на Rapsberry Pi:
olej@raspberrypi:~ $ gpio readall
 +-----+-----+---------+------+---+---Pi 2---+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 |     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
 |   2 |   8 |   SDA.1 |  OUT | 0 |  3 || 4  |   |      | 5v      |     |     |
 |   3 |   9 |   SCL.1 |  OUT | 0 |  5 || 6  |   |      | 0v      |     |     |
 |   4 |   7 | GPIO. 7 |  OUT | 0 |  7 || 8  | 1 | ALT0 | TxD     | 15  | 14  |
 |     |     |      0v |      |   |  9 || 10 | 1 | ALT0 | RxD     | 16  | 15  |
 |  17 |   0 | GPIO. 0 |  OUT | 0 | 11 || 12 | 0 | IN   | GPIO. 1 | 1   | 18  |
 |  27 |   2 | GPIO. 2 |  OUT | 0 | 13 || 14 |   |      | 0v      |     |     |
 |  22 |   3 | GPIO. 3 |  OUT | 0 | 15 || 16 | 0 | IN   | GPIO. 4 | 4   | 23  |
 |     |     |    3.3v |      |   | 17 || 18 | 0 | IN   | GPIO. 5 | 5   | 24  |
 |  10 |  12 |    MOSI |  OUT | 0 | 19 || 20 |   |      | 0v      |     |     |
 |   9 |  13 |    MISO |  OUT | 0 | 21 || 22 | 0 | IN   | GPIO. 6 | 6   | 25  |
 |  11 |  14 |    SCLK |   IN | 0 | 23 || 24 | 1 | IN   | CE0     | 10  | 8   |
 |     |     |      0v |      |   | 25 || 26 | 1 | IN   | CE1     | 11  | 7   |
 |   0 |  30 |   SDA.0 |   IN | 1 | 27 || 28 | 1 | IN   | SCL.0   | 31  | 1   |
 |   5 |  21 | GPIO.21 |   IN | 1 | 29 || 30 |   |      | 0v      |     |     |
 |   6 |  22 | GPIO.22 |   IN | 1 | 31 || 32 | 0 | IN   | GPIO.26 | 26  | 12  |
 |  13 |  23 | GPIO.23 |   IN | 0 | 33 || 34 |   |      | 0v      |     |     |
 |  19 |  24 | GPIO.24 |   IN | 0 | 35 || 36 | 0 | IN   | GPIO.27 | 27  | 16  |
 |  26 |  25 | GPIO.25 |   IN | 0 | 37 || 38 | 0 | IN   | GPIO.28 | 28  | 20  |
 |     |     |      0v |      |   | 39 || 40 | 0 | IN   | GPIO.29 | 29  | 21  |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+---Pi 2---+---+------+---------+-----+-----+
И тут же рядом, для сравнения, такая же табличка WiringOP для Orange Pi:
olej@orangepione:~$ gpio readall
 +-----+-----+----------+------+---+-Orange Pi+---+---+------+---------+-----+--+
 | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
 +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
 |     |     |     3.3v |      |   |  1 || 2  |   |      | 5v       |     |     |
 |  12 |   8 |    SDA.0 | ALT3 | 0 |  3 || 4  |   |      | 5V       |     |     |
 |  11 |   9 |    SCL.0 | ALT3 | 0 |  5 || 6  |   |      | 0v       |     |     |
 |   6 |   7 |   GPIO.7 | ALT3 | 0 |  7 || 8  | 0 | ALT3 | TxD3     | 15  | 13  |
 |     |     |       0v |      |   |  9 || 10 | 0 | ALT3 | RxD3     | 16  | 14  |
 |   1 |   0 |     RxD2 | ALT3 | 0 | 11 || 12 | 0 | ALT3 | GPIO.1   | 1   | 110 |
 |   0 |   2 |     TxD2 | ALT3 | 0 | 13 || 14 |   |      | 0v       |     |     |
 |   3 |   3 |     CTS2 | ALT3 | 0 | 15 || 16 | 0 | ALT3 | GPIO.4   | 4   | 68  |
 |     |     |     3.3v |      |   | 17 || 18 | 0 | ALT3 | GPIO.5   | 5   | 71  |
 |  64 |  12 |     MOSI | ALT3 | 0 | 19 || 20 |   |      | 0v       |     |     |
 |  65 |  13 |     MISO | ALT3 | 0 | 21 || 22 | 0 | ALT3 | RTS2     | 6   | 2   |
 |  66 |  14 |     SCLK | ALT3 | 0 | 23 || 24 | 0 | ALT3 | CE0      | 10  | 67  |
 |     |     |       0v |      |   | 25 || 26 | 0 | ALT3 | GPIO.11  | 11  | 21  |
 |  19 |  30 |    SDA.1 | ALT3 | 0 | 27 || 28 | 0 | ALT3 | SCL.1    | 31  | 18  |
 |   7 |  21 |  GPIO.21 | ALT3 | 0 | 29 || 30 |   |      | 0v       |     |     |
 |   8 |  22 |  GPIO.22 | ALT3 | 0 | 31 || 32 | 0 | ALT3 | RTS1     | 26  | 200 |
 |   9 |  23 |  GPIO.23 | ALT3 | 0 | 33 || 34 |   |      | 0v       |     |     |
 |  10 |  24 |  GPIO.24 | ALT3 | 0 | 35 || 36 | 0 | ALT3 | CTS1     | 27  | 201 |
 |  20 |  25 |  GPIO.25 | ALT3 | 0 | 37 || 38 | 0 | ALT3 | TxD1     | 28  | 198 |
 |     |     |       0v |      |   | 39 || 40 | 0 | ALT3 | RxD1     | 29  | 199 |
 +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
 | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
 +-----+-----+----------+------+---+-Orange Pi+---+------+----------+-----+-----+
Видно, что нумерации Physical и wPi совпадают, но они соответствуют совершенно разным BCM (GPIO#).