RS485 透传模式
RS485 透传模式直接传送设备原始字节。4路 USB串口 对应4路独立的 RS485 总线通道。
USB 串口和对应关系
接入开发板USB,会显示6个串口:分别为 2 个SANPO Studio管理口,4 个 RS485 独立串口。Windows 和 Linux 均免驱动。
Windows下4个RS485透传串口统一显示为 SANPO USB2RS485 Port,Linux下为 /dev/ttyACM*。操作系统分配的端口号不保证与开发板丝印顺序一致。首次使用时请一次只连接或测试一路电机,确认每个端口与物理 RS485-1/2/3/4 的对应关系。
数据收发
打开目标 RS485 独立串口,并设置与电机一致的波特率、停止位和校验位。随后发送的每个字节都会直接进入该路 RS485,设备反馈也会从同一个串口原样返回,可以直接使用串口助手软件、Python pyserial 或电机原厂串口上位机。
例如,宇树 GO-M8010 常用 4 Mbps、8-N-1。在十六进制发送模式下可以发送:
FE EE 11 00 00 00 00 00 00 00 00 00 00 00 00 18 7C
正常反馈通常以 FD EE 开头,具体字段和校验应以电机厂家协议为准。
串口参数
独立串口支持 2400~4000000,5000000,6000000,7500000 bit/s、1 或 2 个停止位、无/奇/偶校验和 8 个数据位。打开端口时,操作系统设置的串口参数会在运行时应用到对应的一路 RS485。
字节流和长度
USB CDC 与 RS485 都按字节流工作。一次 write() 可能被 USB 分成多个数据包,一次 read() 也可能得到半帧或多帧。开发板固件不会增加、删除或解释电机协议字节,上位机应根据电机协议的帧头、长度和校验持续组帧。
开发板固件按 RS485 空闲事件提交接收数据,一次连续接收块最多 96 字节;更长的数据流会分块返回。
Python 示例
安装 pyserial 后,可以按照 RS485 原始透传使用说明查看端口并发送原始十六进制数据:
python -m pip install pyserial
python native_rs485_v8.py --list
python native_rs485_v8.py COM8 --baudrate 4000000 --data FEEE11000000000000000000000000187C
Linux 下把 COM8 替换为实际的 /dev/ttyACM*。程序不会增加 SANPO 报文头或 Channel。
宇树 GO-M8010 运动示例见独立 USB2RS485 控制宇树 GM8010。该程序只有明确增加 --enable-motion 后才发送控制命令;首次运行必须空载、小幅测试并保留物理急停手段。
串口助手或电机上位机
在串口助手或支持标准串口的电机上位机中选择 SANPO USB2RS485 Port,设置与设备一致的串口参数,并以十六进制模式直接收发设备原始协议帧。不要选择 SANPO Studio Management Port,也不要添加 RT、Channel 或其他 SANPO 报文头。
常见问题
现象 |
处理方法 |
|---|---|
电脑出现 6 个串口 |
正常:2个管理口,每个对应一颗STM32 MCU;4个独立RS485透传口,对应4路独立的RS485通道 |
独立串口发送后没有反馈 |
检查端口对应关系、串口参数、设备 ID、A/B 接线和供电 |
独立串口返回 |
选到了管理口;RS485 独立串口只返回原始数据 |
返回乱码或长度异常 |
检查波特率、停止位、校验位、数据位和 A/B 接线,并按电机协议处理分包 |
同一路数据偶发交错 |
确认没有同时通过独立串口、管理口、SPI 或离线任务发送 |