图一 Purple Pi OH正面实物图
图二 Purple Pi OH背面实物图
序号 |
名称 |
描述 |
设备节点 |
1 |
内核版本 |
Linux 4.19.219 |
|
2 |
系统版本 |
Debian0-Desktop |
|
3 |
内存 |
LPDDR4(1G/2G/4G选配) |
|
4 |
存储 |
eMMC5.1(8GB/16GB/32GB选配) |
|
5 |
供电 |
DC 5V@1A |
|
6 |
显示 |
HDM MIPI |
|
7 |
USB OTG |
USB OTG Type-C |
|
8 |
USB HOST |
USB3.0 HOST(Type-A) X 1 USB2.0 HOST(Type-A) X 3 |
|
9 |
TF Card |
TF Card x 1 |
|
10 |
以太网 |
千兆自适应以太网 x 1 |
eth0 |
11 |
WIFI/BT |
AM-NM372SM 2.4G |
wlan0 、hci0 |
12 |
耳机 |
3.5mm 美标 |
|
13 |
Camera |
OV5648、OV8858 |
|
14 |
串口 |
TTL x 1 |
|
15 |
调试串口 |
TTL x 1 |
|
16 |
RTC |
HYM8563 x 1 |
|
17 |
系统指示灯 |
x1 |
|
18 |
ADC按键 |
1路 |
串口调试端口位于J5,通信参数为1500000 8 N 1,电平状态为TTL电平。
串口登录默认以root用户登录,且没有设置密码。
root@ido:/# ls
app.log data home lost+found opt run srv tmp var
bin dev lib media proc sbin sys udisk vendor
boot etc log mnt root sdcard system usr
root@ido:/#
ADB调试端口位于J7,将SW4切换到1档,使用USB-TYPEC,连接主板和电脑即可在电脑上使用adb调试:
系统默认ssh账号和密码为 ido @ 123456。
主板共配置了4个USB接口,分别为USB1-4。其中USB1为OTG,USB2-4为HOST。
编号 |
类型 |
位置 |
usb1 |
host-2.0 |
J9(下) |
usb2 |
host-3.0 |
J9(上) |
usb3 |
host-2.0 |
J10(下) |
usb4 |
host-2.0 |
J10(上) |
注:如果要使用USB1,需要将SW4切换至OFF档,且adb功能无法使用。
当USB1-4插入U盘后,会自动挂载/media/ido/目录下。
root@ido:~# ls /media/ido/
KINGSTON
默认所有USB的电源都是开启的,我们提供了开启/关闭电源的方法,如有需要,你可以通过该方法控制它们的电源。
编号 |
电源控制节点 |
USB1 |
/sys/class/leds/usb_otg_pwr/brightness |
USB2 |
/sys/class/leds/usb_host1_pwr/brightness |
USB3 |
/sys/class/leds/usb_host2_pwr/brightness |
USB4 |
/sys/class/leds/usb_host3_pwr/brightness |
打开USB2的电源:
root@ido:~# echo 255 > /sys/class/leds/usb_host1_pwr/brightness
关闭USB2的电源:
root@ido:~# echo 0 > /sys/class/leds/usb_host1_pwr/brightness
USB1-4的电源控制方法类似。
主板配置了一个TF CARD接口,位于J2,当TF CARD接口插入TF卡后,会自动挂载到/media/ido/目录下。
root@ido:~# ls /media/ido/
3533-3735
root@ido:~#
主板配置了一个1000M以太网接口,位于J11,在系统中其对应的网络设备节点为eth0。
系统默认以太网为动态获取IP,当以太网接口插入网线时,会自动获取IP。
root@ido:~# ifconfig eth0
eth0: flags=4163 mtu 1500
inet 192.168.1.133 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::3b43:b691:ded5:c497 prefixlen 64 scopeid 0x20
ether 82:4c:21:62:f5:35 txqueuelen 1000 (Ethernet)
RX packets 29 bytes 4592 (4.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 43 bytes 4146 (4.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 40
root@ido:~#
root@ido:~# ifconfig eth0 192.168.1.123
新建/etc/netplan/00-installer-config.yaml,然后写入如下内容(注意缩进以Tab为单位):
network:
version: 2
renderer: NetworkManager
ethernets:
eth0:
dhcp4: no
dhcp6: no
addresses: [192.168.1.10/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 114.114.114.114]
然后重启网络
root@ido:~# netplan apply
重启网络后,eth0的ip地址已经变成刚才设置的静态ip。
root@ido:~# ifconfig eth0
eth0: flags=4163 mtu 1500
inet 192.168.1.123 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::b7c2:552b:4127:ee1c prefixlen 64 scopeid 0x20
ether 82:4c:21:62:f5:35 txqueuelen 1000 (Ethernet)
RX packets 19 bytes 3281 (3.2 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 36 bytes 5592 (5.5 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 40
设置静态IP后,断电重启设备依旧生效。
系统上电默认会打开WiFi,对应的网络设备节点为wlan0。
root@ido:~# ifconfig wlan0
wlan0: flags=4099 mtu 1500
ether 2c:d2:6b:10:ea:4d txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
root@ido:~#
连接热点可以在桌面上操作,也可以使用命令行操作。
鼠标左键点击桌面右下角的网络图标,即可看到WiFi热点列表:
点击要连接的热点,弹出密码输入窗口:
如果有连接键盘,直接输入密码即可;如果没有连接键盘,可以使用系统自带的软键盘。
点击桌面的Onboard图标,即可打开系统自带的软键盘
使用软键盘输入密码后,点击【OK】连接热点
连接成功后,桌面右下角的网络图标将改变:
新建/etc/netplan/01-wifi-sta.yaml,并按照以下格式填写内容:
network:
wifis:
wlan0:
dhcp4: true
access-points:
"TP-LINK_B87A":
password: "12345678"
version: 2
其中TP-LINK_B87A为要连接的热点名称,12345678为连接密码。
修改成功后执行以下命令进行连接:
root@ido:~# killall wpa_supplicant
root@ido:~# netplan apply
等待几秒钟后,将成功连接WiFi热点。
sudo iwlist scanning
sudo nmcli d wifi connect cainiaocl password 12345678
其中cainiaocl,12345678,是你的账号密码
ifconfig
如果你的wlan0 出现了IP地址,则说明连接成功
使用ifconfig命令可查看连接热点后获取的IP:
root@ido:~# ifconfig wlan0
wlan0: flags=4163 mtu 1500
inet 192.168.1.165 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::984a:9a2f:77b4:e899 prefixlen 64 scopeid 0x20
ether 2c:d2:6b:10:ea:4d txqueuelen 1000 (Ethernet)
RX packets 83 bytes 10479 (10.4 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 35 bytes 5285 (5.2 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
root@ido:~#
root@ido:~# ping www.baidu.com -I wlan0
PING www.a.shifen.com (14.215.177.39) from 192.168.1.117 p2p0: 56(84) bytes of data.
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=1 ttl=54 time=17.8 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=2 ttl=54 time=9.30 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=3 ttl=54 time=25.7 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=4 ttl=54 time=42.1 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=5 ttl=54 time=13.1 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=6 ttl=54 time=39.8 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=7 ttl=54 time=28.1 ms
系统开机默认打开蓝牙,对应的网络节点为hci0。
root@ido:~# hciconfig
hci0: Type: Primary Bus: UART
BD Address: 70:D5:2B:5B:22:22 ACL MTU: 1021:8 SCO MTU: 255:12
UP RUNNING
RX bytes:1665 acl:0 sco:0 events:57 errors:0
TX bytes:6311 acl:0 sco:0 commands:57 errors:0
root@ido:~#
将鼠标放到桌面右下角蓝牙图标,右键->Devices:
在弹出的窗口中,点击【Search】:
将看到附近的蓝牙设备列表:
选中要连接设备,右键->Connect,即可连接该设备:
主板配置了一路耳机接口,位于J6,具备进行音频输出及录音功能。
root@ido:~# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: rockchiphdmi [rockchip,hdmi], device 0: rockchip,hdmi i2s-hifi-0 [rockchip,hdmi i2s-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: rockchiprk809co [rockchip,rk809-codec], device 0: fe410000.i2s-rk817-hifi rk817-hifi-0 [fe410000.i2s-rk817-hifi rk817-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
root@ido:~#
注:MIPI固件仅有rk809-codec一个声卡。
播放到HDMI(仅HDMI固件支持)
aplay -D plughw:0,0 /usr/share/sounds/alsa/Rear_Center.wav
播放到耳机
插入耳机,执行以下命令:
//HDMI固件
aplay -D plughw:1,0 /usr/share/sounds/alsa/Rear_Center.wav
//MIPI固件
aplay -D plughw:0,0 /usr/share/sounds/alsa/Rear_Center.wav
鼠标点击桌面右下角的音量图标:
然后滑动鼠标进行音量调节:
当需要静音是,点击静音按钮:
需要接入带麦克风的耳机。
使用arecord工具可以进行录音测试:
//HDMI固件
root@ido:~# arecord -D hw:1,0 -r 48000 -c 2 -f S16_LE test.wav
Recording WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
^CAborted by signal Interrupt...
root@ido:~#
//MIPI固件
root@ido:~# arecord -D hw:0,0 -r 48000 -c 2 -f S16_LE test.wav
Recording WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
^CAborted by signal Interrupt...
root@ido:~#
录音完后播放测试:
//HDMI固件
root@ido:~# aplay -D plughw:1,0 ./test.wav
Playing WAVE './test.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
root@ido:~#
//MIPI固件
root@ido:~# aplay -D plughw:0,0 ./test.wav
Playing WAVE './test.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
root@ido:~#
主板默认适配OV5648和OV8858摄像头,摄像头接口位于J22。
root@ido:~# media-ctl -p -d /dev/media0
...
- entity 67: rockchip-csi2-dphy0 (2 pads, 2 links)
type V4L2 subdev subtype Unknown flags 0
device node name /dev/v4l-subdev2
pad0: Sink
[fmt:SBGGR10_1X10/2592x1944@10000/150000 field:none]
<- "m00_b_ov5648 2-0036":0 [ENABLED]
pad1: Source
[fmt:SBGGR10_1X10/2592x1944@10000/150000 field:none]
-> "rkisp-csi-subdev":0 [ENABLED]
- entity 70: m00_b_ov5648 2-0036 (1 pad, 1 link)
type V4L2 subdev subtype Sensor flags 0
device node name /dev/v4l-subdev3
pad0: Source
[fmt:SBGGR10_1X10/2592x1944@10000/150000 field:none]
-> "rockchip-csi2-dphy0":0 [ENABLED]
root@ido:~#
结果显示m00_b_ov5648,说明摄像头存在,最高分辨率支持2592x1944。
使用v4l2-ctl工具可以抓取摄像头的视频数据流。
root@ido:~# v4l2-ctl --verbose -d /dev/video0 --set-fmt-video=width=1920,height=1080,pixelformat='NV12' --stream-mmap=4 --set-selection=target=crop,flags=0,top=0,left=0,width=1920,height=1080 --stream-to=./out.yuv
VIDIOC_QUERYCAP: ok
VIDIOC_G_FMT: ok
VIDIOC_S_FMT: ok
Format Video Capture Multiplanar:
Width/Height : 1920/1080
Pixel Format : 'NV12' (Y/CbCr 4:2:0)
Field : None
Number of planes : 1
Flags :
Colorspace : Default
Transfer Function : Default
YCbCr/HSV Encoding: Default
Quantization : Full Range
Plane 0 :
Bytes per Line : 1920
Size Image : 3110400
VIDIOC_G_SELECTION: ok
VIDIOC_S_SELECTION: ok
VIDIOC_REQBUFS returned 0 (Success)
VIDIOC_QUERYBUF returned 0 (Success)
VIDIOC_QUERYBUF returned 0 (Success)
VIDIOC_QUERYBUF returned 0 (Success)
VIDIOC_QUERYBUF returned 0 (Success)
VIDIOC_QBUF returned 0 (Success)
VIDIOC_QBUF returned 0 (Success)
VIDIOC_QBUF returned 0 (Success)
VIDIOC_QBUF returned 0 (Success)
VIDIOC_STREAMON returned 0 (Success)
cap dqbuf: 0 seq: 1 bytesused: 3110400 ts: 1384.549991 (ts-monotonic, ts-src-eof)
cap dqbuf: 1 seq: 2 bytesused: 3110400 ts: 1384.616490 delta: 66.499 ms (ts-monotonic, ts-src-eof)
cap dqbuf: 2 seq: 3 bytesused: 3110400 ts: 1384.682975 delta: 66.485 ms (ts-monotonic, ts-src-eof)
cap dqbuf: 3 seq: 4 bytesused: 3110400 ts: 1384.749486 delta: 66.511 ms (ts-monotonic, ts-src-eof)
cap dqbuf: 0 seq: 5 bytesused: 3110400 ts: 1384.816022 delta: 66.536 ms fps: 15.04 (ts-monotonic, ts-src-eof)
cap dqbuf: 1 seq: 6 bytesused: 3110400 ts: 1384.882509 delta: 66.487 ms fps: 15.04 (ts-monotonic, ts-src-eof)
cap dqbuf: 2 seq: 7 bytesused: 3110400 ts: 1384.949025 delta: 66.516 ms fps: 15.04 (ts-monotonic, ts-src-eof)
cap dqbuf: 3 seq: 8 bytesused: 3110400 ts: 1385.015545 delta: 66.520 ms fps: 15.04 (ts-monotonic, ts-src-eof)
cap dqbuf: 0 seq: 9 bytesused: 3110400 ts: 1385.082051 delta: 66.506 ms fps: 15.04 (ts-monotonic, ts-src-eof)
cap dqbuf: 1 seq: 10 bytesused: 3110400 ts: 1385.148567 delta: 66.516 ms fps: 15.04 (ts-monotonic, ts-src-eof)
cap dqbuf: 2 seq: 11 bytesused: 3110400 ts: 1385.215079 delta: 66.512 ms fps: 15.04 (ts-monotonic, ts-src-eof)
cap dqbuf: 3 seq: 12 bytesused: 3110400 ts: 1385.281594 delta: 66.515 ms fps: 15.04 (ts-monotonic, ts-src-eof)
cap dqbuf: 0 seq: 13 bytesused: 3110400 ts: 1385.348115 delta: 66.521 ms fps: 15.04 (ts-monotonic, ts-src-eof)
cap dqbuf: 1 seq: 14 bytesused: 3110400 ts: 1385.414669 delta: 66.554 ms fps: 15.03 (ts-monotonic, ts-src-eof)
cap dqbuf: 2 seq: 15 bytesused: 3110400 ts: 1385.481133 delta: 66.464 ms fps: 15.04 (ts-monotonic, ts-src-eof)
cap dqbuf: 3 seq: 16 bytesused: 3110400 ts: 1385.547656 delta: 66.523 ms fps: 15.04 (ts-monotonic, ts-src-eof)
cap dqbuf: 0 seq: 17 bytesused: 3110400 ts: 1385.614172 delta: 66.516 ms fps: 15.04 (ts-monotonic, ts-src-eof)
cap dqbuf: 1 seq: 18 bytesused: 3110400 ts: 1385.680680 delta: 66.508 ms fps: 15.04 (ts-monotonic, ts-src-eof)
cap dqbuf: 2 seq: 19 bytesused: 3110400 ts: 1385.747241 delta: 66.561 ms fps: 15.03 (ts-monotonic, ts-src-eof)
cap dqbuf: 3 seq: 20 bytesused: 3110400 ts: 1385.813714 delta: 66.473 ms fps: 15.03 (ts-monotonic, ts-src-eof)
^C
按Ctrl-C停止抓取,视频流保存到文件out.yuv。
使用ffplay工具播放抓取的视频流:
root@ido:~# ffplay -f rawvideo -video_size 1920x1080 -pix_fmt nv12 ./out.yuv
ffplay version 4.2.4-1ubuntu1.0firefly1 Copyright (c) 2003-2020 the FFmpeg developers
built with gcc 9 (Ubuntu 9.3.0-17ubuntu1~20.04)
configuration: --prefix=/usr --extra-version=1ubuntu1.0firefly1 --toolchain=hardened --libdir=/usr/lib/aarch64-linux-gnu --incdir=/usr/include/aarch64-linux-gnu --arch=arm64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-libdrm --enable-librga --enable-rkmpp --enable-version3 --disable-libopenh264 --disable-vaapi --disable-vdpau --disable-decoder=h264_v4l2m2m --disable-decoder=vp8_v4l2m2m --disable-decoder=mpeg2_v4l2m2m --disable-decoder=mpeg4_v4l2m2m --disable-muxer='ac3,eac3,mlp,truehd' --disable-encoder='ac3_fixed,ac3,mlp,spdif,truehd' --disable-demuxer='ac3,eac3,mlp,truehd,dts,dtshd' --disable-parser='aac,ac3,mlp' --disable-decoder='ac3,eac3,mlp,dolby_e' --enable-shared --disable-doc
libavutil 56. 31.100 / 56. 31.100
libavcodec 58. 54.100 / 58. 54.100
libavformat 58. 29.100 / 58. 29.100
libavdevice 58. 8.100 / 58. 8.100
libavfilter 7. 57.100 / 7. 57.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 5.100 / 5. 5.100
libswresample 3. 5.100 / 3. 5.100
libpostproc 55. 5.100 / 55. 5.100
Option -pix_fmt is deprecated, use -pixel_format.
libGL error: failed to create dri screen
libGL error: failed to load driver: rockchip
libGL error: failed to create dri screen
libGL error: failed to load driver: rockchip
[rawvideo @ 0x7f3c000ba0] Estimating duration from bitrate, this may be inaccurate
Input #0, rawvideo, from './out.yuv':
Duration: 00:00:04.00, start: 0.000000, bitrate: 622075 kb/s
Stream #0:0: Video: rawvideo (NV12 / 0x3231564E), nv12, 1920x1080, 622080 kb/s, 25 tbr, 25 tbn, 25 tbc
gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw, format=NV12, width=1920, height=1080, framerate=30/1 ! autovideoconvert ! autovideosink
主板包含2个RTC,其中/dev/rtc0为外部RTC(HYM8563),/dev/rtc1为CPU内部的RTC(RK808)。系统默认使用rtc0的时间。
root@ido:~# hwclock
2022-11-10 02:16:23.617474+00:00
root@ido:~# hwclock
2022-11-18 08:30:40.778874+00:00
root@ido:~# date -s '2022-11-10 10:17:00'
Thu Nov 10 10:17:00 UTC 2022
root@ido:~# hwclock -w
root@ido:~# hwclock
2022-11-18 08:31:06.829691+00:00
root@ido:~#
注:如果接入网络的话可能会设置失败,因为网络每隔一段时间会直接获取最新时间。
CPU内部的rtc1支持支持定时开机功能。
以下测试关机60秒定时开机:
root@ido:~# echo +60 > /sys/class/rtc/rtc1/wakealarm
root@ido:~# poweroff
Stopping Session c1 of user ido.
Stopping Session c2 of user root.
[ OK ] Removed slice system-modprobe.slice.
[ OK ] Stopped target Bluetooth.
...
[ OK ] Reached target Shutdown.
[ OK ] Reached target Final Step.
[ OK ] Finished Power-Off.
[ OK ] Reached target Power-Off.
[ 1195.829009] Local MAC: 82:4c:21:62:f5:35
[ 1195.834186] set rk809 rtc alarm!
[ 1195.837515] reboot: Power down
等待60秒后,主板会开机。
默认系统开机会运行/etc/rc.local脚本,将要开机执行的程序放到该脚本中即可。
通过修改/sys/class/backlight/backlight/brightness的值,实现背光的调节,范围取0-255,值越大,亮度越高。
设置亮度为100:
root@ido:~# echo 100 > /sys/class/backlight/backlight/brightness
root@ido:~#
使用xrandr工具可以实现屏幕的旋转。
系统启动后,执行xrandr -o normal,inverted,left,right,可以实现临时旋转屏幕方向,其中normal表示顺时针旋转0度,inverted表示顺时针旋转180度,left表示顺时针旋转270度,right表示顺时针旋转90度。
root@ido:~# xrandr -o inverted
修改/etc/default/xrandr启动文件,可以实现永久旋转。
以旋转180度为例:
root@ido:~# cat /etc/default/xrandr
#!/bin/sh
/usr/bin/xrandr -o inverted
root@ido:~#
这样修改后,每次重启设备,桌面将旋转180度。
主板共配置3个按键:
标记 |
名称 |
功能 |
SW1 |
recovery |
用于烧录,或上报KEY_VOLUMEUP |
SW2 |
reset |
硬件复位 |
SW3 |
power_on |
电源键,用于开关机及待机唤醒,或上报KEY_POWER |
主板预留了40Pin的双排针接口,包含一路UART、一路I2C、一路SPI及19个GPIO。
各个Pin的功能定义见下表:
序号 |
定义 |
电平 |
说明 |
1 |
VDD_3V3 |
3.3V |
供电输出3.3V |
2 |
VDD_5V |
5V |
可做5V输入供电,也可输出5V |
3 |
I2C_SDA |
3.3V |
I2C数据信号 |
4 |
VDD_5V |
5V |
可做5V输入供电,也可输出5V |
5 |
I2C_SCL |
3.3V |
I2C时钟信号 |
6 |
GND |
GND |
电源地 |
7 |
GPIO_7 |
3.3V |
gpio编号为23 |
8 |
UART_TXD |
3.3V |
/dev/ttyS0 发送 |
9 |
GND |
GND |
电源地 |
10 |
UART_RXD |
3.3V |
/dev/ttyS0 接收 |
11 |
GPIO_0 |
3.3V |
gpio编号为15 |
12 |
GPIO_1 |
3.3V |
gpio编号为22 |
13 |
GPIO_2 |
3.3V |
gpio编号为20 |
14 |
GND |
GND |
电源地 |
15 |
GPIO_3 |
3.3V |
gpio编号为21 |
16 |
GPIO_4 |
3.3V |
gpio编号为124 |
17 |
VDD_3V3 |
3.3V |
供电输出3.3V |
18 |
GPIO_5 |
3.3V |
gpio编号为125 |
19 |
SPI_MOSI |
3.3V |
SPI数据信号 |
20 |
GND |
GND |
电源地 |
21 |
SPI_MISO |
3.3V |
SPI数据信号 |
22 |
GPIO_6 |
3.3V |
gpio编号为130 |
23 |
SPI_SCLK |
3.3V |
SPI时钟信号 |
24 |
SPI_CS0 |
3.3V |
SPI片选信号0 |
25 |
GND |
GND |
电源地 |
26 |
SPI_CS1 |
3.3V |
SPI片选信号1 |
27 |
GPIO_30 |
3.3V |
gpio编号为138 |
28 |
GPIO_31 |
3.3V |
gpio编号为139 |
29 |
GPIO_21 |
3.3V |
gpio编号为132 |
30 |
GND |
GND |
电源地 |
31 |
GPIO_22 |
3.3V |
gpio编号为121 |
32 |
GPIO_26 |
3.3V |
gpio编号为120 |
33 |
GPIO_23 |
3.3V |
gpio编号为122 |
34 |
GND |
GND |
电源地 |
35 |
GPIO_24 |
3.3V |
gpio编号为127 |
36 |
GPIO_27 |
3.3V |
gpio编号为123 |
37 |
GPIO_25 |
3.3V |
gpio编号为133 |
38 |
GPIO_28 |
3.3V |
gpio编号为126 |
39 |
GND |
GND |
电源地 |
40 |
GPIO_29 |
3.3V |
gpio编号为131 |
双排针包含一路UART接口,电平类型为TTL电平,系统中对应的设备节点为/dev/ttyS0。
双排针包含一路SPI接口,系统中对应的设备节点为/dev/spidev3.0。
双排针包含一路I2C接口,系统种对应的设备节点为/dev/i2c-2。
双排针共包含19个GPIO接口。
以pin7的GPIO_7为例,对应系统的gpio number 为23,可通过sysctl的方式控制此路GPIO的方向和电平。
输出模式
#导出gpio23
echo 23 > /sys/class/gpio/export
# 设置GPIO方向为输出
echo out > /sys/class/gpio/gpio23/direction
# 设置输出高电平
echo 1 > /sys/class/gpio/gpio23/value
# 设置输出低电平
echo 0 > /sys/class/gpio/gpio23/value
注:输出高指3.3v,输出低指0v。
输入模式
#导出gpio23,如果已经导出过可以不用此操作
echo 23 > /sys/class/gpio/export
# 设置GPIO方向为输入
echo in > /sys/class/gpio/gpio23/direction
# 读取GPIO接口电平
cat /sys/class/gpio/gpio23/value
返回0指输入低电平(0v),返回1指输入高电平(3.3v)。