RS485 / CAN
说明 RS485 和 CAN 接口的 J10 接线、波特率和收发测试。
J10 引脚定义
J10 是板边的绿色 10Pin 接线端子,主要引出 1 路 RS485 和 2 路 CAN,同时也包含 GND 以及 3.3V / 5V 对外供电脚。

GPIO4_C7 用来控制 J10 上 3.3V / 5V 对外供电开关,在 Linux GPIO 编号里对应 GPIO151。拉高打开供电,拉低关闭供电。
echo 151 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio151/direction
# 拉高打开
echo 1 > /sys/class/gpio/gpio151/value
# 拉低关闭
echo 0 > /sys/class/gpio/gpio151/value
更多接口说明可以查看完整产品手册,文件在网盘分享里的 10-产品手册:
百度网盘
CAN FD
Neardi Pi 3 的 CAN 接口基于 RK3576 CAN 控制器,支持常用 CAN FD 收发流程。
RS485 / CAN 局部参考图:

RK3576 有两个 CAN 控制器,下面以 can0 为例:
# 修改速率前先关闭 can0
sudo ip link set can0 down
# 仲裁段速率 500Kbps
# 数据段速率 2Mbps
sudo ip link set can0 type can bitrate 500000 sample-point 0.8 dbitrate 2000000 sample-point 0.8 fd on
# 启动 can0
sudo ip link set can0 up
# 设置发送队列长度
echo 4096 | sudo tee /sys/class/net/can0/tx_queue_len
# 接收 CAN 数据
candump can0
# 发送 CAN FD 数据
cansend can0 123##1122334455667788
RS485
RS485 使用手动方向控制,发送或接收前需要先设置方向 GPIO。
下面以 /dev/ttyS5 为例:
# 导出方向控制 GPIO
echo 136 | sudo tee /sys/class/gpio/export
echo out | sudo tee /sys/class/gpio/gpio136/direction
# 发送模式
echo 1 | sudo tee /sys/class/gpio/gpio136/value
# 接收模式
echo 0 | sudo tee /sys/class/gpio/gpio136/value
# 设置串口参数
stty -F /dev/ttyS5 ispeed 9600 ospeed 9600 cs8 -cstopb -parenb min 1 time 1
# 发送数据
echo "test" > /dev/ttyS5
# 接收数据
cat /dev/ttyS5
如果收发不正常,先检查 A/B 线序、GND 是否共地,以及方向 GPIO 是否设置正确。