码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • CAN通信


    CAN通信

    文章目录

      • CAN通信
        • 11898协议
        • 边界条件
        • 物理构成
          • 图
          • 控制器
          • 收发器
          • 总线逻辑
        • 通讯
        • 帧格式
          • 传统帧格式
          • 扩展帧格式
        • 总线同步
        • 总线竞争
          • 多个节点在同一个时间点发消息的问题
        • 数据保护
          • 物理上emc
          • 总线逻辑错误检测机制
          • 错误处理机制
          • 错误跟踪机制

    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

  • 相关阅读:
    【Java校招面试】实战面经(八)
    spring切面编程 之 注解实战
    隆云通磁吸式温度传感器
    JavaSE 第六章 面向对象基础-中(继承)
    【云上探索实验室】编程范式变革进行时——CodeWhisperer实践全流程及测评分析报告
    Linux新建用户、删除用户以及用户之间的切换
    07-图4 哈利·波特的考试
    手机移动端ui前端在线点餐美食欧米香APP的设计与制作
    单关系查询到自然链接,再到joinon
    记一次struct2漏洞获取服务器
  • 原文地址:https://blog.csdn.net/qq_21835111/article/details/126815781
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号