# RS485 原始数据透传 原始数据透传适合直接发送不带 SANPO 封装的 RS485 数据。开启 RAW 回包后,电脑发出的设备指令会原样送到 RS485,总线反馈也会原样返回电脑,不需要增加 SANPO `RT` 帧头。 > 连续高速实时控制请使用 [SANPO USB 转 RS485](usb_rs485)封装协议。 ## 连接和通信参数 完整开发板连接电脑后通常会出现两个 USB 串口,每个串口对应一颗 MCU 和两路 RS485。操作系统分配的 `COM` 或 `/dev/ttyACM*` 编号不保证与开发板丝印顺序一致,首次使用时建议只连接一个设备确认对应关系。 V6 出厂默认 RS485 参数为 4 Mbps、1 个停止位、无校验、8 个数据位。USB 串口软件中选择的波特率不会修改 RS485 总线参数;如需调整,请先发送: ```text AT+SETRS485=<波特率>,<停止位>,<校验>,<数据位> ``` 详细取值见 [通信参数配置](baudrate_config)。 ## 开启原始回包 先使用串口工具按文本发送以下命令,并把结束符设置为 `CRLF`: ```text AT+RS485RAW=1 ``` 正常返回: ```text OK ``` 随后可以关闭当前配置程序,再使用需要发送原始数据的上位机打开同一个端口。RAW 状态在关闭串口后仍然保持,但开发板重新上电后会恢复为关闭。 完成原始数据调试后,可以发送: ```text AT+RS485RAW=0 ``` 关闭 RAW 回包后,RS485 反馈会重新使用带 Channel 的 SANPO `RT` 格式返回。 ## 选择目标接口 RAW 数据本身没有 Channel,可以在进入透传前设置目标: ```text AT+RS485RAWCH=<0~4> ``` | 设置值 | 当前 USB 串口对应的发送目标 | | --- | --- | | `0` | 当前 MCU 的两路 RS485 | | `1` 或 `3` | 当前 MCU 的第一路 RS485 | | `2` 或 `4` | 当前 MCU 的第二路 RS485 | 查询当前值: ```text AT+RS485RAWCH? ``` 例如只向当前 MCU 的第一路发送: ```text AT+RS485RAWCH=1 ``` 目标通道会保存到 Flash;`AT+RS485RAW=1` 本身不会保存,重新上电后 RAW 回包仍会关闭。 ## 宇树 GO-M8010 测试 开启 RAW 回包并选择正确通道后,在十六进制发送模式下发送宇树电机原始指令: ```text FE EE 11 00 00 00 00 00 00 00 00 00 00 00 00 18 7C ``` 正常情况下会收到以 `FD EE` 开头的电机反馈。具体字段和校验应以电机厂家的协议说明为准。 发送原始二进制数据时不要附加 SANPO `RT` 帧头,也不要由串口软件自动添加 `0D 0A`。 ## 使用限制 - RAW 回包不包含 Channel。若两路 RS485 同时返回数据,上位机无法仅凭回包判断来源。 - 建议将 `AT+RS485RAWCH` 固定到单路接口;需要同时管理两路时,优先使用 [SANPO USB 转 RS485](usb_rs485)封装协议。 - 固件按串口空闲时间划分收到的数据块。上位机仍应按照电机协议的帧头、长度和校验进行拆包。 - 一次连续接收的数据最多保留 96 字节;较长协议应由上位机支持分段重组。 ## 常见问题 | 现象 | 处理方法 | | --- | --- | | 上位机能发送但无法识别回包 | 确认已执行 `AT+RS485RAW=1`,并选择了正确 USB 串口 | | 两路接口都收到指令 | `AT+RS485RAWCH` 当前为 `0`;设置为具体通道 | | 返回数据带 `52 54` 帧头 | 当前仍为 SANPO `RT` 回包;开启 RAW 回包 | | 返回乱码或长度异常 | 检查 RS485 波特率、停止位、校验位、数据位和 A/B 接线 | | 重新上电后又出现 `RT` 回包 | 正常行为;每次重新上电后需要重新发送 `AT+RS485RAW=1` |