通信参数配置
V6 的 USB 串口协议和 SPI 协议使用固件中保存的 CAN、CAN FD 和 RS485 参数;Linux SocketCAN 使用 Linux 当前设置的参数。两者配置方式不同。
接入方式 |
配置位置 |
重新上电后 |
|---|---|---|
USB 串口 / SPI |
通过 USB 串口发送 |
已保存参数继续生效 |
SocketCAN |
Linux |
需要重新配置 |
发送 AT+ 命令时使用文本模式,并把发送结束符设置为 CRLF。不要把字符 \r\n 当作普通文本发送。
出厂默认值
项目 |
默认值 |
|---|---|
经典 CAN |
1 Mbps |
CAN FD 仲裁段 |
1 Mbps |
CAN FD 数据段 |
5 Mbps |
RS485 |
4 Mbps、1 个停止位、无校验、8 个数据位 |
SPI |
SHORT,23 字节 |
RS485 RAW 回包 |
关闭 |
RS485 RAW 目标 |
|
设置 CAN 和 CAN FD
AT+SETFDCAN=<仲裁段波特率>,<数据段波特率>
第一个参数同时用于经典 CAN 和 CAN FD 仲裁段;第二个参数只用于 CAN FD 数据段。
参数 |
支持值 |
|---|---|
仲裁段 |
|
数据段 |
|
四档 CAN FD 数据段波特率都使用精确位时序,误差为 0%。通常优先使用设备出厂默认的 5 Mbps;只有总线上的全部设备都使用相同设置时再切换到其他档位。
例如,设置经典 CAN/CAN FD 仲裁段为 1 Mbps、CAN FD 数据段为 5 Mbps:
AT+SETFDCAN=1000000,5000000
成功返回:
OK
查询当前值:
AT+SETFDCAN?
示例返回:
FDCAN:1000000,5000000
设置会同时应用到当前 MCU 的两路 CAN/CAN FD,并保存到 Flash。
设置 RS485
AT+SETRS485=<波特率>,<停止位>,<校验>,<数据位>
参数 |
支持值 |
|---|---|
波特率 |
|
停止位 |
|
校验 |
|
数据位 |
|
例如,设置为宇树电机常用的 4 Mbps、8-N-1:
AT+SETRS485=4000000,1,0,8
查询当前值:
AT+SETRS485?
示例返回:
RS485:4000000,1,0,8
设置会同时应用到当前 MCU 的两路 RS485,并保存到 Flash。
设置 SPI 长度
AT+SPIMODE?
AT+SPIMODE=SHORT
AT+SPIMODE=LONG
模式 |
每次 SPI 传输 |
用途 |
|---|---|---|
SHORT |
23 字节 |
经典 CAN;最多 18 字节 RS485 数据 |
LONG |
73 字节 |
经典 CAN、CAN FD;最多 68 字节 RS485 数据 |
切换成功后返回 OK,并保存到 Flash。SPI 主机应停止当前传输,等待至少 10 ms,再使用新的固定长度通信。
SocketCAN 参数
SocketCAN 由 Linux 配置。经典 CAN 示例:
sudo ip link set can0 down
sudo ip link set can0 type can bitrate 1000000
sudo ip link set can0 up
CAN FD 示例:
sudo ip link set can0 down
sudo ip link set can0 type can bitrate 1000000 dbitrate 5000000 fd on
sudo ip link set can0 up
查看结果:
ip -details link show can0
SocketCAN、USB 串口和 SPI 最终使用同一组物理 CAN 控制器。如果多种入口同时重新配置同一接口,最后一次设置决定实际总线参数。正式控制时,建议同一条 CAN 总线只使用一种上位机入口。
恢复通信默认值
AT+CFGERASE
成功后返回 OK,并恢复本页列出的出厂默认通信参数。该命令会清除已保存的 CAN/CAN FD、RS485、SPI 模式、RAW 目标和上电自动执行设置,但不会删除离线批次内容,也不会删除出厂识别信息。
如果多次修改配置后返回 ERR,5,也可以使用该命令清理通信配置区,然后重新设置需要的参数。
常见问题
现象 |
处理方法 |
|---|---|
修改电脑端 USB 串口波特率后,总线速度没有变化 |
这是正常现象;USB 是虚拟串口,请使用本页的 |
设置命令没有返回 |
确认使用文本发送,并以 |
设置返回 |
检查参数数量和取值范围 |
设置返回 |
配置区空间不足;执行 |
SocketCAN 重插后不能通信 |
重新执行 |