本文主要讲的是自己对于 CAN ID 的理解,希望对需要的人有帮助,本文以通俗的方式来理解,不涉及到具体 CAN 通信。
在接触 CAN 之前,应该接触过 IIC 通信,在 IIC 通信中,在同一条 IIC 通信总线上每个 device 有唯一的 ID,后续对于 device 的操作都是通过唯一的 ID 号来区分。而 CAN ID 虽然也叫 ID,但是意义却不一样,每个 CAN device 可以接收和发送多条不同的 ID 报文。
比如在一条 CAN 总线上有三个 device,叫做 A,B,C 吧。
A device 有接收 ID:202,302;发送 ID:101,102;
B device 有接收 ID:101,303;发送 ID:201,202;
C device 有接收 ID:101,102,201;发送 ID:302,303;
如果 A device 发送了 ID 为 101 的一条报文,因为 B device 和 C device 都有接收为 101 的 ID,那么 B device 和 C device 都可以接收到这条报文。
如果 A device 发送了 ID 为 102 的一条报文,因为只有 C device 都有接收为 102 的 ID,那么只有 C device 可以接收到这条报文。
如果 B device 发送了 ID 为 202 的一条报文,因为只有 A device 都有接收为 202 的 ID,那么只有 A device 可以接收到这条报文。
可以看出,CAN ID 其实是个报文过滤器,当总线上报文的 ID 和自己接收的 ID 有相匹配的时候,就可以接收相应的报文。
CAN 中的 ID 是为了定义相应的报文的含义,每个 ID 对应有自己的具体含义。
比如,101 为电压信号,201 为电流信号,这样当 A device 要发送电压信号时候,就用 101 ID 的报文,B 和 C device 接收到 101 ID 的报文之后,知道这是电压信号。