GPIO

встраиваемые модели

Модераторы: Olej, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: GPIO

Непрочитанное сообщение Olej » 23 ноя 2018, 10:37

Olej писал(а):Описание работы с GPIO средствами системы (ядра) простенько, но в более чем достаточной мере, описано здесь:
Там есть одно интересное место, на которое можно убить много времени при экспериментировании ... его нужно повторить здесь:
Авторы подсистемы GPIO видимо хотели, чтобы cat value срабатывал всегда, независимо от того, что записано в файле edge, поэтому первое чтение не будет блокироваться никогда. В принципе, это логично: для того, чтобы отслеживать изменения нужно сначала определить изначальное состояние. Однако, мне пришлось потратить почти часа два, и только в каком-то заброшенном форуме я нашел предположение, почему poll() не срабатывает и что для этого можно сделать.

Я открывал файл value на каждое чтение и очень удивлялся, почему не происходит блокировка. Оказалось, что файл нужно открывать один раз за весь сеанс слежения за линией, читать из него начальное значение и только тогда, последующие операции чтения будут блокироваться до появления указанного в edge события. И тут тоже есть одна тонкость: значения из файла value читаются только по смещению 0, в то время как вызов функции read() изменяет позицию чтения. Поэтому, перед вызовом read() нужно сбросить позицию чтения с помощью lseek(). В документации Linux эти моменты почему-то обойдены.
В общем ... читайте источник. :lol:

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: GPIO

Непрочитанное сообщение Olej » 23 ноя 2018, 10:59

Olej писал(а): Это пакет WiringOP (см. Установка и настройка WiringOP/WiringPi на Orange Pi PC) и утилиты ... самая важная из которых gpio, которой вы можете читать и писать любые контакты гребёнки GPIO, не обращаясь к механизму /sys:

Код: Выделить всё

olej@orangepione:~/WiringOP$ 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+---+------+----------+-----+-----+
Тут вот интересный вопрос вылез, только сейчас...
Здесь есть 3 колонки относительно нумерации ног GPIO:
- Physical
- wPi - это, наверное, соответствует гребёнке GPIO Rapsberry Pi
- BCM - это что? ... наверное это соответствует Banana Pro, судя по заголовку версии программы. Но каким моделям Orange Pi это соответствует, или не соответствует... тем более, что распиновка GPIO моделей Orange Pi различаются.

Код: Выделить всё

olej@orangepione:~/WiringOP$ gpio -v
gpio version: 2.20
Copyright (c) 2012-2014 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty

Banana Pro Details:
  Type: Banana Pro, Revision: 1.2, Memory: 1024MB, Maker: LeMaker

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: GPIO

Непрочитанное сообщение Olej » 23 ноя 2018, 12:01

Orange Pi проекты
Распиновка всех моделей Orange Pi (Orange Pi pinout / Pin definition), назначение и описание разъемов GPIO
04.12.2016
В данной статье я собрал распиновки (Orange Pi pinout) всех моделей Orange Pi: Orange Pi, Orange Pi 2, Orange Pi Mini, Orange Pi Mini 2, Orange Pi One, Orange Pi Lite, Orange Pi PC, Orange Pi PC 2, Orange Pi Plus, Orange Pi Plus 2, Orange Pi Plus 2E, Orange Pi Zero. В основном распиновка GPIO у всех почти одинакова — по 40 выводов общего назначения, кроме Orange Pi — 26 + 18 выводов и Orange Pi Zero — 26 + 13 выводов.
В частности, для OPI One (что меня на сегодня интересует + на которой я могу всё быстро проверить) это так (выглядит плохо, но понять можно):
Изображение
2×20 Выводов (H3)

Код: Выделить всё

1	3.3V	2	VCC-5V
3	PA12 (TWI0-SDA/DI_RX/EINT12)	4	VCC-5V
5	PA11 (TWI0-SCK/DI_TX/EINT11)	6	GND
7	PA6 (SIM_PWREN/PWM1/PA_EINT6)	8	PA13 (SPI1_CS/UART3_TX/PA_EINT13)
9	GND	10	PA14 (SPI1_CLK/UART3_RX/PA_EINT14)
11	PA1 (UART2_RX/JTAG_CK0/PA_EINT1)	12	PD14(RGMII_NULL/MII_TXERR/RMII_NULL)
13	PA0 (UART2_TX/JTAG_MS0/PA_EINT0)	14	GND
15	PA3 (UART2_CTS/JTAG_DI0/PA_EINT3)	16	PC4 (NAND_CE0)
17	3.3V	18	PC7 (NAND_RB1)
19	PC0 (NAND_WE/SPI0_MOSI)	20	GND
21	PC1 (NAND_ALE/SPI0_MISO)	22	PA2 (UART2_RTS/JTAG_DO0/PA_EINT2)
23	PC2 (NAND_CLE/SPI0_CLK)	24	PC3 (NAND_CE1/SPI0_CS)
25	GND	26	PA21 (PCM0_DIN/SIM_VPPPP/PA_EINT21)
27	PA19 (PCM0_CLK/TWI1_SDA/PA_EINT19)	28	PA18 (PCM0_SYNC/TWI1_SCK/PA_EINT18)
29	PA7 (SIM_CLK/PA_EINT7)	30	GND
31	PA8 (SIM_DATA/PA_EINT8)	32	PG8 (UART1_RTS/PG_EINT8)
33	PA9 (SIM_RST/PA_EINT9)	34	GND
35	PA10 (SIM_DET/PA_EINT10)	36	PG9 (UART1_CTS/PG_EINT9)
37	PA20 (PCM0_DOUT/SIM_VPPEN/PA_EINT20)	38	PG6 (UART1_TX/PG_EINT6)
39	GND	40	PG7 (UART1_RX/PG_EINT7)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: GPIO

Непрочитанное сообщение Olej » 24 ноя 2018, 16:28

Эксперимент:

Код: Выделить всё

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.
№ GPIO - это BCM в табличке выводимой gpio readall + PA20 в табличке распиновки, выше - и всё это соответствует 37-й ножке (пину) 40-контактной гребёнки GPIO.

Код: Выделить всё

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
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: GPIO

Непрочитанное сообщение Olej » 24 ноя 2018, 16:58

Теперь утилита 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.
man gpio пишет:
OPTIONS
-v Output the current version including the board revision of the Raspberry Pi.

-g Use the BCM_GPIO pins numbers rather than wiringPi pin numbers. Note: The BCM_GPIO pin numbers are
always used with the export and edge commands.

-1 Use the physical pin numbers rather than wiringPi pin numbers. Note: that this applies to the P1 con‐
nector only. It is not possible to use pins on the Revision 2 P5 connector this way, and as with -g
the BCM_GPIO pin numbers are always used with the export and edge commands.
(там опция 1 - "один", а не -l - "эл")
Проверяю ... такие вещи хорошо бы знать, а не предполагать:

Код: Выделить всё

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 числа из таблички: BCM в операциях с /sys + wPi параметр gpio + Physical (контакт разъёма) параметр gpio с опцией -1.
А вот опция -g, которая предполагала бы то же значение, что /sys - 20 - не работает.
Возможно это только для этого варианта WiringOP ... потому что их слишком много развелось ???

P.S. В качестве примечания: меня удивляет, что gpio работает без прав root, тогда как имена в /sys этого потребуют (или включать пользователя в группу gpio).

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: GPIO

Непрочитанное сообщение Olej » 24 ноя 2018, 19:03

Нашёл такое ... странное описание того, как для pin (Physical) определить номер GPIO (BCM), который ему соответствуют, или наоборот. Без использования таблички gpio, а непосредственно из распиновки (из даташита) - Доступ к GPIO на OrangePI PC Plus (H3) на Armbian 3.4.113 и новее:
[img width=256 height=224]http://qaru.site/img/9e73ee100f180f03c2 ... 3af6b1.png[/img]

для вывода 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 ... т.е. хлопчик "слышал звон - да не знает где он".

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: GPIO

Непрочитанное сообщение Olej » 25 ноя 2018, 14:19

Теперь, в итоге, ясно откуда берутся 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, я, конечно мог бы внутри, в коде применить любую систему нумерации, "от булды" :lol: - хозяин барин... Но можно и gpio выполнять с опцией -1, тогда параметр-нумерация будет Physical - непосредственно по контактам разъёма.
P.S. Интересно, что в команде exports для gpio (и ещё некоторых случаев по man) используется исключительно нумерация GPIO# ... которая не работает в качестве параметра.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: GPIO

Непрочитанное сообщение Olej » 28 ноя 2018, 14:27

Olej писал(а):Это пакет WiringOP
Это всё был (выше) Orang Pi и его WiringOP.
Теперь вернусь к его первооснове, прародителю - WiringPi.
Оригинальный авторския сайт здесь: Wiring Pi.
GPIO Interface library for the Raspberry Pi
Но я использую hard realtime сборку Raspberry Pi: hard realtime Linux/Xenomai:

Код: Выделить всё

olej@raspberrypi:~ $ uname -a
Linux raspberrypi 4.1.21-v7+ #4 SMP Sat Jul 15 06:39:14 CEST 2017 armv7l GNU/Linux

olej@raspberrypi:~ $ lsb_release -a
No LSB modules are available.
Distributor ID:	Raspbian
Description:	Raspbian GNU/Linux 8.0 (jessie)
Release:	8.0
Codename:	jessie
Где WiringPi установлен, или может быть установлен/обновлён из их стандартного репозитория:

Код: Выделить всё

olej@raspberrypi:~ $ aptitude search wiring
i   wiringpi                                            - The wiringPi libraries, headers and gpio command              

olej@raspberrypi:~ $ which gpio
/usr/bin/gpio

olej@raspberrypi:~ $ gpio -v
gpio version: 2.44
Copyright (c) 2012-2017 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty

Raspberry Pi Details:
  Type: Pi 2, Revision: 01, Memory: 1024MB, Maker: Embest 
  * Device tree is enabled.
  *--> Raspberry Pi 2 Model B Rev 1.1
  * This Raspberry Pi supports user-level GPIO access.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: GPIO

Непрочитанное сообщение Olej » 28 ноя 2018, 14:29

Olej писал(а): Где WiringPi установлен, или может быть установлен/обновлён из их стандартного репозитория:

Код: Выделить всё

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#).

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: GPIO

Непрочитанное сообщение Olej » 28 ноя 2018, 14:40

На плате Rapsberry Pi (в отличие от Orange Pi) совершенно не прорисован ключ разъёма 40-pin GPIO ... поэтому пришлось искать сторонние картинки, типа здесь:
Изображение
Разъём нв Rapsberry Pi по сравнению с Orange Pi вывернут с точность до наоборот: в Orange Pi нечётный ряд - наружный по отношению к плате, а у Rapsberry Pi - внутренний (я из-за этого с отциллографом сначала затупил).

Сюда же в тему, полезно - Распиновка Raspberry Pi - нюансы и особенности:
У Raspberry распиновка включает в себя два ряда штырьков. Совокупное количество же пинов равняется 40, а значит в одном ряде их числов – 20.

В первую очередь человеку, который хочет подключить внешнее устройство, нужно знать, чем отличается каждый ряд. Первый (располагается слева) предназначается девайсам, для работы которых требуется напряжение в 3,3 Вольта. Второй (соответственно, размещается справа) – 5 Вольт. С этим не должно возникнуть вопросов.
Можно подключать любые устройства в Raspberry 2, 3 т.д. пины. Однако на GPIO есть специальные порты, которые применять не по назначению возможно, но не рекомендуется. К ним относятся BCM 0 и BCM 1, которые в схеме имеют номера 27 и 28 соответственно. Эти порты предназначены специально для поверхностного монтажа – HAT-устройств, которые, по сути, являются платами расширения.
Первое, о чем следует рассказать – о силе тока. Максимально на один 3-вольтовый пин может быть подано 16 миллиампер, тогда как суммарно на все, работающие под указанным напряжением – 50 миллиампер. На 5-вольтовые power-штырьки, в свою очередь, может быть суммарно подано до 500 миллиампер. Благодаря этому по GPIO возможно подключать в том числе клавиатуры, мыши и прочее оборудование.

Ответить

Вернуться в «Одноплатные компьютеры»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя