CAN自定义协议
本标准旨在为基于 CAN FD 总线的嵌入式系统提供一套可复用的应用层协议设计指南。适用于主从架构或多节点分布式系统中,对数据吞吐量、实时性、可扩展性有明确要求的场景。
1. 范围与目的
本标准规定了基于 CAN FD 物理层与数据链路层的应用层协议设计方法,包括:
- 协议架构与分层
- 标识符分配策略
- 数据帧格式
- 时间同步机制
- 传输层协议(分片与重组)
- 网络管理
- 错误处理与诊断
- 测试与验证要求
2. 规范性引用文件
- ISO 11898-1:2015(CAN FD 数据链路层)
- CiA 601(CAN FD 应用层设计建议)
3. 术语与定义
| 术语 | 定义 |
|---|---|
| 上行 | 从设备端(MCU、传感器)发往主机端(Linux、PC)的数据流 |
| 下行 | 从主机端发往设备端的控制或配置数据流 |
| seq | 同步序号,用于关联同一周期或同一事务的多帧数据 |
| 锚点 | 外部同步事件(如FSIN、软件定时器)产生的时刻标记 |
| 分片 | 将超过单帧最大载荷的业务数据拆分为多帧发送 |
| 通用头 | 所有业务帧共用的固定头部,包含版本、类型、序号等 |
4. 协议设计原则
- 分层清晰:协议应至少划分为“帧格式层”与“业务载荷层”,便于维护与扩展。
- 时间确定性:关键数据应携带硬件时间戳,时间源统一为单调时钟(us级)。
- 可扩展性:通过版本号、保留字段、消息类型扩展机制支持未来升级。
- 紧凑性:充分利用 CAN FD 64 字节数据场,避免带宽浪费。
- 容错性