Skip to main content

通过 CAN 控制 Synairy 设备

使用 ISO-TP 发送完整命令报文;CMD 和 PAYLOAD 仍查阅产品协议。

接入前确认​

先从具体型号资料取得总线和设备参数。

参数客户需要确认
接口能力该型号支持 Classical CAN、CAN FD,或两者;是否支持通过 CAN 进入 Boot 和升级
总线参数仲裁段速率;CAN FD 还需数据段速率与 BRS 设置;终端电阻和接线要求
设备标识每台设备的节点标识、请求 CAN ID 和响应 CAN ID,以及标准帧或扩展帧类型
承载上限该型号允许的 ISO-TP 报文最大长度、应用响应超时与 OTA 能力

多台设备共线时,各设备必须有不冲突的请求/响应 CAN ID。节点标识与 CAN ID 的设置或出厂分配方法由具体产品接口资料给出;主机不能仅凭设备 UID 推算 CAN ID。

报文如何放入 CAN​

Synairy 原始命令报文

SEQ(1字节) + CMD(1字节) + PAYLOAD(0…N字节) + CRC16(2字节)

CAN / CAN FD 传输

ISO-TP(完整原始命令报文)

主机向设备的请求 CAN ID 发送 ISO-TP 报文,并在该设备的响应 CAN ID 接收 ISO-TP 报文。采用 ISO-TP 普通寻址:地址由这对 CAN ID 确定,数据区不再加 ADDR 字节。每个方向单独配置对应的发送与接收 ID。

CRC16 按通用报文定义计算;CAN 数据区不添加 AF FA + LEN。

原始报文长度ISO-TP 处理客户操作
能放入一帧Single Frame(单帧)交给 ISO-TP 发送;不要把原始报文直接当作完整 CAN 数据区
超过一帧First Frame、Flow Control、Consecutive Frame用 ISO-TP 完成分帧、流控、顺序检查和重组,再解析 Synairy 报文

Classical CAN 单帧数据区最多 8 字节,CAN FD 最多 64 字节;ISO-TP 还会占用部分数据区,因此能否单帧发送应交由 ISO-TP 实现判断。发送端必须遵守接收端的 Flow Control(块大小与最小间隔)。补齐字节如接口要求使用 0x00,补齐不属于原始命令报文。

客户收发步骤​

  1. 按产品接口资料连接 CAN_H、CAN_L、参考地与终端电阻;设置一致的帧类型、总线速率和 CAN FD 参数。
  2. 为目标设备配置 ISO-TP:主机发送 ID 为设备请求 ID,主机接收 ID 为设备响应 ID,使用普通寻址。
  3. 查阅通用命令或对应产品业务命令,填写 CMD、SEQ、PAYLOAD,计算 CRC16,形成原始报文。
  4. 把完整原始报文交给 ISO-TP 发送;收到响应后由 ISO-TP 重组,校验 CRC16、CMD 和 SEQ,再解析 PAYLOAD 首字节 Result 与后续字段。
  5. 等待最终响应或应用超时后再发送下一条请求。若收到 ACCEPTED,继续等待相同 CMD、SEQ 的最终响应;重试沿用完全相同的 CMD、SEQ、PAYLOAD。

ISO-TP 超时表示传输未完成;Synairy 命令超时表示完整报文已发出但业务未得到最终响应。主机需要分别处理两类超时。

示例:读取设备信息​

发送 0x01 Get Info,SEQ=0x01,请求 PAYLOAD 为空:

请求的原始报文

字段

SEQ 01 | CMD 01 | CRC16 1F 3E

字节

01 01 1F 3E

CRC16=0x3E1F,按小端发送。

在 Classical CAN 的 ISO-TP 单帧中,数据区可为 04 01 01 1F 3E:第一个 04 是 ISO-TP 单帧长度,后面四字节才是 Synairy 原始报文。CAN ID 使用目标设备的请求 ID。若接口要求补齐到 8 字节,则尾部补 00 00 00。

Get Info 成功响应的 PAYLOAD 为 19 字节,连同 SEQ、CMD、CRC16 共 23 字节。在 Classical CAN 上,ISO-TP 会将它拆成多帧;主机必须完成流控与重组后,再按获取设备信息的字段表读取版本、模式和 MaxPayload。CAN FD 是否单帧由实际数据长度、DLC 和 ISO-TP 编码决定。

多设备和升级​

多设备使用各自的请求/响应 CAN ID。一条总线上一次只保留一笔未完成请求;业务 CMD 不变。

如果型号声明支持 CAN 升级,Boot 与应用应沿用该设备的 CAN ID 和 ISO-TP 接入参数。主机发送 Enter Boot 并等待响应,复位后以 Get Info 确认 Mode=BOOT,再按通用 OTA 命令升级。OTA 数据通常需要 ISO-TP 多帧传输。

本页定义协议接入方式,不代表现有每个 Synairy 型号都已实现 CAN 或 CAN FD。具体型号是否支持、实际 ID、速率和 Boot 能力,必须以该型号发布的接口资料为准。

ISO-TP 传输规则参照 ISO 15765-2 实现说明;产品型号的接口参数以正式产品资料为准。