接口定义
整机接口定义
LPB3588提供了丰富的接口,具体如下图:
丝印 | 设备节点 | 备注 |
---|---|---|
USB1 | Type-A USB3.0 host | |
USB2 | Type-A USB3.0 host | |
USB3 | Type-A USB3.0 host | |
SYS-CTL | Debug&Key | 产品手册 J22 |
PWR LED | 电源灯 | |
4G LED | 4G灯 4G/5G 拨号 | |
SYS LED | work1 | 系统灯 |
STA LED | work2 | STA灯 |
RS485 | /dev/ttyS0 | 串口,默认波特率9600 |
UART1 | /dev/ttyS7 | 串口,默认波特率9600 |
UART2 | /dev/ttyS6 | 串口,默认波特率9600 |
CAN1 | can1 | CAN总线 |
CAN2 | can0 | CAN总线 |
CTL1 | gpio40 | GPIO,输出模式 |
CTL2 | gpio39 | GPIO,输出模式 |
CTL3 | gpio503 | GPIO,输出模式 |
CTL4 | gpio502 | GPIO,输出模式 |
D/I IN1 | gpio36 | GPIO,输入模式,默认为1,输入5~36V为0 |
D/I IN2 | gpio34 | GPIO,输入模式,默认为1,输入5~36V为0 |
D/I IN3 | gpio41 | GPIO,输入模式,默认为1,输入5~36V为0 |
D/I IN4 | gpio42 | GPIO,输入模式,默认为1,输入5~36V为0 |
A/I IN1 | in_voltage7_raw | 模拟输入,用于接一些工业传感器 |
A/I IN2 | in_voltage6_raw | 模拟输入,用于接一些工业传感器 |
A/I IN3 | in_voltage2_raw | 模拟输入,用于接一些工业传感器 |
A/I IN4 | in_voltage4_raw | 模拟输入,用于接一些工业传感器 |
COM1 | /dev/ttysWK2 | 串口RS232,默认波特率9600 |
COM2 | /dev/ttysWK0 | 串口RS232,默认波特率9600 |
COM3 | /dev/ttysWK1 | 串口RS232,默认波特率9600 |
COM4 | /dev/ttysWK3 | 串口RS232,默认波特率9600 |
DP | card0-DP-2 | DP输出,最高支持4K@60fps |
HDMIIN | /dev/video0 | HDMI输入,最高支持4K@30fps的分辨率 |
HDMI1 | card0-HDMI-A-1 | HDMI输出,最高支持4K@60fps |
HDMI2 | card0-HDMI-A-2 | HDMI输出,最高支持4K@60fps |
HDMI3 | card0-DSI-1 | HDMI输出,最高支持4K@30fps |
Type-C | 可转接USB和DP信号 | |
MIC | 输入声音,录制音频文件 | |
LINE | 播放音频文件 | |
ETH0 | enP2p33s0 | 千兆网卡 |
ETH1 | eth0 | 千兆网卡 |
WIFI | wlan0 | 2.4/5GHz |
RTC | /dev/rtc0 | RTC时钟 |
UART 使用
串口是一种常见的通信接口,用于与外部设备进行串行通信。LPB3588提供了多个串口,分别对应不同的设备节点。在使用串口之前,需要确保串口连接正确,以及波特率和其他参数设置一致。
RS485设备文件为/dev/ttyS0
。在开发板设备上运行下列命令:
发送字符串到主机
echo "neardi RS485 test..." > /dev/ttyS0
主机中的串口终端即可接收到字符串 “neardi RS485 test…” 开发板接收数据:
接收主机发送的字符串
cat /dev/ttyS0
同样,UART1和UART2设备文件分别是/dev/ttyS7
和/dev/ttyS6
。
CAN 使用
CAN是一种总线标准,用于实现设备之间的通信。LPB3588提供了两个CAN接口,分别对应can0和can1设备。在使用CAN之前,需要确保CAN设备连接正确,以及波特率和其他参数设置一致。 默认固件包含使用 candump 和 cansend 工具进行收发报文测试即可,若没有工具可以在 github 下载。
#在收发端关闭can0设备
ip link set can0 down
#在收发端设置比特率
ip link set can0 up type can bitrate 1000000 dbitrate 3000000 fd on
#在接收端执行candump,阻塞等待报文
candump can0
#在发送端执行cansend,发送报文
cansend can0 123#1122334455667788
更多指令
1、 ip link set canX down //关闭can设备;
2、 ip link set canX up //开启can设备;
3、 ip -details link show canX //显示can设备详细信息;
4、 candump canX //接收can总线发来数据;
5、 ifconfig canX down //关闭can设备,以便配置;
6、 ip link set canX up type can bitrate 1000000 //设置can波特率
7、 conconfig canX bitrate + 波特率;
8、 canconfig canX start //启动can设备;
9、 canconfig canX ctrlmode loopback on //回环测试;
10、canconfig canX restart // 重启can设备;
11、canconfig canX stop //停止can设备;
12、canecho canX //查看can设备总线状态;
13、cansend canX --identifier=ID+数据 //发送数据;
14、candump canX --filter=ID:mask //使用滤波器接收ID匹配的数据
CTL 使用
控制CTL1为例:
echo 39 > /sys/class/gpio/export;
echo out > /sys/class/gpio/gpio39/direction;
#拉高
echo 1 > /sys/class/gpio/gpio39/value;
#拉低
echo 0 > /sys/class/gpio/gpio39/value;
D/I 使用
读取D/I IN1为例:
echo 36 > /sys/class/gpio/export;
echo in > /sys/class/gpio/gpio36/direction;
#读取
cat /sys/class/gpio/gpio36/value;
默认为1,输入5~36V为0。
A/I 使用
模拟输入是一种可以检测外部设备的电压或电流的接口,LPB3588提供了四路模拟输入,分别对应不同的设备节点。在使用模拟输入之前,需要确保外部设备连接正确,以及电压或电流的范围符合要求。
模拟输入测试,使用以下命令可以读取模拟输入的值:
电压值(V)=15/4096 * 读值;
电流值(MA)=30/4096 * 读值;
#读取A/I IN1值
cat /sys/devices/platform/fec10000.saradc/iio:device0/in_voltage7_raw
#读取A/I IN2值
cat /sys/devices/platform/fec10000.saradc/iio:device0/in_voltage6_raw
#读取A/I IN3值
cat /sys/devices/platform/fec10000.saradc/iio:device0/in_voltage2_raw
#读取A/I IN4值
cat /sys/devices/platform/fec10000.saradc/iio:device0/in_voltage4_raw
COM 使用
COM使用方法与RS485、UART1和UART2类似,只需替换设备文件即可。
HDMI/DP 说明
xrandx命令可以查看当前HDMI连接:
neardi@3588:~$ xrandr
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 16384 x 16384
HDMI-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
1920x1080 60.00*+ 60.00 50.00 30.00 24.00
4096x2160 24.00
3840x2160 30.00 25.00 24.00
1920x1080i 60.00 50.00
1280x720 60.00 60.00 50.00 50.00 30.00 24.00
720x576 50.00 50.00
720x480 59.94 59.94 59.94
HDMI-2 disconnected (normal left inverted right x axis y axis)
DSI-1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
1920x1080 60.00*+
DP-1 disconnected (normal left inverted right x axis y axis)
完整节点:
HDMI1:/sys/devices/platform/display-subsystem/drm/card0/card0-HDMI-A-1/
HDMI2:/sys/devices/platform/display-subsystem/drm/card0/card0-HDMI-A-2/
HDMI3:/sys/devices/platform/display-subsystem/drm/card0/card0-DSI-1/
DP:/sys/devices/platform/display-subsystem/drm/card0/card0-DP-2/
HDMIIN 使用
HDMI输入是一种可以接收外部HDMI信号,并转换为MIPI信号的接口,LPB3588提供了一路HDMI输入。在使用HDMI输入之前,需要确保HDMI设备连接正确,以及分辨率和帧率设置一致。
参考《HDMIIN》
ETH 说明
可以通过调试串口、ssh或者adb来查看IP地址,例如:
neardi@3588:~$ ifconfig -a
enP2p33s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.65 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::7df7:e74d:497e:345d prefixlen 64 scopeid 0x20<link>
ether 62:ea:fb:ca:95:e7 txqueuelen 1000 (Ethernet)
RX packets 2548 bytes 210938 (210.9 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 338 bytes 46899 (46.8 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 140 base 0xd000
Wi-Fi 说明
通过如下命令查看当前Wi-Fi型号:
cat /sys/bus/sdio/devices/mmc2\:0001\:1/vendor
cat /sys/bus/sdio/devices/mmc2\:0001\:1/device
0x02d00xaae8是AP6275S
,0x024c0xb852是RTL8852
LED 说明
完整节点:
SYS LED:cat /sys/devices/platform/leds/leds/work1/brightness
STA LED:cat /sys/devices/platform/leds/leds/work2/brightness
MIC 使用
使用以下命令可以录制音频文件,支持wav、mp3等格式。
录制双声道的16位小端格式的音频,采样率为48000Hz,然后保存为001.wav文件。
arecord -Dhw:0,0 -r48000 -f S16_LE -c2 > 001.wav
• -Dhw:0,0 指定了录音设备,0,0 是card 0 device 0,也就是第一个声卡的第一个设备。
• -r48000 指定了采样率,单位是Hz,48000表示每秒采样48000次。
• -f S16_LE 指定了采样格式,S16_LE表示有符号的16位小端格式,也就是每个采样点占用2个字节,低位在前,高位在后。
• -c2 指定了声道数,2表示双声道,也就是立体声。
• > 001.wav 指定了输出文件,>表示重定向标准输出到文件,001.wav表示文件名,wav表示文件格式。
LINE 使用
使用第一个声卡的第一个设备播放001.wav文件。
aplay -D hw:0,0 001.wav
• -D hw:0,0 指定了播放设备,hw:0,0 是card 0 device 0,也就是第一个声卡的第一个设备。
• 001.wav 指定了音频文件,wav表示文件格式,001表示文件名。
RTC时钟
LPB3588使用HYM8563作为RTC时钟。
如何修改RTC时钟为’2018-11-11 12:00:00’
#关闭网络时间协议(NTP)的服务,使得RTC时钟不受网络时间的影响
timedatectl set-ntp false
#设置RTC时钟的时间为2018年11月11日12时00分00秒
timedatectl set-time '2018-11-11 12:00:00'
#将RTC时钟的时间同步到系统时钟,使得系统时钟和RTC时钟保持一致,可加在/etc/init.d/rockchip.sh中
hwclock --hctosys