1.通信机制

  • 发送报文。 1.首先检测Bus状态,空闲 则发送 报文且回读

        2.线与机制,若有两个节点同时发报文

         报文结构:

         通过ID进行仲裁(规则判定),若ID值小则0位越展示在前面。如:

         0001 比1000 小 则0001中  显性位将1000覆盖    

题目:如有如下节点发送报文,看ID

A:5          5

B:   7

C:    3    3

D:      6        6

发送流程:5先发出,下一步是7和3,由于3小则3先发出;

     后续则是6和7,6小则6先发  按照此逻辑总线的报文内容依次:5363567

例2:

A:2   1

B:1  

C:3

BUS:A节点先进入,按照ID小的原则排序 应该是 123 但由于A节点先进入到寄存器,所以2先发

2131

  • 报文的接收  节点只会接收和自己相关性的内容,由报文ID控制。相同ID则接收 不相同的则过滤。编码采用NRZ编码,不适用曼彻斯特编码

   NRZ编码:可以使报文紧凑。0是低  1是高  (0是显性位  2v)

曼彻斯特编码:0是上升沿  1是下降沿  。优点:可以位同步,定时更准确

     如:0110

NRZ与位填充:

  NRZ编码沿比较少  则定时不精准,需要用位填充来补短板

CAN总线需要 发连续5个相同位 补一个极性相反位

收连续5个相同位  去 一个极性相反位

2.CAN帧类型

  数据帧【重点】分为 标准帧 和 扩展帧

标准帧:

  远程帧:

SOF(Start of Frame,帧起始)

SOF是数据帧传输的起始位。发送方(sender)会发送一个显性电平作为SOF,由于总线空闲时总线会保持隐性电平,因此SOF发出后会产生一个跳变沿用于整个CAN网络的时间同步。为了在帧传输期间保持与发送方的同步,接收方会在所有隐性电平到显性电平的跳变沿进行是否与发送方保持同步的判断。如果出现偏差,接收方将按照相关相位误差量重新进行同步(重同步)。

ID和RTR(Remote Transmission Request,远程传输请求位)

SOF之后是标识符(ID),用于区分数据帧的优先级,并根据通信矩阵中定义的收发关系为节点中的接收过滤器提供过滤依据。ID之后是RTR位。发送方将其用于通知接收方帧的类型(数据帧或远程帧)。RTR位为显性表示数据帧,隐性则表示远程帧

IDE(Identifier Extension bit,标识符扩展位)

IDE位用于区分标准格式和扩展格式。标准ID有11位,扩展ID有29位,“

ide是1 扩展帧     0是标准帧

DLC(Data Length Code,数据长度代码)

DLC表示数据场中的有效负载的字节数。一个数据帧最多可以传输八个字节。

表示9-15则用8表示

CRC(cyclic redundancy check,循环冗余校验码)和ACK(acknowledge,应答)

校验场使用以界定符(delimiter)为结尾的CRC来保护有效负载。接收方在ACK位做出肯定或否定的应答,ACK位后同样有一位界定符。

CRC   DEL    ACK     ACKDEL    EOF      ITM

15位    1       1              1            7           3

DEL、ACKDEL、EOF、ITM隐性位 固定是1

ACK  对是0  错是1

节点发送 以及节点接收 都会计算CRC 并对比值 

远程帧:无数据 只有ID

错误帧【重点】:

位错误:回读位与发出位不同【发送node可以检测出来】

填充错误:【发送和接收节点都可以检测出来】

ACK错误:发送节点可以检测出来

格式错误:【发送和接收节点都可以检测出来】CRC之后错误

CRC错误:接收节点可以探测到错误

被动错误转化为主动错误:则 REC<128 or TEC<128

主动错误帧:

  错误标志:6个连续的显性位  0-6个错误标志叠加  8个错误界定符

被动错误帧:

  错误标志:6个连续的隐性位  0或6个错误标志叠加  8个错误界定符

超载帧

帧空间

3.错误检测与处理【重点】

4.位定时与同步

  硬同步

  重同步

5.CAN控制器(不讲)

CAN总线数据链路层(一)的更多相关文章

  1. 探讨CAN总线的抗干扰能力

    探讨CAN总线的抗干扰能力 CAN总线经近20年的发展已步入壮年期,它不仅在汽车领域的应用占据一定优势,在其他工业应用上也生机勃勃.枝繁叶茂.究竟是什么原因使它这么成功?当人们发现它的局限性,又面临新 ...

  2. PCIe扫盲——一个Memory Read操作的例子

    连载目录篇:http://blog.chinaaet.com/justlxy/p/5100053251 前面的一系列文章简要地介绍了PCIe总线的结构.事务层.数据链路层和物理层.下面我们用一个简单地 ...

  3. CAN总线(一)

    原文出处:http://www.cnblogs.com/jacklu/p/4729638.html 嵌入式的工程师一般都知道CAN总线广泛应用到汽车中,其实船舰电子设备通信也广泛使用CAN,随着国家对 ...

  4. TCP/IP详解学习笔记(2)-- 数据链路层

    1.概述      数据链路层属于计算机网络的底层,使用的信道主要有点对点信道和广播信道两种类型.      在TCP/IP协议族中,数据链路层主要有三个目的:           1)为IP模块发送 ...

  5. Beaglebone Back学习六(Can总线测试)

    Can总线测试 1 Can总线 控制器局域网 (Controller Area Network, 简称 CAN 或 CANbus)是一种通信协议,其特点是允许网络上的设备直接互相通信,网络上不需要主机 ...

  6. 【单片机通信协议】CAN总线基础知识

    CAN总线基础知识(一) 1.1 CAN总线是什么? CAN(Controller Area Network)是ISO国际标准化的串行通信协议.广泛应用于汽车.船舶等.具有已经被大家认可的高性能和可靠 ...

  7. CAN总线

    1.CAN(controller area network) LAN(local area network)局域网 2.CAN等通信协议的开发,使多种LAN通过网关进行数据交换得以实现.如应用在汽车电 ...

  8. CAN总线与RS485的比较

    CAN总线与RS485的比较 http://blog.csdn.net/reille/article/details/6135546 can总线与485总线有什么区别?  http://blog.16 ...

  9. stm32之CAN总线基础

    can总线协议概述: CAN是Controller Area Network的缩写,由德国博世公司开发:CAN通过ISO11891以及ISO11519进行了标准化:     CAN总线的特点: 1.多 ...

  10. CAN总线基础

    can总线协议: 涵盖了OSI规定的传输层.数据链路层.物理层 物理层: 决定了位编码方式(NRZ编码,6个位插入填充位),位时序(位时序.位的采样).同步方式(根据同步段ss实现同步,并具有再同步功 ...

随机推荐

  1. 牛客小白月赛51-C-E

    C-零一题 题意: 每次可以选择两个相邻且相同的字符,将他们删除,在无数次操作后,字符串的长度变为n,问能否构造出原来的字符串,不能输出-1 题解: 很明显,最后无法再操作时,这个字符串一定是01相交 ...

  2. 第六十七篇:Vue的计算属性

    好家伙, 1.什么是计算属性? 首先它是一种属性,其次他有计算这个特殊的性质, 它是一个依赖于其他属性的属性,当依赖的属性发生变化的时候就会触发我们计算属性的逻辑 它会对这个属性进行计算, 所以说它是 ...

  3. 第一篇博客:HTML:background的使用

    开篇 我是一名程序员小白,这是我写的第一篇博客,在学习的路上难免会遇到难以解决的问题,我将会在这里写下我遇到的问题并附上解决方法 希望可以对各位有所帮助!! 我们在html中经常会遇到这样的问题 例如 ...

  4. Taurus.MVC 微服务框架 入门开发教程:项目集成:6、微服务间的调用方式:Rpc.StartTaskAsync。

    系统目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...

  5. 【项目实战】自备相机+IMU跑通Vins-Mono记录

    前言 初次接触SLAM,公司要求用自己的设备来跑通vinsmono这个程序,虽然已经跑通了别人的数据包,但是真正自己上手来运行这个程序,发现真的是困难重重,特意在此记载下来整个过程,以供大家参考. 我 ...

  6. k8s ingress-nginx 使用 snippet 添加自定义配置 (比如:新增请求头)

    比如在有些时候我们需要在 server 里或者 location 里添加一些参数,例如添加包体大小限制.添加跨域配置.添加自定义header.处理响应header等等.遇到这些需求的时候,我们开始怀念 ...

  7. kubepi访问

    ko最新版本会默认安装kubepi,端口没有对外暴露,点击dashboard打开的就是默认安装的kubepi 如果安装了最新版本的ko,之前单独运行的kubepi就可以stop了

  8. 我的 Kafka 旅程 - Consumer

    kafka采用Consumer消费者Pull主动拉取数据的方式,当Broker无数据时,消费者空转.Kafka并不删除已消费的消息,各自独立的消费者可消费同一个Broker分区数据. 消费流程 1.消 ...

  9. NOI2014 洛谷P2114 起床困难综合征(位运算)

    呃...这道题算是noi中比较简单的题吧...... 众所周知,位运算是个好东西,它就是对应的位进行运算,跟其他的位没有关系. 我们要选取一个m值使最后的攻击力最大,对于这个m,从高位开始枚举,判断该 ...

  10. C# 基础 之:Task 用法

    参考来源:https://www.cnblogs.com/zhaoshujie/p/11082753.html 他介绍的可以说是非常详细,附带Demo例子讲解 1.入门 Task看起来像一个Threa ...