CAN总线数据链路层(一)
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总线数据链路层(一)的更多相关文章
- 探讨CAN总线的抗干扰能力
探讨CAN总线的抗干扰能力 CAN总线经近20年的发展已步入壮年期,它不仅在汽车领域的应用占据一定优势,在其他工业应用上也生机勃勃.枝繁叶茂.究竟是什么原因使它这么成功?当人们发现它的局限性,又面临新 ...
- PCIe扫盲——一个Memory Read操作的例子
连载目录篇:http://blog.chinaaet.com/justlxy/p/5100053251 前面的一系列文章简要地介绍了PCIe总线的结构.事务层.数据链路层和物理层.下面我们用一个简单地 ...
- CAN总线(一)
原文出处:http://www.cnblogs.com/jacklu/p/4729638.html 嵌入式的工程师一般都知道CAN总线广泛应用到汽车中,其实船舰电子设备通信也广泛使用CAN,随着国家对 ...
- TCP/IP详解学习笔记(2)-- 数据链路层
1.概述 数据链路层属于计算机网络的底层,使用的信道主要有点对点信道和广播信道两种类型. 在TCP/IP协议族中,数据链路层主要有三个目的: 1)为IP模块发送 ...
- Beaglebone Back学习六(Can总线测试)
Can总线测试 1 Can总线 控制器局域网 (Controller Area Network, 简称 CAN 或 CANbus)是一种通信协议,其特点是允许网络上的设备直接互相通信,网络上不需要主机 ...
- 【单片机通信协议】CAN总线基础知识
CAN总线基础知识(一) 1.1 CAN总线是什么? CAN(Controller Area Network)是ISO国际标准化的串行通信协议.广泛应用于汽车.船舶等.具有已经被大家认可的高性能和可靠 ...
- CAN总线
1.CAN(controller area network) LAN(local area network)局域网 2.CAN等通信协议的开发,使多种LAN通过网关进行数据交换得以实现.如应用在汽车电 ...
- CAN总线与RS485的比较
CAN总线与RS485的比较 http://blog.csdn.net/reille/article/details/6135546 can总线与485总线有什么区别? http://blog.16 ...
- stm32之CAN总线基础
can总线协议概述: CAN是Controller Area Network的缩写,由德国博世公司开发:CAN通过ISO11891以及ISO11519进行了标准化: CAN总线的特点: 1.多 ...
- CAN总线基础
can总线协议: 涵盖了OSI规定的传输层.数据链路层.物理层 物理层: 决定了位编码方式(NRZ编码,6个位插入填充位),位时序(位时序.位的采样).同步方式(根据同步段ss实现同步,并具有再同步功 ...
随机推荐
- luogu [ZJOI2007] 矩阵游戏
[ZJOI2007] 矩阵游戏 题目描述 小 Q 是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个 \(n \times n\) 黑白方阵进行(如同国际象棋 ...
- 【Oracle初学者】ORA-01034: ORACLE not available
系统报错代码 ORA-01034: ORACLE not available 出现原因 //在启动实例时,关闭了数据库,导致外部软件无法访问Oracle数据库(大部分都是因为数据库监听或者服务关闭导致 ...
- Pod 的生命周期
上图展示了一个 Pod 的完整生命周期过程,其中包含 Init Container.Pod Hook.健康检查 三个主要部分,接下来我们就来分别介绍影响 Pod 生命周期的部分: 首先在介绍 Pod ...
- JavaScript 的闭包(closure)
以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「englyf」https://www.cnblogs.com/englyf/ 对于闭包的理解,其实可以归纳为,在创建函数时,同时创建了一 ...
- 洛谷P1908 逆序对 (树状数组+离散化)
模板题,树状数组加上离散化求逆序对. 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long LL; 4 ...
- ArrayList LinkedList Vector之间的区别
List主要有ArrayList,LinkedList和vector三种实现.这三种都实现了List接口,使用方式也很相似,主要区别在于其实现方式的不同! 这三种数据结构中,ArrayList和Vec ...
- liunx之expect简介
导航: 一.expect安装.介绍.使用场景二.expect使用原理三.expect使用语法四.expect使用举例五.expect相关错误处理 - - - - - - - - - 分割线 - - - ...
- C++编程范式(函数)
1 // 2 // main.cpp 3 // test 4 // 5 // Created by Shaojun on 30/5/2020. 6 // Copyright 2020 Shaojun. ...
- Vue 中为什么要有nextTick?
摘要:本文将浅析nextTick的作用.使用场景和背后的原理实现,希望对大家有所帮助. 本文分享自华为云社区<Vue 中的 nextTick 有什么作用?>,作者:CoderBin. 一. ...
- 前端开发日常——CSS动画无限轮播
近来没有什么值得写的东西,空闲的时候帮前端的同学做了些大屏上的展示模块,就放在这里写写吧,手把手"需求->设计-> 实现",受众偏新手向. 为了直观便于理解, 直接把结 ...