CAN总线协议

CAN[Control(Controller)Area Network]是控制(器)局域网的简称

 

CAN是一种有效支持分布式控制或实时控制的串行通信网络,最初由德国Bosch公司80年代用于汽车内部测试和控制仪器之间的数据通信。

 

目前CAN 总线规范已被国际标准化组织ISO制订为国际标准ISO11898,并得到了Motorola,Intel ,Philips等大半导体器件生产厂家的支持,迅速推出各种集成有CAN协议的产品。

 

目前CAN总线主要用于汽车自动化领域,如发动机自动点火、注油、复杂的加速刹车控制(ASC)、抗锁定刹车系统(ABS)和抗滑系统等。

BENZ、BMW等著名汽车上已经采用CAN来满足上述功能。在工业过程控制领域,CAN也得到了广泛的应用。

CAN协议CAN总线采用分层结构,规范规定了任意两个节点之间的兼容性。包括电气特件利数据解释协议。

 

    CAN协议可分为:目标层、传送层、物理层。

目标层和传送层包括了ISO/OSI定义的数据链路的所有功能。

目标层的功能包括:确认要发送的信息;

位应用层提供接口。

传送层功能包括:数据帧组织:总线仲裁:检错、错误报告、错误处理。

 

CAN总线以报文为单位进行信息交换,报文中含有标示符(ID),它既描述了数据的含义又表明了报文的优先权。

CAN总线上的各个协点都可主动发送数据。当同时有两个或两个以上的节点发送报文时,CAN控制器采用ID进行仲裁。

ID控制节点对总线的访问。发送具有最高优先权报文的节点获得总线的使用权,其他节点自动停止发送,总线空闲后,这些节点将自动重发报文。

 

CAN支持四类信息帧类型:

    (1)数据帧 CAN协议有两种数据帧类型标准2.0A和标准2.0B。两者本质的不同在于ID的长度不同。在2.0A类型中,ID的长度为l l位;在2.0B类型中ID为29位。

一个信息震中包括7个主要的域: 帧起始域——标志数据帧的开始,由一个显性位组成。

仲裁域——内容由标示符和远程传输请求位(RTR)组成,RTR用以表明此信息帧是数据帧还是不包含任何数据的远地请求帧。

当2.0A的数据帧和2.0B的数据帧必须在同一条总线上传输时,首先判断其优先权,如果ID相同,则非扩展数据帧的优先权高于扩展数据帧。

控制域——r0、r1是保留位,作为扩展位,DLC表示一帧中数据字节的数目。

 数据域——包含0~8字节的数据。校验域——检验位错用的循环冗余校验域,共15位。

应答域——包括应答位和应答分隔符。正确接收到有效报文的接收站在应答期间将总线值为显性电平。

帧结束——由七位隐性电平组成。

(2)远程帧接受数据的节点可通过发远程帧请求源节点发送数据。

它由6个域组成:帧起始、仲裁域、控制域、校验域、应答域、帧结束。

(3)错误指示帧由错误标志和错误分界两个域组成。接收节点发现总线上的报文有误时,将自动发出“活动错误标志”其他节点检测到活动错误标志后发送“错误认可标志”。

(4)超载帧由超载标志和超载分隔符组成。超载帧只能在一个帧结束后开始。当接收方接收下一帧之前,需要过多的时间处理当前的数据,

或在帧问空隙域检测到显性电平时,则导致发送超载帧。

(5)帧间空隙位于数据帧和远地帧与前面的信息帧之间,由帧间空隙和总线空闲状态组成。

帧间空隙是必要的,在此期间, CAN不进行新的帧发送,为的是CAN控制器在下次信息传递前有时间进行内部处理操作。

当总线空闲时CAN控制器方可发送数据。

 

电气参数及信号表示

总线上的数据采用不归零编码方式(NRZ),可具有两种互补的逻辑值之一:显性及隐性。CAN总线中各节点使用相同的位速率。

它的每位时间由同步段、传播段、相位缓冲段1及相位缓冲段2组成。

发送器在同步段前改变输出的位数值,接受器在两个相位缓冲段间采样输入位值,而两个相位缓冲段长度可自由调节,以保证采样的可靠性。

另外,CAN总线采用时钟同步技术来保证通讯的同步。

 

CAN的主要技术特点

    CAN网络上的节点不分主从,任一节点均可在任意时刻主动地向网络上其他节点发送信息,通信方式灵活,

利用这一特点可方便地构成多机备份系统,CAN只需通过报文滤波即可实现点对点、一点对多点及全局广播等几种方式传送接收数据,

无需专门的"调度" CAN的直接通信距离最远可达10km(速率5kbps以下);

通信速率最高可达1Mbps(此时通信距离最长为40m)。

 CAN上的节点数主要决定于总线驱动电路,目前可达110个;

报文标识符可达2032种(CAN2.0A),而扩展标准(CAN2.0B)的报文标识符几乎不受限制。

 

CAN总线通过CAN收发器接口芯片82C250的两个输出端CANH和CANL与物理总线相连,

而CANH端的状态只能是高电平或悬浮状态,CANL端只能是低电平或悬浮状态。

这就保证不会在出现在RS-485网络中的现象,即当系统有错误,

出现多节点同时向总线发送数据时,导致总线呈现短路,从而损坏某些节点的现象。而且CAN节点在错误严重的情况下具有自动关闭输出功能,

以使总线上其他节点的操作不受影响,从而保证不会出现象在网络中,因个别节点出现问题,使得总线处于“死锁”状态。

而且,CAN具有的完善的通信协议可由CAN控制器芯片及其接口芯片来实现,从而大大降低系统开发难度,缩短了开发周期,这些是仅有电气协议的RS-485所无法比拟的。
--------------------- 
作者:Bruce_Qee 
来源:CSDN 
原文:https://blog.csdn.net/Bruce_Qee/article/details/65936157 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值