Глава 3. ОС Линукс - Linux OS
3.23. Тест 26-контактного разъема (26pins GPIO, I2C, UART, SPI test)
3.23.1. Описание 26-контактного разъема (26 Pins description)
1) На рисунке ниже показана последовательность нумерации контактов.
2) Функции 26 контактов платы разработки Orange Pi Zero 2 показаны в таблице ниже.
№ конт. | Функция | GPIO | (Сер. номер)
1 3.3V
2 5V
3 TWI3-SDA PH5 (229)
4 5V
5 TWI3-SCK PH4 (228)
6 GND
7 PC9 PC9 (73)
8 UART5_TX PH2 (226)
9 GND
10 UART5_RX PH3 (227)
11 PC6 PC6 (70)
12 PC11 PC11 (75)
13 PC5 PC5 (69)
14 GND
15 PC8 PC8 (72)
16 PC15 PC15 (79)
17 3.3V
18 PC14 PC14 (78)
19 SPI1_MOSI PH7 (231)
20 GND
21 SPI1_MISO PH8 (232)
22 PC7 PC7 (71)
23 SPI1_CLK PH6 (230)
24 SPI1_CS PH9 (233)
25 GND
26 PC10 PC10 (74)
3.23.2. Установка wiringOP (Install wiringOP)
1) WiringOP адаптирован к плате разработки Orange Pi Zero 2, с помощью wiringOP можно
тестировать функции GPIO, I2C, UART и SPI.
2) Скачайте код WiringOP
root@orangepi:~# apt update
root@orangepi:~# apt install git
root@orangepi:~# git clone https://github.com/orangepi-xunlong/wiringOP
3) Скомпилируйте WiringOP
root@orangepi:~# cd wiringOP
root@orangepi:~/wiringOP# ./build clean
root@orangepi:~/wiringOP# ./build
4) Результат выполнения команды test gpio readall следующий
В этой таблице показаны 32 контакта, которые интерпретируются следующим образом:
a) Между контактами таблицы с 1 по 26 и 26-контактным разъемом на плате существует взаимно однозначное соответствие.
b) Контакт 27 таблицы соответствует контакту 10 на 13-контактном разъеме
c) Контакт 29 таблицы соответствует контакту 11 на 13-контактном разъеме
d) Контакт 31 таблицы соответствует контакту 12 на 13-контактном разъеме
e) Контакты таблицы 28, 30, 32 не используются
3.23.3. Тест общих портов GPIO (Test common GPIO port)
1) Ниже приведен пример того, как установить высокий и низкий уровень порта GPIO с контактом № 7,
соответствующим GPIO как PC9, соответствующим номеру wPi как 2-
2) Сначала установите порт GPIO в режим вывода (out), а в качестве третьего параметра
ввести серийный номер wPi соответствующего вывода (2)
root@orangepi:~/wiringOP# gpio mode 2 out
3) Затем установите порт GPIO на вывод низкого уровня (третий параметр = 0).
После настройки вы можете измерить мультиметром значение напряжения на контакте.
Если это 0 В, это означает, что низкий уровень установлен успешно.
root@orangepi:~/wiringOP# gpio write 2 0
Используйте gpio readall, чтобы увидеть, что значение (V) вывода 7 стало 0
4) Затем установите порт GPIO на вывод высокого уровня (третий параметр = 1).
После настройки вы можете измерить мультиметром значение напряжения на контакте.
Если это 3.3 В, это означает, что высокий уровень установлен успешно.
root@orangepi:~/wiringOP# gpio write 2 1
Используйте gpio readall, чтобы увидеть, что значение (V) вывода 7 стало 1
5) Метод настройки других контактов аналогичен, просто измените серийный номер wPi
на серийный номер, соответствующий контакту.
3.23.4. Тест SPI (SPI test)
1) Согласно принципиальной схеме 26-контактного разъема, доступным SPI для Orange Pi Zero2 является SPI1.
2) Сначала проверьте, есть ли в ОС Linux узел устройства spidev1.1.
Если он существует, это означает, что SPI1 настроен и может использоваться напрямую
root@orangepi: ~/wiringOP/examples# ls /dev/spidev1*
/dev/spidev1.1
3) Скомпилируйте тестовую программу spidev_test в примерах wiringOP
root@orangepi: ~/wiringOP/examples# make spidev_test
[CC] spidev_test.c
[link]
4) Не замыкайте сначала контакты mosi и miso SPI1, и результат работы spidev_test будет следующим:
вы можете видеть, что данные TX и RX несовместимы.
root@orangepi: ~/wiringOP/examples# ./spidev_test -v -D /dev/spidev1.1
spi mode: 0x0
bits per word: 8
max speed: 500000 Hz (500 KHz)
TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF F0 0D | ......@....-..................-.
RX | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF | ................................
5) Затем замкните накоротко два контакта mosi SPI1 (19-й контакт )
и miso (21-й контакт) и запустите вывод spidev_test.
Вы можете увидеть, что отправленные и полученные данные совпадают
root@orangepi: ~/wiringOP/examples# ./spidev_test -v -D /dev/spidev1.1
spi mode: 0x0
bits per word: 8
max speed: 500000 Hz (500 KHz)
TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF F0 0D | ......@....-..................-.
RX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF F0 0D | ......@....-..................-.
3.23.5. Тест I2C (I2C test)
1) Согласно принципиальной схеме 26-контактного разъема для Orange Pi Zero 2 доступен i2c3.
2) После запуска ОС Linux сначала убедитесь, что в /dev есть узел устройства i2c3.
root@orangepi:~# ls /dev/i2c-*
/dev/i2c-3 /dev/i2c-5
3) Затем начните тестировать i2c, сначала установите i2c-tools
root@orangepi:~# apt update
root@orangepi:~# apt install i2c-tools
4) Затем подключите устройство i2c к контактам i2c3 26-контактного разъема.
- Sda Соответствует контакту 3 i2c3
- Sck Соответствует контакту 5 i2c3
- Vcc Соответствует контакту 1 i2c3
- Gnd Соответствует контакту 6 i2c3
5) Затем используйте команду i2cdetect -y 3, если адрес подключенного устройства i2c можно определить,
это означает, что i2c можно использовать в обычном режиме
3.23.6. Тест UART (UART test)
1) Согласно принципиальной схеме 26-контактного разъема, uart, доступный для Orange Pi Zero 2 - это UART5.
2) После запуска ОС Linux сначала убедитесь, что в /dev есть узел устройства UART5.
root@orangepi:~# ls /dev/ttyS*
/dev/ttyS0 /dev/ttyS1 /dev/ttyS5
3) Затем начните тестирование интерфейса UART5, сначала используйте перемычку Dupont
для соединения rx и tx интерфейса UART5, который необходимо проверить.
- Контакт Tx соответствует контакту 8 UART5
- Контакт Rx соответствует контакту 10 UART5
4) Затем измените имя узла последовательного устройства, открытое программой serialTest d wiringOP
на /dev/ttyS5
root@orangepizero2:~/wiringOP/examples# vim serialTest.c
5) Перекомпилируйте программу последовательного тестирования serialTest в wiringOP
root@orangepi:~/wiringOP/examples# make serialTest
[CC] serialTest.c
[link]
root@orangepi:~/wiringOP/examples#
6) Наконец, запустите serialTest, если вы видите показанные ниже выводимые строки, то это означает,
что последовательная связь в норме.
root@orangepi:~/wiringOP/examples# ./serialTest
Out: 0: -> 0
Out: 1: -> 1
Out: 2: -> 2
Out: 3: -> 3
Out: 4: -> 4
Out: 5: -> 5
Out: 6: -> 6
Out: 7: -> 7
Out: 8: -> 8
^C