完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980

第89章       STM32H7的CAN FD总线基础之前世今生

本文整理翻译自CAN in Automation(CiA),通过这个帖子大家会对当前市场上各种CAN名词有个全面系统的认识。

目录

89.1 初学者重要提示

89.2 CAN从构思到第一个芯片

89.3 CAN标准化和规格

89.4 CAN时代的先锋

89.5 CAN从理论到实践

89.6 CAN时间触通信

89.7 CAN总线被当局批准

89.8 CAN FD开发

89.9 CAN的未来是光明的

89.10   第三代CAN

89.11   总结


89.1 初学者重要提示

  • 1986年2月,Robert Bosch GmbH在汽车工程师协会(SAE)大会上推出了控制器局域网(CAN)串行总线系统。这是有史以来最成功的网络协议之一诞生的时刻。如今,欧洲几乎所有汽车都配备了至少一个CAN网络。CAN还用于其他类型的车辆,从火车到轮船,以及工业控制中,CAN是最主要的总线协议之一,甚至可能是全球领先的串行总线系统。

89.2 CAN从构思到第一个芯片

在1980年代初期,博世的工程师正在评估现有的串行总线系统,以探讨其在汽车中的可能用途。由于没有可用的网络协议能够满足汽车工程师的要求,因此Uwe Kiencke于1983年开始开发新的串行总线系统。

新的总线协议主要是要增加新的功能 --- 减少线束不是CAN发展背后的驱动力。奔驰的工程师很早就参与了新的串行总线系统的规范制定阶段,英特尔作为潜在的主要半导体供应商也参与了进来。来自德国Braunschweig-Wolfenbüttel的应用科学大学(现为Ostfalia University of Applied Science)的Wolfhard Lawrenz教授被聘为顾问,他将新的网络协议命名为“Controller Area Network(控制器区域网络)”。来自卡尔斯鲁厄大学的Horst Wettstein教授也提供了学术帮助。

1986年2月,CAN诞生了:在底特律的SAE大会上,新的总线系统被称为“Automotive Serial Controller Area Network(汽车串行控制器局域网)”。Uwe Kiencke,Siegfried Dais和Martin Litschel介绍了多主网络协议。它基于一种非破坏性仲裁机制,该机制允许总线访问具有最高优先级的帧而没有任何延迟。没有中心控制器。此外,CAN之父(上述人员以及博世员工Wolfgang Borst,Wolfgang Botzenhard,Otto Karl,Helmut Schelling和Jan Unruh)已经实现了几种错误检测机制。错误处理还包括自动断开故障总线节点,以保持其余节点之间的通信。传输的帧不是由帧发送器或帧接收器的节点地址(几乎在所有其他总线系统中)识别的,而是由它们的内容识别的。表示帧有效载荷的标识符,还具有指定帧在网络段内的优先级。

随后,许多介绍该创新通信协议的演讲和出版物,直到1987年中期(比计划提前两个月),英特尔才交付了第一款CAN控制器芯片82526。这是CAN协议的第一个硬件实现。在短短四年内,一个想法就变成了现实。此后不久,飞利浦半导体推出了82C200。CAN控制器的这两个最早的祖先在接受过滤和帧处理方面有很大的不同。一方面,与飞利浦选择的BasicCAN实施相比,英特尔所青睐的FullCAN概念要求所连接的微控制器的CPU负载更少。另一方面,FullCAN设备在可以接收的帧数方面受到限制。BasicCAN控制器还需要更少的硅。在当今的CAN控制器中,实现了接受过滤和帧处理这两种概念的混合。这使BasicCAN和FullCAN的误导性术语过时了。

89.3 CAN标准化和规格

博世CAN规范(2.0版)已于1990年代初提交国际标准化。在发生了几场政治纠纷之后,尤其是涉及到法国一些主要汽车制造商开发的“车载区域网络”(VAN,Vehicle Area Network),ISO 11898标准于1993年11月发布。除了CAN协议外,它还标准化了物理层,速率高达1 Mbit / s。同时,ISO 11519-2对通过CAN的低功耗,容错数据传输方式进行了标准化。由于该标准存在缺陷,因此从未实施。在1995年,ISO 11898标准通过附录进行了扩展,该附录描述了使用29位CAN标识符的扩展帧格式。

不幸的是,所有已发布的CAN规范和标准化都包含错误或不完整。为避免不兼容的CAN实施方案,Bosch确保所有CAN芯片均符合Bosch CAN参考模型。此外,由Wolfhard Lawrenz教授领导的德国Braunschweig-Wolfenbüttel应用科学大学已经进行了几年的CAN一致性测试。所使用的测试模式基于ISO 16845一致性测试计划标准系列。今天,多家测试机构可提供CAN一致性测试服务。

修订后的CAN规范已标准化。ISO 11898-1描述了“ CAN数据链路层”,ISO 11898-2标准化了“非容错” CAN物理层,而ISO 11898-3指定了“容错CAN物理层”。ISO 11992系列(卡车和拖车接口)和ISO 11783(农业和林业机械)系列指定了基于SAE J1939网络方法的应用程序配置文件。它们不兼容,因为物理层规范不同。

89.4 CAN时代的先锋

尽管CAN最初被开发用于汽车,但最初的应用来自不同的市场领域。特别是在北欧,CAN在早期已经非常流行。在芬兰,电梯制造商Kone 使用了CAN总线。瑞典工程办公室Kvaser向一些纺织机械制造商(Lindauer Dornier和Sulzer)及其供应商建议将CAN作为机器内部的通信协议。在Lars-Berno Fredriksson的领导下,这些公司成立了“ CAN纺织品用户小组”。到1989年,他们制定了沟通原则,有助于在1990年代初塑造发展环境“ CAN Kingdom”。尽管相对于OSI参考模型,CAN Kingdom不是应用程序层,

在荷兰,飞利浦医疗系统决定将CAN用于其X射线机的内部联网,从而加入了工业CAN用户。主要由Tom Suters开发的“ Philips消息规范”(PMS)代表了CAN网络的第一个应用层。来自德国Weingarten应用科学大学的Konrad Etschberger教授也有相同的想法,在他负责的Steinbeis过程自动化转移中心(STZP)中,他开发了类似的协议。

尽管第一个标准化的高层协议开始出现,但大多数CAN开拓者还是采用了整体法。通信功能,网络管理和应用程序代码是一种软件。即使某些用户希望采用模块化的方法,但他们仍有专有解决方案的缺点。增强和维护CAN高层协议的必要努力被低估了 ---今天仍然部分是正确的。

在1990年代初,是时候成立了一个用户小组,以推广CAN协议并促进其在许多应用中的使用。1992年1月,当时的《 VMEbus》杂志编辑(出版商:Franzis)的Holger Zeltwanger吸引了用户和制造商一起建立了一个中立的平台,用于CAN的技术增强以及串行总线系统的市场营销。两个月后,“ CAN in Automation”(CiA)国际用户和制造商小组正式成立。在早期,CAN通讯已经出版。

仅几周后发布的第一份技术出版物涉及物理层:CiA建议仅使用符合ISO 11898的CAN收发器。如今,制造商专用的EIA-485收发器在CAN网络中非常普遍,那个时候,并不总是兼容,应该已经完全消失了。

CiA的首要任务之一是规范CAN应用层。利用飞利浦医疗系统公司和STZP提供的现有材料,并在CiA其他成员的帮助下,开发了“ CAN应用程序层”(CAL),也称为“绿皮书”。在使用CAN制定规范时,CiA的主要任务之一是组织CAN专家与那些希望在CAN上变得更多知识的专家之间的信息交换。因此,自1994年以来,举行了国际CAN会议(iCC)。

LAV(德国农业车辆协会)追求另一种学术方法。自1980年代后期以来,已经开发了基于CAN的农用车辆总线系统(LBS)。但是在这项工作可以成功完成之前,国际委员会已决定支持美国的解决方案J1939(ISO 11783)。此应用程序配置文件也基于CAN,由SAE卡车和公共汽车协会的委员会定义。J1939是一种非模块化方法,非常易于使用,但也非常不灵活。

还为卡车开发了CAN的标准化。卡车和拖车之间的网络标准化为ISO11992。该协议基于J1939,从2006年起必须在欧洲使用。汽车的趋势是向OSEK-COM和OSEK-NM,通信协议和网络管理迈进。两者均已提交国际标准化。到目前为止,汽车制造商一直在使用专有软件解决方案。

89.5 CAN从理论到实践

当然,将CAN内核实现到其微控制器中的半导体供应商主要集中在汽车行业。自1990年代中期以来,英飞凌科技公司(以前为西门子半导体公司)和摩托罗拉公司(外包为飞思卡尔,后来被NXP收购)已经向欧洲汽车制造商及其供应商运送了大量CAN控制器。自1990年代末以来,远东半导体供应商也开始提供CAN控制器。NEC在1994年推出了他们传奇的CAN芯片72005,但为时过早-该组件在商业上并不成功。

自1991年以来,奔驰一直在其汽车中使用CAN。第一步,通过CAN连接负责发动机管理的电子控制单元。1995年,宝马在其7系汽车中使用了带有五个ECU(电子控制单元)的树/星拓扑CAN网络。第二步,跟随人体电子设备所需的控制单元。实现了两个物理上分离的CAN网络,通常通过网关连接。其他汽车制造商也沿用了奔驰的方式,通常在乘用车中实现两个CAN网络。如今,他们都在自己的车辆中实现了多个CAN网络。

在1990年代初期,美国机械工程公司Cincinnati Milacron的工程师与Allen-Bradley和Honeywell Microswitch共同成立了一家合资公司,以基于CAN的控制和通信项目。但是,不久之后,重要的项目成员换了工作,合资企业瓦解了。但是Allen-Bradley和Honeywell分别继续工作。这导致了至少在较低的通信层中非常相似的两个高层协议“ DeviceNet”和“智能分布式系统”(SDS)。1994年初,Allen-Bradley将DeviceNet规范移交给了“开放DeviceNet供应商协会”(ODVA),这促进了DeviceNet的普及。Honeywell未能在SDS上采取类似的方式,这使SDS看起来更像是Honeywell微动的内部解决方案。DeviceNet是专为工厂自动化而开发的,因此,它本身就是Profibus-DP和Interbus等协议的直接对手。提供现成的即插即用功能,DeviceNet已成为美国这个特定细分市场中领先的总线系统。

在欧洲,几家公司尝试使用CAL。尽管CAL方法在学术上是正确的,并且可以在工业应用中使用它,但是每个用户都需要设计一个新的配置文件,因为CAL是真正的应用程序层。CAL可以看作是独立于应用程序的CAN解决方案必不可少的学术步骤,但它从未在该领域获得广泛认可。

自1993年以来,在Esprit项目ASPIC的范围内,由博世领导的欧洲财团一直在开发CANopen的原型。它是用于生产单元内部网络的CAL配置文件。在学术方面,来自德国罗伊特林根应用科学大学的Gerhard Gruhler教授和来自英国纽卡斯尔大学的Mohammed Farsi博士参加了有史以来最成功的Esprit活动之一。项目完成后,CANopen规范移交给了CiA,以进行进一步的开发和维护。1995年,发布了经过完全修订的CANopen通信配置文件,并在短短五年内成为欧洲最重要的标准化嵌入式网络。

第一个CANopen网络用于内部机器通信,尤其是驱动器。CANopen提供了很高的灵活性和可配置性。高层协议已用于多个非常不同的应用领域(工业自动化,航海电子,军用车辆等),同时其国际标准为EN 50325-4(2003)。CANopen尤其在欧洲使用。意大利的注塑机,德国的木锯和机器,英国的卷烟机,法国的起重机,奥地利的搬运机以及瑞士的钟表制造机只是工业自动化和机械制造中的几个例子。在美国,推荐将CANopen用于叉车并将其用于信件分拣机中。

CANopen不仅定义了应用程序层和通信配置文件,而且还定义了可编程系统以及不同设备,接口和应用程序配置文件的框架。这是整个行业(例如印刷机,海事应用,医疗系统)决定在1990年代后期使用CANopen的重要原因。

借助DeviceNet和CANopen,可以使用两个标准化的(IEC 62026-3或EN 50325-4 / 5)应用层,以满足不同的工业自动化市场的需求。DeviceNet针对工厂自动化进行了优化,而CANopen特别适合于各种机器控制中的嵌入式网络。这使得专有的应用程序层已过时。定义特定于应用程序的应用程序层的必要性已成为历史(也许,对于某些专用的大容量嵌入式系统而言除外)。

89.6 CAN时间触通信

在2000年初,一个由数家公司组成的ISO特别工作组为CAN帧的时间触发传输定义了一个协议。Bernd Mueller博士,Thomas Fuehrer博士和其他博世员工,以及半导体行业和学术研究专家共同定义了协议“ CAN上的时间触发通信”(TTCAN,Time-triggered communication on CAN)。

这种CAN扩展可以实现时间等量的帧传输和通过CAN的闭环控制的实现,而且还可以在x-by-wire的应用中使用CAN。由于CAN协议未更改,因此可以通过同一物理总线系统传输时间触发帧和事件触发帧。但是,汽车行业尚未采用TTCAN。而且,工业用户很少使用时间触发的协议扩展。他们改用CANopen中指定的同步传输功能,可以说是一种软时间触发方法。

89.7 CAN总线被当局批准

在90年代后期,发明了几种基于CAN的专有安全协议。幸存下来的是德国Pilz生产的Safetybus p。在1999年,CiA开始开发CANopen-Safety协议,该协议已获得德国TüV的批准。经过标准化机构的大量参与之后,此CANopen扩展(CiA 304)在EN 50325-5(2009)中进行了国际标准化。

DeviceNet使用CIP安全协议扩展。全球领先的船级社之一的德国劳埃德船级社(Germanischer Lloyd)已批准了适用于海事应用的CANopen框架(CiA 307)。除其他外,该框架规定了从默认的CANopen网络到冗余总线系统的自动切换。如今,这些功能已在CiA 302系列其他CANopen应用层功能中得到了概括和指定。

89.8 CAN FD开发

2011年初,通用汽车和博世开始着手开发一些有关提高吞吐量的CAN协议。当将越来越多的软件包下载到电子控制单元(ECU)时,汽车行业尤其受苦。高性能通信系统必须缩短这项耗时的任务。通过引入第二个比特率来提高CAN传输速度的想法并不新鲜。自2000年初以来,已有几位学者发表了研究方法。但是,没有一个研究者能够说服汽车制造商。博世与其他CAN专家合作,预先开发了CAN FD规范,该规范于2012年在德国哈姆巴赫城堡举行的第13届国际CAN会议上正式推出。

在ISO的标准化过程中,发现了所提出的错误检测机制中的一些学术缺陷。这需要对CAN FD协议进行审查,并引入其他防护措施(例如,填充位计数器)。这就是为什么存在非ISO CAN FD协议的原因,该协议与ISO 11898-1中标准化的ISO CAN FD协议不兼容。

戴姆勒公司的Mark Schreiner博士为设计CAN FD网络提供了很多提示和知识。他的许多想法都包含在CAN FD节点的CiA 601系列以及系统设计建议和规范中。

89.9 CAN的未来是光明的

随着CAN FD协议的引入,CAN技术的寿命得以延长。汽车行业已经开始为下一代车载网络采用CAN FD协议。可以预期,所有未来的应用程序都将使用CAN FD协议。不管它们是否需要更高的带宽都没关系。您仍然可以将CAN FD与单个位定时设置一起使用。有效负载长度无论如何都可以在0到64字节之间配置。

对于那些需要更多带宽并需要混合拓扑的用户,CiA已开发了所谓的SIC(信号改善电路)收发器规范(CiA 601-4)。最初的想法来自日本Tier-1供应商Denso。

CiA还开发了基于CAN FD下层的CANopen FD协议。特别是对于工业运动控制应用,非常适合更高的传输速率和更长的有效载荷(最大64字节)。CiA还参与了使用SAE J1939系列中指定的现有参数组的商用车,基于CAN FD的应用层的开发。

89.10   第三代CAN

2018年底,CiA开始开发第三代基于CAN的数据链路层协议CAN XL。它是应大众汽车的要求启动的。Carsten Schanze和Alexander Mueller提供了许多最初的想法。

2020年由于疫情,取消了国际CAN会议的执行,今年的国际CAN会议改为线上举行,主题是CAN XL。CAN XL速度提升至10Mbps。

同时保持CAN协议的优势以及与CAN和CAN FD的兼容性。下面是CAN FD和CAN XL的混合网络:

补充:

  • CiA CAN XL规范于2018年12月开始,目标是在2019年底之前拥有OSI第2层规范(称为CAN XL协议),第二步,将开始进行ISO标准化。
  • 经典CAN是1Mbps,CAN FD最高2Mbps,CAN FD-SiC是5-8Mbps,CAN XL是10Mbps。

89.11   总结

更多CAN的历史知识,大家可以上CAN in Automation(CiA)官网搜索了解。

【STM32H7教程】第89章 STM32H7的CAN FD总线基础之前世今生相关推荐

  1. 【STM32H7教程】第51章 STM32H7的LTDC应用之LCD汉字显示和2D图形显示

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第51章       STM32H7的LTDC应用之LCD汉字 ...

  2. stm32h7关串口中断怎么弄_【STM32H7教程】第33章 STM32H7的定时器应用之TIM1-TIM17的中断实现...

    第33章       STM32H7的定时器应用之TIM1-TIM17的中断实现 本章教程为大家讲解定时器应用之TIM1 – TIM17所有定时器的周期性中断实现.实际项目中用到的地方较多,特别是周期 ...

  3. 【STM32H7教程】第4章 STM32H7工程模板建立(MDK5)

    完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第4章   STM32H7工程模板建立(MDK5) 本章 ...

  4. stm32h7高速通信_【STM32H7教程】第75章 STM32H7的SPI总线应用之驱动DAC8501(双路输出,16bit分辨率,0-5V)...

    第75章       STM32H7的SPI总线应用之驱动DAC8501(双路输出,16bit分辨率,0-5V) 本章节为大家讲解标准SPI接线方式驱动模数转换器DAC8501,制作了中断和DMA两种 ...

  5. stm32h7高速通信_【STM32H7教程】第48章 STM32H7的FMC总线应用之是32路高速IO扩展

    第48章       STM32H7的FMC总线应用之是32路高速IO扩展 本章教程为大家讲解利用STM32H7的FMC总线扩展出32路高速IO,且使用简单,实际项目中也比较有实用价值. 48.1 初 ...

  6. php和stm32,【STM32H7教程】第5章 STM32H7下载和调试方法(MDK5)

    第5章   STM32H7下载和调试方法(MDK5) 本章教程为大家介绍如何通过MDK5下载程序到芯片里面以及MDK5的调试和配置方法. 5.1 初学者重要提示 5.2 使用MDK调试和下载程序设置( ...

  7. stm32h7内存分配_【STM32H7教程】第25章 STM32H7的TCM,SRAM等五塊內存基礎知識

    第25章       STM32H7的TCM,SRAM等五塊內存基礎知識 本章教程為大家介紹STM32H7帶的ITCM,DTCM,AXI SRAM,SRAM1,SRAM2,SRAM3,SRAM4和備份 ...

  8. stm32h7内存分配_【STM32H7教程】第9章 STM32H7重要知识点数据类型,变量和堆栈...

    第9章   STM32H7重要知识点数据类型,变量和堆栈 本章教程为大家介绍数据类型,变量和堆栈的相关知识. 9.1 初学者重要提示 9.2 数据类型 9.3 局部变量和全局变量 9.4 堆栈 9.5 ...

  9. stm32h7内存分配_【STM32H7教程】第26章 STM32H7的TCM,SRAM等五块内存的超方便使用方式...

    第26章       STM32H7的TCM,SRAM等五块内存的超方便使用方式 本章教程为大家分享一种快捷的DTCM,SRAM1,SRAM2,SRAM3和SRAM4的使用方式.MDK和IAR均支持这 ...

最新文章

  1. 基于四元数互补滤波的无人机姿态解算
  2. 自学python要看哪些书籍-学习Python编程的最好的7本书
  3. 计算机组成原理数据冒险的解决nop,计算机组成原理实验讲义(103页)-原创力文档...
  4. FLV文件中VideoPacket的详解
  5. 使用猴子测试工具(1)
  6. Ubuntu 18.04 安装微信
  7. 金融产品经理的能力修炼精进指南
  8. 哔哩哔哩助手V0.8.16.28
  9. LeetCode-Hot100-两数之和
  10. 3分钟教你如何在Word里快速制作单斜线和多斜线表头
  11. 小米路由器3刷openWRT系统的实践过程
  12. 小繁的Binary_Indexed_Tree学习笔记
  13. AI人脸识别的实现SDK
  14. 原味的SM3密码杂凑算法
  15. 如何redis关闭保护模式,取消密码登录
  16. C#完美实现打开笔记本电脑摄像头
  17. 苹果手机怎么连接蓝牙耳机_苹果手机用什么蓝牙耳机好,适配iphone手机的蓝牙耳机...
  18. uniapp 监听网络情况
  19. No.84 柱状图中最大的矩形
  20. 特征学习-RBM与PCA应用在LR

热门文章

  1. python人脸检测代码_python实现人脸识别代码
  2. 三菱PLC——流水灯编程
  3. 酒店企业私域流量运营方案来了
  4. 【JavaScript】作用域 作用域链
  5. php 日记账余额,现金日记账,每天自动汇总(含年终福利)
  6. 宝藏!揭秘如何写好软考论文框架1000+字
  7. 基于 Wio Terminal 实现的网络天气预报助理
  8. java计算机毕业设计ssm基于大数据的汽车流量监控cvej1(附源码、数据库)
  9. 计算机 自考 学校,山东哪些学校能自考计算机专业
  10. 小方法!教你如何下载喜欢的明星剧照当电脑桌面