// https://blog.csdn.net/wofreeo/article/details/82288950
// https://blog.csdn.net/shanghaiqianlun/article/details/17794427
// http://www.elecfans.com/d/694463
// https://blog.csdn.net/minyuanxiani/article/details/80568338
// https://www.cnblogs.com/jacklu/p/4729638.html
// https://www.cnblogs.com/pejoicen/p/3986587.html
CAN (Controller Area Networ, 控制器局域网络) ,是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO 11898)ISO国际标准化的串行通信协议,是国际上应用最广泛的现场总线之一。
在北美和西欧,CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN为底层协议专为大型货车和重工机械车辆设计的J1939协议。
CAN属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通信网络。
CAN总线是德国BOSCH公司从80年代初为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议,它是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维。通信速率最高可达1Mbps。
在汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,1986 年德国电气商博世公司开发出面向汽车的CAN 通信协议。此后,CAN 通过ISO11898 及ISO11519 进行了标准化,在欧洲已是汽车网络的标准协议。CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。
[网络各节点之间的数据通信实时性强]
: CAN控制器工作于多种方式
: 各节点都可根据总线访问优先权(标识符), 无损结构逐位仲裁的方式竞争向总线发送数据
: CAN协议废除了站地址编码,而代之以对通信数据进行编码,这可使不同的节点同时接收到相同的数据
:RS-485只能构成主从式结构系统,通信方式也只能以主站轮询的方式进行,系统的实时性、可靠性较差
[开发周期短]
: CAN总线通过CAN收发器接口芯片82C250的两个输出端CANH和CANL与物理总线相连
: CANH端的状态只能是高电平或悬浮状态,CANL端只能是低电平或悬浮状态
[已形成国际标准的现场总线]
: CAN总线是具有通信速率高、容易实现、且性价比高等诸多特点的一种已形成国际标准的现场总线
[最有前途的现场总线之一]
: CAN 即控制器局域网络,属于工业现场总线的范畴
: CAN总线来实现汽车内部控制系统与各检测和执行机构间的数据通信
: 应用协议 SAE J1939/ISO11783、CANOpen、CANaerospace、DeviceNet、NMEA 2000
[完成对通信数据的成帧处理]
: 集成了物理层和数据链路层功能, 数据成帧处理, 位填充、数据块编码、循环冗余检验、优先级判别等
[结构简单]
: 只有2根线与外部相连,并且内部集成了错误探测和管理模块
[位仲裁]
: 报文为单位进行数据传送, 优先级结合在11位标识符中, 具有最低二进制数的标识符有最高的优先级
:
1991年 9月 PHILIPS SEMICONDUCTORS制订并发布了 CAN技术规范(VERSION 2.0)。该技术规范包括A和B两部分。2.0A给出了曾在CAN技术规范版本1.2中定义的CAN报文格式,能提供11位地址;而2.0B给出了标准的和扩展的两种报文格式,提供29位地址。此后,1993年11月ISO正式颁布了道路交通运载工具—数字信息交换—高速通信控制器局部网(CAN)国际标准(ISO11898),为控制器局部网标准化、规范化推广铺平了道路。
CAN总线标准只规定了物理层和数据链路层,需要用户自定义应用层。不同的CAN标准仅物理层不同。
CAN收发器负责逻辑电平和物理信号之间的转换,将逻辑信号转换成物理信号(差分电平),或者将物理信号转换成逻辑电平。
CAN节点电路、CAN控制器驱动、CAN应用层协议、CAN节点应用程序
、
多个节点连接,只要有一个为低电平,总线就为低电平,只有所有节点输出高电平时,才为高电平。所谓”线与”。CAN总线有5个连续相同位后,就插入一个相反位,产生跳变沿,用于同步。从而消除累积误差。和485、232一样,CAN的传输速度与距离成反比。
CAN总线传输的是CAN帧,CAN的通信帧分成五种,分别为数据帧、远程帧、错误帧、过载帧和帧间隔。
数据帧根据仲裁段长度不同分为标准帧(2.0A)和扩展帧(2.0B)