CAN总线简介

概述

CAN(Controller Area Network)即控制器局域网络。最初是由德国的Bosch公司为汽车检测,控制系统而设计的,由于其高性能、高可靠性、以及独特的设计,CAN现在已经成为主流的汽车通信总线。当然现在国内外很多的OEM都已经在车载Ethernet上迈出了步伐,但是CAN总线网络在车载技术上还是发挥着其不可替代的作用。

CAN总线是一种串行数据通信协议,其通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码,循环冗余校验、优先级判别等工作。通过总线将汽车上的各种电子装置与设备连成一个网路,实现相互之间的信息共享,既减少了线束,又可更好的控制和协调汽车的各个系统,使汽车性能达到最佳。

发展历史

20世纪80年代,Bosch的工程人员开始研究用于汽车的串行总线系统,因为当时还没有一个网络协议能完全满足汽车工程的要求。参加研究的还有Mercedes-Benz公司、Intel公司,还有德国两所大学的教授。

1986年, Bosch在SAE(汽车工程人员协会)大会上提出了CAN。

1987年,INTEL就推出了第一片CAN控制芯片—82526;随后Philips半导体推出了82C200。

1992年,CIA(CAN in Automation)用户组织成立,之后制定了第一个CAN应用层“CAL”。

1993年,CAN的国际标准ISO11898公布从此CAN 协议被广泛的用于各类自动化控制领域。

1994年开始有了国际CAN学术年会(ICC),美国汽车工程师协会以CAN为基础制定了SAEJ1939标准,用于卡车和巴士控制和通信网络。

从CAN总线被提出到今天,CAN协议,适配硬件,实用经验已经近乎完善。几乎每一辆欧洲生产的轿车上都有CAN,高级客车上有多套CAN,通过网关互联,1999年一年就有近6千万个CAN控制器投入使用;2000年销售1亿多CAN的芯片;2001年用在汽车上的CAN节点数目超过1亿个 。CAN总线在汽车电器网络中将各个模块的ECU互相连接起来,成为汽车电气系统的主要组成部分。

 

汽车网络化的优点

(1) 布线简单,设计简化,节约铜材,降低成本。
(2) 可靠性提高,可维护性大为提高
(3) 实现信息共享,提高汽车性能
(4) 满足现代汽车电子设备种类功能越来越多的要求
(5) 使用汽车网络不仅可以减少线束,而且能够提高各控制系统的运行可靠性,减少冗余的传
感器及相应的软硬件配置,实现各子系统之间的资源共享,便于集中实现各子系统的在线故障诊
断。

CAN总线的特点

(1)可以多主方式工作,网络上任意一个节点均可以在任意时刻主动地向网络上的其他节点发送信息,而不分主从,通信方式灵活。
(2)网络上的节点(信息)可分成不同的优先级,可以满足不同的实时要求。
(3)采用非破坏性位仲裁总线结构机制,当两个节点同时向网络上传送信息时,优先级低的节点主动停止数据发送,而优先级高的节点可不受影响地继续传输数据。
(4)可以点对点、一点对多点(成组)及全局广播几种传送方式接收数据。
(5)直接通信距离最远可达10km(速率5Kbps以下)。
(6)通信速率最高可达1MB/s(此时距离最长40m)。
(7)节点数实际可达110个。
(8)采用短帧结构,每一帧的有效字节数为8个。
(9)每帧信息都有CRC校验及其他检错措施,数据出错率极低。
(10)通信介质可采用双绞线,同轴电缆和光导纤维,一般采用廉价的双绞线即可,无特殊要求。
(11) 节点在错误严重的情况下,具有自动关闭总线的功能,切断它与总线的联系,以使总线上的其他操作不受影响。

 CAN总线技术的优点

(1)  如果数据扩展以增加新的信息,只需升级软件即可。
(2)  控制单元对所传输的信息进行实时检测,检测到故障后存储故障码。 
(3)  使用小型控制单元及小型控制单元插孔可节省空间。 
(4)  使传感器信号线减至最少,控制单元可做到高速数据传输。 
(5)  CAN 总线符合国际标准,因此可应用不同型号控制单元间的数据传输。 

CAN网络通讯的实现

CAN 设计分三层结构模型:物理层、数据链路层和应用层。物理层和数据链路层的功能由 CAN 接口器件完成,包括硬件电路和通讯协议两部分。CAN 通讯协议规定了四种不同用处的网络通讯帧,即数据帧、远程帧、错误指示帧和超载帧。CAN 通讯协议的实现,包括各种通讯帧的组织和发送,均是由集成在 SJA1000通讯控制器中的电路实现的,因此系统的开发主要在应用层的设计上。应用层软件的核心部分是 CPU 与SJA1000 通讯控制器之间的数据接收和发送程序,即 CPU 把待发的数据发给 SJA1000 通讯控制器,再由SJA1000 通讯控制器发到总线上;当 SJA1000 通讯控制器从总线接受到数据后,CPU 再把数据取走。对于单片机而言,操作 SJA1000 就象访问外部 RAM 一样简单。首先,应对 SJA1000 中的有关控制寄存器写入控制字,进行初始化。之后,CPU 即可通过 SJA1000 接收/发送缓冲区向物理总线接收和发送数据。

 

 

 

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

博学之~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值