CAN总线仲裁示意图

来源:互联网 发布:mac上文档是什么格式 编辑:程序博客网 时间:2024/05/01 23:21
      最近因为项目需要,开始进行STM32 CAN总线的嵌入式程序设计,关于CAN总线,也是慢慢的积累。
      关于CAN地址(标识符)问题,基本上清楚了,CAN本身通过标识符来确定每个CAN节点,总线上标识符不能有相同的。
      CAN是多主机的方式,所有节点都可以发送数据,发送时,标识符是本机的标识符,发送数据为群发方式,广播方式,具体数据,所有CAN节点都可以同时得到,但可以每个CAN节点可以设置CAN标识符滤波,可设置只接收需要的节点的数据,设置后由硬件完成筛选,这样优于485单主机的主从传输总线传输方式,物理上采用差分信号传输。
      因为CAN收发器的特点,适合多主机的发送方式,多主机是否可以同时发送数据呢?是可以的,因为CAN 总线相当于一个“线与”的结构,显性(逻辑0)与隐性(逻辑1)相遇,变为显性(逻辑0),就像孙悟空说的,雄的与雌的,雌的见了雄的,就不灵了。其实就是逻辑运算里的:0&0=0, 0&1=0,这里就是显性为主。所有CAN节点相当于一个个与门,低电平(逻辑0)有效,一个拉低,所有全低。
      总线仲裁的示意图(标准帧格式)如下:
  






      因此得到标识符是有优先级的,因为高位在前,低位在后,CAN标识符组成的数值越小优先级越高。
0 0