can总线理解


CAN2.0B

  • 数据传输格式

    1. 标准帧格式

      标识符为11位,数据最多为8个字节(可以比它少),一帧为:SOF+ID+RTR+r0+DLC+Data+CRC+CRCDel+ACK+ACKDel+EOF=1+11+1+1+1+4+(0~8)*8+15+1+1+1+7=44~108位

    1. 扩展帧格式

      标识符为29位,数据最多为8个字节(可以比它少),一帧为:SOF+ID+RTR+r0+DLC+Data+CRC+CRCDel+ACK+ACKDel+EOF=1+29+1+1+1+4+(0~8)*8+15+1+1+1+7=62~126位

  • 标识符(ID)

    发送数据的结点在发送数据时必然携带本发送站点的ID,即标识符

    通常来书,标识符有足够的长度,可以携带包括站点信息在内的很多信息,因此一般它还用于其他的功能,比如说。。。

    1. 携带数据节点的信息,比如说数据类型等
    2. 指定其他可以接收数据的接收点(可以通过设置后面的过滤器和屏蔽器来选择其他节点是否接收特定ID对应节点发送的数据)产生相应的动作,比如说将反馈信息回传给主节点等
  • 过滤器(Filter)

    可以通过设置过滤器的各个位,判断是否接收特定标号(ID)对应节点的信息,相当于硬件滤波

    设置某接收滤波寄存器00000000001(11 位),接收屏蔽寄存器 11111111101(11 位),则该对组合会拒绝接收 0000000001100000000001 之外所有的标识符对应的 CAN 帧,因为屏蔽器规定第二位(为0)以外的所有标识符位要严格匹配(与滤波器值一致),第二位的滤波器值和收到的 CAN 标识符第二位值是否一致都可以。

  • 屏蔽器(Mask)

    可以设置让接收器过滤掉某一位的ID,即对ID的该位不予考虑,之与是1还是0时屏蔽,不同的芯片标准不一样,但是原理都是一样的

    有些芯片需要设置多个过滤器或者屏蔽器,这是为了从硬件角度提升效率,减少CPU的使用率

  • 错误

    CAN总线提供了很多错误提示,具体的话随便上网找一下=。=

你可能感兴趣的:(杂)