开发工具:
文件大小: 1mb
下载次数: 0
上传时间: 2019-03-08
详细说明:知名企业CAN协议教程,非常详细并有波形图,使用。CAN协议教程
介绍:CAN总线
CAN总线是广播类型的总线。这意味着所有节点都可以“侦听”到所有传输。无法向一个特定
的节点发送报文;所有节点都将始终接收所有通信。但是,CAN硬件能够提供本地过滤能力,
从而每个节点可以只对感兴趣的报文做出响应。
总线使用非归零(NRz)进行位填充。模块以线与逻辑连接到总线:如果只有一个节点向总线传
输逻辑0,那么不管有多少个节点向总线传输逻辑1,整个总线都处于逻辑0状态。
CAN标准定义四种不同的报文类型。报文使用逐位仲裁智能方案来控制对总线的访问,并且每
条报文都带有优先级标记。
CAN标准还定义了一个精确的错误处理和限制方案,这在第9节“CAN错误处理”中有更详
细的说明。
在本教程第8页讨论位时序和时钟同步。这是一个位时序计算器,可以用来计算CAN总线参数
和寄存器设置。
CAN可以使用不同的物理层来实现,这里阐述其中一些。而且,可以使用许多不同种类的连接
器。我们还为对报文细节感兴趣的用户提供了许多示波器图片
www.kvaser.com
CAN协议教程
CAN报文,第1部分
CAN总线是广播类型的总线。这意味着所有节点都可以“侦听”到所有传输。无法向一个特定
的节点发送报文;所有节点都将始终接收所有通信。但是,CAN硬件能够提供本地过滤能力,
从而每个节点可以只对感兴趣的报文做出响应。
CAN报文
CAN使用短报文_最大效用负载是94位。报文中没有明确的地址;相反,可以认为报文是通
过内容寻址,也就是说,报文的内容隐式地确定其地址
报文类型
CAN总线上有四种不同报文类型(或“帧”
1.数据帧
2.远程帧
3.错误帧
4.过载帧
1.数据帧
概要:"大家好,这是一些标签为Ⅹ的数据,希望满足您的需要!
数据帧是最常见的报文类型。由下列主要部分组成(出于简洁性目的,忽略了一些细节):
仲裁字段。当两个或多个节点竞争总线时,确定报文的优先级。仲裁字段包含:
◆对于CAN2.0A,一个11位的标识符和一个支配数据帧的RTR位。
对于CAN20B,一个29位的标识符(其中还包含两个隐性位:SRR和DE)和RTR
www.kvaser.com
CAN协议教程
数据字段。包含0到8字节的数据。
CRC字段,其包含一个基于报文大部分数据计算得到的15位校验和。该校验和用于错误
检测
应答时隙。任何能够正确接收报文的CAN控制器都会在每条报文的未尾发送一个应答位。
传送节点检查应答位是否存在,如果没有检测到应答位,会重新发送报文。
注1:请注意,总线上存在应答位不表示任何目标地址已经收到报文。我们唯一可知的是,总线
上的一个或多个节点已经正确收到了它。
注2:仲裁字段中的标识符不一定标识报文的内容,尽管其名字会让人如此认为。
Arbitration
ACK
Field
Slot
Control
End of
Field
Data Field
CRC Field
Frame
Identifier
CRC
ACK
Start of
Delimiter Delimiter
Frame
CAN2.04(标CAN")数据做
Arbitration
ACK
Field
Slot
Control
End af
Field
Data Field
CRC Field
Frame
Identifier Identifier
SRR IDE
ACK
Start of
RTR
Delimiter Delimiter
F
rame
CAN2.OB("展CAN")数据帧
www.kvaser.com
CAN协议教程
cAN报文,第2部分
2.远程帧
概要:"大家好,有没有人能够生成标签为Ⅹ的数据?
远程帧与数据帧十分相似,但是有两个重要的区别
它被显式标记为远程帧(仲裁字段中的RTR位为隐性),并且
没有数据字段
远程帧的预期目的是征求传输相应的数据帧。例如,如果节点A发送仲裁字段设置为234的远
程帧,那么节点B,如果已经正确初始化,则可以使用仲裁字段也设置为234的数据帧进行响
远程帧可以用来实现总线通信管理类型的请求-响应类型。但是,远程帧在实践中很少使用。还
有一点值得注意的是,CAN标准没有规定这里列出的行为。大部分CAN控制器都可以被编程
为自动响应远程帧,或通知本地CPU
远程帧有一个注意事项:数据长度代码必须设置成预期响应报文的长度。否则仲裁将不起作用。
有时会声称响应远程帧的节点会在识别标识符后立即开始传输,从而“填充″空的远程帧。但是
事实并非如此。
远程帧(2.0A类型)
Arbitration
ACK
Field
Slot
Control
End of
Field
CRC Field
Frame
identifier
CRO
ACK
Start of
RTR
Delimiter Delimiter
Frame
www.kvaser.com
CAN协议教程
3.错误帧
概要:“大家好(大声),让我们重新试一下”
简单地说辯错误帧是一种违背∝AN报文帧规则的特殊报文。它在一个节点检测到故障时被传送,
并将导致所有其它节点也检测到故障,所以它们也将发送错误帧。然后传送节点将自动尝试重
传报文。有—种精准的错误计数器方案,可以确保节点无法通过重复传输错误帧来破坏总线通
信
错误帧包含错误标志,它是6位长的相同值(因此违反位填充规则)和错误定界符(8个隐性
位)错误定界符提供一些空间,以便总线上其它节点在检测到第一个错误标志时可以发送它们
的错误标志。
错误帧图示如下:
E
rror
Delimiter
Error
ag
Superposition of
Error Flags
4.过载帧
概要:“我是非常繁忙的小型82526,您可以稍等片刻吗?″
这里,我们仅仅出于知识完整性目的而提及过载帧。在格式方面过载帧与错误帧非常相似,并且
由会变得重荷的节点传送。过载帧并不常用,因为当今的CAN控制器会非常智能化地避免使用
过载帧。事实上,会生成过载帧的唯——种控制器是现在已经过时的82526。
标准 CAN VS扩展CAN
最初,CAN标准把仲裁字段中标识符的长度定义为11位。后来,根据客户的需求推动了该标
准得延伸。新格式通常称为扩展CAN,标识符不允许少于29位。为了区分这两种帧类型,在
控制字段中使用了一个保留位
www.kvaser.com
CAN协议教程
标准的正式名称是
2.0A,仅支持11位标识符
·2.0B,支持完整的29位标识符的扩展版本(也可以混合使用11位标识符)2.0B节点可
以是
2.0B主动型”,也就是说,它可以发送和接收扩展帧,或者
"2.0B被动型”,也就是说,它将静默丟弃接收到的扩展帧(但是请参考下述內容)
1x表示初始规范及其修订版。
如今的新型CAN控制器通常是2.0B类型。1.X或2.0A类型的控制器如果接收到29个仲裁位
的报文会很麻烦。2.0B被动型控制器容许这些报文,如果它们正确的话会进行应答,然后丢弃
这些报文。2.0B主动型控制器既可发送也可接收这些报文。
实现2.0B和2.0A(和1.x)的控制器相互兼容,并且可以在同一总线上使用它们,则只要实现
2.0B的控制器不发送扩展帧即可
有时候人们说标准CAN“优于”扩展CAN,因为扩展CAN报文会产生更多的间接费用。这种
说法未必正确。如果使用仲裁字段来传送数据,那么扩展CAN实际上的发生的间接费用可能比
标准CAN少。
www.kvaser.com
CAN协议教程
cAN报文,第2部分
基本CAN和完整CAN
术语“基本CAN”和“完整CAN"源自CAN的初创时期。nte82526CAN控制器曾经一度
为程序员提供 DPRAM型接口。随后 Philips82C200CAN控制器使用面向FFO(队列)的编
程模型和有限的过滤能力。为了区分这两种编程模式,人们岀于某些原因把iηtel的模式称为
完整CAN”,把 Philips的模式称为“基本CAN"。如今,大多数CAN控制器同时支持这
两种编程模式,所以没有理由继续使用术语“基本CAN"和“完整CAN"
事实上,这些术语可能会令人迷惑,应当尽量避免。当然,“完整CAN”控制器可以和“基本
CAN”进行通信,反之也可。不存在任何兼容性问题。
总线仲裁和报文优先级
报文仲裁(两个或多个CAN控制器协商确定谁使用总线的过程)对于数据传送中真正可用的带
宽非常重要。
任何CAN控制器都可在检测到空闲总线时开始传送数据。这可能会导致两个或多个控制器(几
乎)同时开始传送报文。冲突的解决方式如下。传送节点在发送报文时监视总线。如果节点在自
身发送隐性位时检测到显性位,它将立即退岀仲裁过程并转变成接收方。仲裁在整个仲裁域进
行,当该字段已经被发送时,总线上恰好只剩下一个传送节点。这个节点就像什么都没发生那样
继续传送。其它潜在的传送节点将在总线下次空闲时尝试重传它们的报文。仲裁过程不会有时
间损耗。
这种逐位仲裁成功的重要条件是两个节点不会传送相同的仲裁字段。这个规则有一个例外:如
果报文不包含任何数据,那么任何节点都可传送该报文。
因为总线采用线与逻辑,并且显性位是逻辑0,所以包含数值最低仲裁字段的报文将嬴得仲裁。
问:如果点是总线上的唯一芳点并且试图进行传送,会发生什么情况?
答:当然,节点将赢得仲裁并顺利地进行报文传送。但是,当进行应答的时候,没有任何节点将
在应答时隙(ACK时隙)发送显性位,所以传送节点将检测到ACK错误,发送错误标志,将传
www.kvaser.com
CAN协议教程
送错误计数器加8并开始重传。这将发生16次,然后传送节点将进入被动错误。通过误差限制
算法的特殊规则,如果节点为被动错误并囯错误是ACK错误,则传送错误计数器不再增加。所
以节点将一直继续传送,至少要到有人应答报文。
报文寻址和标识
再次提醒,CAN报文中无显式地址。每个CAN控制器都会检查总线上的所有通信,并使用硬
件过滤器和软件的组合来确定是否对该报文“感兴趣”。
事实上,CAN中没有报文地址的概念。报文的内容由存在于报文中某处的标识符进行标识。CAN
报文被称为“内容寻址”。
常规的报文地址类似于“这是发给节点Ⅹ的报文”。而内容寻址的报文类似于“这是包含标签
为Ⅹ的数据的报文”。这两个概念之间的区别很小但是非常重要。
根据标准,仲裁字段的内容用来确定总线上报文的优先级。所有CAN控制器也将使用仲裁字段
的全部(一些将只使用一部分)作为硬件过滤过程的关键。
标准没有规定仲裁字段必须用作报文标识符。不管怎样这是一种常见用法
标识符值注意事项
我们说过,标识符可以是11位(CAN2.0A)或29位(CAN2.0B)这不完全正确。出于与某
种老式CAN控制器(猜猜是哪种)兼容的原因,标识符不能将7个最高有效位设置为全部,所
以11位标识符的标识符只有0到2031,而29位标识符可以使用532676608个不同的值。
注意,所有其它CAN控制器都接受“非法″标识符,所以现代CAN系统中标识符2032到
2047可以无限制地使用。
10
www.kvaser.com
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.