• CAN通信


    CAN通信

    11898协议

    ISO 11898-1:2015 协议详细定义了CAN网络报文的格式,包含了传统CAN与CANFD帧格式。

    边界条件

    1. 速率最大1Mbit/s
    2. 通信长度40米
    3. 终端电阻120欧,防止反射。
    4. 32个节点

    物理构成

    在这里插入图片描述

    控制器

    如果需要接受大量数据,则需要带有缓存,否则不需要。

    收发器
    1. 作用为了防止高电压破坏MCU芯片。
    2. 低速率0~125k,不需要终端电阻。隐性位:CANL比CANH高5V,显性位:CANH比CANL高2V。
    3. 高速率0~1M,需要终端电阻。隐形位:CANH和CANL电位相同,显性位:CANH比CANL高2V。
    4. 抗干扰能力:8kv esd保护。推荐增加共模扼流圈。
    总线逻辑

    隐性电平为1,显性电平为2,多节点同时发送时,遵行线与逻辑。

    通讯

    1. 去中心化,分布式原则
    2. 事件驱动(时间触发机制)
    3. 通信矩阵

    帧格式

    传统帧格式

    1位sof:网络节点同步。

    11位id:数字越低优先级越高。

    1位rtr:远程帧, 远程传输请求,该标志用于区分数据帧0还是远程帧1报文。数据帧优先级高于远程帧。

    1位ide:扩展帧标识符,扩展帧的id可以有29位,同一个网络,标准帧和扩展帧只有一个。

    1位r:传统扩展帧里面的保留位。

    4位dlc:规定数据场长度,数据最大8个字节。

    16位crc:校验场计算sof到dlc数据,15位校验位+1位界定符。

    2位ack:应答位,用于指示CAN报文已经被目标节点接收,收到显性位验证。

    7位eof:结束标志,7位隐性位。

    3位itm:帧间隔,等待帧间隔后才能发消息。

    在这里插入图片描述

    扩展帧格式

    在这里插入图片描述

    扩展帧标识符扩展了18位,可以容纳更多的设备。
    CAN FD帧和CAN帧:两种帧的相同与区别

    总线同步

    首次同步sof发起

    NRZ编码,没有时钟线

    重同步:位填充机制,不予许发送5个相同的电平,会在中间插入1个相反的电平。利用隐性位到显性位的边沿进行重同步。

    总线竞争

    多个节点在同一个时间点发消息的问题

    通过id进行竞争,每个节点在进行发送时会对总线电平进行监控,如果自己id号是1隐性,而总线是0显性,说明自己优先级不够,如果检测到总线信号和自己id号相同则获得发送权,这是能够实现通过id来进行竞争的原因

    数据保护

    物理上emc

    NRZ编码减少干扰发射

    双绞线canh canl差分信号消除共模干扰

    终端电阻消除电缆高频传输时传输末端的反射

    总线逻辑错误检测机制

    位填充stuffcheck

    帧格式formcheck(crc,ack,eof)

    显性隐形bit monitoring

    错误处理机制

    错误帧,发6个显性电平,总线最多会产生12个显性电平,监测到总线恢复到隐性电平后,发送8个位隐性电平代表错误结束。

    错误跟踪机制

    鉴别是否是永久性的错误,如果错误太多会进入总线丢失状态。只有重启或接收128*11位的隐性位之后,才回到总线工作。发送错误计算器,接收错误计算器。

    成功发送一条消息,计数器减一

    发送错误计算器,检测到错误,如果是发送方,+8

  • 相关阅读:
    Redis与分布式-分布式锁
    UNIX环境高级编程 第2章 UNIX标准化及实现
    HTTP/3 ,它来了。
    C语言编程作业参考答案
    如何在没有第三方.NET库源码的情况,调试第三库代码?
    如何调试前端应用程序?
    开放服务担心安全?vx-api-gateway值得一用
    Java Web之Servlet技术
    redis手动搭建cluster(集群)
    【AI领域+餐饮】| 论ChatGPT在餐饮行业的应用展望
  • 原文地址:https://blog.csdn.net/qq_21835111/article/details/126815781