技术科普:控制器局域网-CAN

原创 汽车电子与软件 2023-08-25 08:03


作者:Neo

出品:汽车电子与软件



01

首语


随着人们对汽车功能需求越来越多样化、智能化,汽车的零部件(ECU,Electronic Control Unit)的数量也越来越多、越来越复杂,像自动驾驶、主动安全等功能加入,普通汽车搭载ECU数量大约为50-100个,而豪华智能汽车的ECU数量平均可达到300个以上。在如此庞大数量的ECU的汽车中,各个ECU之间是如何进行信息交换、共同协作,以及ECU是如何完成在线升级(OTA,On The Air)的呢?本文将介绍汽车电子中常用的通信协议——控制器局部网(CAN,Controller Area Network)。


02

CAN基础概念介绍


CAN通信技术是由博世(BOSCH)公司于1986 年开发出面向汽车的一种通信协议,随后通过ISO-11898和ISO-11519对其进行标准化:


1、ISO-11898:定义了通信速率为 125 kbps~1 Mbps 的高速 CAN 通信标准,属于闭环总线,传输速率可达1Mbps,总线长度 ≤ 40米。


2、ISO-11519:定义了通信速率为 10~125 kbps 的低速 CAN 通信标准,属于开环总线,传输速率为40kbps时,总线长度可达1000米。


CAN通信网络是欧洲汽车网络的标准协议,在发展过程中,其高性能和可靠性被广泛认可,所以也会被使用在工业自动化、船舶、医疗设备、工业设备中。


CAN是异步通信,与I2C、SPI这类具有时钟信号线的同步通信协议不同,CAN通信只有两根信号线CAN_HIGH和CAN_LOW来组成一对差分信号线,下图是在汽车电子中常见的ECU在CAN网络的连接图:


图1 ECU连接图

差分信号


差分信号又称差模信号,与传统使用单根信号线电压表示逻辑的方式有区别,晶体管-晶体管逻辑电平(TTL)信号就是用的单根信号线的电压值来表示逻辑值,其电平信号规定:+5V等价于逻辑1,0V等价于逻辑0。而使用差分信号传输时,需要两根信号线,这两个信号线的振幅相等,相位相反,通过两根信号线的电压差值(Vdiff,Voltage Difference)来表示逻辑0和逻辑1,Vdiff=CAN_H-CAN_L。CAN差分信号如下图所示。


图2 差分信号


CAN总线为隐性电平时代表逻辑1,CAN_H和CAN_L的电平为2.5V(电位差Vdiff为0V);


CAN总线为显性电平时代表逻辑0,CAN_H和CAN_L的电平分别是3.5V和1.5V(电位差Vdiff为2.0V左右)。


位时序


前面提到CAN是一种异步通信,没有时钟信号线,其通信过程类似串口通信(Serial Communications),CAN控制器之间通过事先约定好的时序进行通信,但CAN通信还会采用位同步(Bit Synchronization)的方式来抗干扰、吸收误差,从而使得CAN控制器可以对总线信号进行正确采样,保证正常通信。


CAN 协议把每一个数据位的时序分解成如图3所示的 Sync_Seg 段、Prop_Seg 段、Phase_Seg1 段、Phase_Seg2 段,这四段的长度加起来为一个 CAN 数据位的长度。最小的时间单位是 Tq(Time Quantum),一个完整的位由 8-25 个 Tq 组成。


图3 位时间


• Sync_Seg(同步段)


若通讯节点检测到总线上信号的跳变沿被包含在 Sync_Seg段的范围之内,则表示节点与总线的时序是同步的,当节点与总线同步时,采样点(Sampling Point)采集到的总线电平可被认为该位的电平。Sync_Seg的大小固定为 1Tq。


• Prop_Seg(传播时间段)


这个时间段是用于补偿网络的物理延时时间。是总线上输入比较器延时和输出驱动器延时总和的两倍。Prop_Seg段的大小可以为 1-8Tq。


• Phase_Seg1(相位缓冲段1)


这个时间段主要用来补偿边沿阶段的误差,它的时间长度在重新同步的时候可以加长。Phase_Seg1段的初始大小可以为 1-8Tq。


• Phase_Seg2(相位缓冲段2)


这个时间段也是用来补偿边沿阶段误差的,它的时间长度在重新同步时可以缩短。Phase_Seg2段的初始大小可以为 2-8Tq。


CAN收发器


ECU需要从总线中获取CAN帧中的信号电平,转化为逻辑电平,也就是将图2 差分信号中的显性电平和隐性电平转换为对应的逻辑电平0和逻辑电平1,这样在总线中的CAN帧就被转换成程序中使用的CAN报文了。


这个步骤就是由CAN收发器(CAN Transceiver)来完成的,如图1 ECU连接图所示,其位于MCU和CAN Network之间,接收CAN总线上的CAN帧相关的信号电平并将其转化为逻辑信息电平转发给CAN控制器,并且也接收从CAN控制器传输过来的逻辑电平信息并将其转化为信号电平传从到CAN总线上。



03

CAN帧


CAN有五种帧的类型:数据帧(Data Frame)、远程帧(Remote Frame)、错误帧(Error Frame)、间隔帧(Can Interval Frame)和过载帧(Overload Frame),其中最复杂的帧类型为数据帧,其作用是传输数据,数据长度是可变的,一个经典CAN(Classical CAN)数据帧可传输0-8个字节的数据(数据内容长度,不含CAN帧的控制信息),而一个CAN FD(CAN with Flexible Data rate)的可传输的数据长度可达64个字节,后文提到的CAN为经典CAN。CAN帧会因其ID位数的不同而不同,以ID位数分为两类:标准帧(11位CAN Identifier)和扩展帧(29位CAN Identifier)。


标准帧


如图4所示,一个带有11位CAN Identifier的帧以SOF(Start Of Frame)开始,以EOF(End Of Frame)结束,其中包含五个区域,分别为仲裁区(Arbitration Field)、控制区(Control Field)、数据区(Data Field)、校验区(CRC Field)、应答区(ACK Field)。


 
图4 标准数据帧


• 仲裁区


这个区域包含CAN Identifier的[28:18],总共11位,其范围为0x000-0x7FF,CAN Identifier的值越小会在CAN总线仲裁时拥有更高的优先级(Priority)。RTR位用来指示该帧是否位远程帧(用来区分没有数据的数据帧和远程帧)。


• 控制区


IDE位用来指示该帧是否为扩展帧;r0为保留位;DLC指示该帧数据区的长度。


• 数据区


这里放着0-8个字节需要传输的数据。


• 校验区


CRC(Cyclic Redundancy Check):循环冗余校验;Delimiter:分隔符。


• 应答区


ACK SLOT:应答槽,发送方会将此位作为隐性电平发送,接收方成功接收后会将此位重写,以此来让发送方知道此帧是否被成功发送。


扩展帧


设计扩展帧的目的是为了完成对更长的CAN Identifier的传输,所以扩展帧中的CAN Identifier使用到了ID[28:0],一共是29位,如图5所示,扩展帧和标准帧大致相同,只有几个地方有一些小的区别。


图5 扩展数据帧


SRR位(Substitute Remote Request):替代远程请求位


r0/r1位:保留位



04

CAN控制器


虽然有相应的标准来规范CAN通信,但是不同的芯片厂商对其功能的具体实现却各不相同,不同点主要在CAN外设在芯片中的寄存器设计,各自驱动程序自然也有区别,但在CAN总线上发出和接收的CAN帧都和标准规定的一致。下面是一些具体的例子来描述CAN控制器的大致工作机制。


Cypress Traveo II系列芯片是英飞凌专为汽车应用设计的32位MCU,其CAN控制器支持经典CAN和CAN FD(ISO 11898-1:2015)。收发CAN帧时支持多种模式,给应用带来更多可能,方便实现不同的场景需要。


消息区


Traveo II系列MCU的CAN控制器具有一块消息区(MRAM,Message RAM),其地址范围与程序运行时使用的RAM地址范围是隔离的,也就是说CAN控制器用来存储接收/发送的CAN帧以及自身的配置信息的MRAM和程序规定的堆、栈等RAM区域是不冲突的,这样也可以有效避免程序的可能存在的错误导致CAN帧的数据被篡改。图6是Trave II MRAM中关于CAN的配置。


图6 MRAM包含的区域


从图中可以看出,Traveo II 的CAN控制器的MRAM的地址是以32位对齐的,从上向下看,首先是CAN ID的配置信息,根据配置CAN控制器中相关寄存器,可将CAN ID初始化为11位或29位,并将不同的CAN ID写入不同的区域。


接下来是存储CAN帧的关键区域,这里存着CAN控制器从总线接收到符合上面已经配置好的CAN ID的CAN帧、即将要发送的CAN帧,从图中可以看出接收/发送时可以使用FIFO(实际也有Queue)模式和Buffer模式,后面会详细介绍不同的模式的工作方式以及CAN帧的内部构造。


接收


前面提到接收有两种工作模式,分别是FIFO(Queue)和Buffer,Buffer模式工作过程简单,一旦有CAN帧被CAN控制器存入Buffer内,相应的中断处理函数就会被触发来处理对应的CAN帧。而FIFO和Queue模式就复杂一些,如图7所示,这是一个拥有8个Rx CAN帧块(英飞凌Traveo II官方手册中称为Rx Element)的FIFO区域,不难看出,有两个关键的标志Get Pos和Put Pos,分别用来指示当前CAN帧获取位置和下一个CAN帧存放位置。此时FIFO区域中已经存在了3个CAN帧等待读取,当驱动程序将CAN帧从MRAM中读取完毕时,会设置对应寄存器来通知CAN控制器,然后Get Pos和Put Pos会指向同一个CAN帧块(为空状态)。

图7 Rx FIFO


如图8所示,这是一个由CAN控制器从CAN收发器上传来的CAN帧的内部构造,这里还是把它称作Rx CAN帧块,其内容包含了一些前面讲到的CAN数据帧的一些控制位、数据位,还有一些是为了兼容CAN FD所预留的,这里只介绍和经典CAN的相关内容,CAN FD的大同小异。


 
图8 Rx CAN帧块


XTD位:指示该帧为标准帧还是扩展帧,若此位为0则该帧是标准帧,ID中[28:18]是有效CAN ID,即该帧CAN ID为11位;若此位为1则该帧是扩展帧,ID中[28:0]全部是有效CAN ID内容,即该帧CAN ID为29位。


RTR位:用来区分该帧为远程请求帧还是数据帧,若此位为0则该帧是数据帧,若此位为1则该帧是远程请求帧。


DLC[3:0]:此4位数据用来指示该帧含有的数据的字节数,本文只讨论经典CAN,所以DLC规定的范围应该在0-8字节。


R2-R3:这两行数据就是数据帧中的数据域中的内容,经典CAN最多传输8个字节数据,从图中可以看出,这样一个CAN帧块最大支持8个字节的数据,DB0-DB7。


发送


CAN控制发送过程就相对复杂一些,因为上层应用可能需要发多种CAN ID报文,其报文优先级有高有低,高优先级需要尽快发出,低优先级则可以在缓冲区中等待优先级更高的CAN帧发送完,再发出。


图9 同时使用Tx Buffer和Tx FIFO


如图9所示,当同时使用Tx Buffer和Tx FIFO时,CAN控制器每次都会扫描这些区域,当前状态下,Tx Buffer中一个CAN ID为2的CAN帧等待发送,因为它是Tx Buffer区域中CAN ID最小的,并且比Tx FIFO中处于Get Pos的这一帧(CAN ID为4)小,所以它拥有最高优先级,这一帧将会最先被发出去,第二次CAN控制器再次扫描这些区域,发现处于Tx FIFO中Get Pos的这一帧(CAN ID为4)是这些区域中最小的(包括Tx Buffer),所以第二次将会发送CAN ID为4的这一帧,如此往复,直到这些区域内的所有Tx CAN帧块被全部通过CAN收发器转换为信号电平发送到总线上。


图10 Tx Element


如图10所示,与Rx Element类似,XTD、RTR、ID、DLC以及DB0-DB7的用法与Rx Element一致,只有部分内容有不同。


MM[7:0]:Message Marker,这是一个与发送事件(Tx Event)相关的信息。


EFC(Event FIFO Control)位:该位表示该帧是否有将发送事件存在对应的MRAM中。


FDF位:此位用来标识该帧是否为一个CAN FD帧。


BRS(Bit Rate Switching)位:当该帧位CAN FD帧(即FDF为1时),此位才有效,决定该帧在发送时是否启用速率切换(Rate Switching),以更高的速度传输。


更多与Traveo II发送和接收CAN帧相关的细节,大家可以去查阅英飞凌提供的技术手册TRM。




05

总结


CAN通信已经存在了相当长的时间了,其强大的性能和相对高的稳定性让其不仅在汽车领域大显身手,还被广泛用在各种有性能和稳定性有要求的领域,但在人民日益增长的需求下,其缺点被逐渐放大,例如其每一帧的数据负载量较小(每一帧都需要带有CAN ID和一些控制信息)、速率有限,好在CAN FD的出现,将每一帧可传输的字节数增加至64字节,并增加了波特率,极大的改进了经典CAN通信。

随着时代的变化,大家对新能源车的要求越来越高,更复杂的娱乐功能、高级辅助驾驶、自动驾驶功能等等,CAN通信在这些功能的就有点力不从心了,现在出现FlexRay、车载以太网等一些新的通信技术,随着这些有趣的技术快速发展,让我们来看看会发生什么。



END

添加微信”btighteast”加入微信交流群
(仅限专业人士,添加备注单位+姓名)


汽车电子与软件 主要介绍汽车电子软件设计相关内容,每天分享一篇技术文章!
评论 (0)
  • 一、VSM的基本原理震动样品磁强计(Vibrating Sample Magnetometer,简称VSM)是一种灵敏且高效的磁性测量仪器。其基本工作原理是利用震动样品在探测线圈中引起的变化磁场来产生感应电压,这个感应电压与样品的磁矩成正比。因此,通过测量这个感应电压,我们就能够精确地确定样品的磁矩。在VSM中,被测量的样品通常被固定在一个震动头上,并以一定的频率和振幅震动。这种震动在探测线圈中引起了变化的磁通量,从而产生了一个交流电信号。这个信号的幅度和样品的磁矩有着直接的关系。因此,通过仔细
    锦正茂科技 2025-02-28 13:30 175浏览
  • 2020年,世界经济论坛发布了《将来工作报告》,预言了人工智能 (AI)、机器人和自动化将在五年内对劳动力市场带来反天性的变化。最震撼人心的预测是:85亿个工位将消失,97亿个新工位将被创造。这个信息给我们提出了一些骂烈的疑问:AI究竟会消灭哪些工作?管理者的规划依然重要吗?AI会代替我们的管理之路吗?AI不会替代管理者,会进一步增强他们随着AI在机器学习、自然语言处理和预测分析方面的进步,许多人对AI接管事务表示担心。但研究显示,大多数情况下,AI将作为工具与管理者协同完成任务,而不是替换他们
    优思学院 2025-03-01 12:22 248浏览
  • 1,微软下载免费Visual Studio Code2,安装C/C++插件,如果无法直接点击下载, 可以选择手动install from VSIX:ms-vscode.cpptools-1.23.6@win32-x64.vsix3,安装C/C++编译器MniGW (MinGW在 Windows 环境下提供类似于 Unix/Linux 环境下的开发工具,使开发者能够轻松地在 Windows 上编写和编译 C、C++ 等程序.)4,C/C++插件扩展设置中添加Include Path 5,
    黎查 2025-02-28 14:39 241浏览
  • 在2025年世界移动通信大会(MWC 2025)期间,紫光展锐携手美格智能正式推出了基于紫光展锐V620平台的第二代5G Sub6G R16模组SRM812,以超高性价比方案,全面赋能合作伙伴,加速5G规模化应用在各垂直领域的全面落地。展锐芯赋能,全面支持R16关键特性SRM812模组基于紫光展锐推出的V620平台设计,V620是业界首款全面支持R16的5G宽带物联网芯片平台,具备强劲的射频能力和全网通特性。得益于此,SRM812成为业界首批全面支持5G R16宽带物联网特性的芯片平台。SRM8
    紫光展锐 2025-03-04 19:55 155浏览
  • DeepSeek的风还吹到了TV圈。去年,人工智能领域迎来了重大突破,然而对大多数人而言,它依旧是个颇为模糊的概念。即便是如ChatGPT这样的产品,给人最直接的感受也仅仅是一个相较于Siri更为智能的语音交互工具。直至今年,DeepSeek的惊艳亮相,人们真正感受到了生成式人工智能在实际应用中的价值。在这股浪潮的推动下,电视厂商们也纷纷跟上了脚步。2月11日,海信电视宣布正式接入DeepSeek,并支持满血R1和V3版本自由切换,成为行业首个搭载深度思考智能体的电视品牌。长虹电视紧随其后,宣布
    刘旷 2025-03-03 09:55 352浏览
  •           近日受某专业机构邀请,参加了官方举办的《广东省科技创新条例》宣讲会。在与会之前,作为一名技术工作者一直认为技术的法例都是保密和侵权方面的,而潜意识中感觉法律有束缚创新工作的进行可能。通过一个上午学习新法,对广东省的科技创新有了新的认识。广东是改革的前沿阵地,是科技创新的沃土,企业是创新的主要个体。《广东省科技创新条例》是广东省为促进科技创新、推动高质量发展而制定的地方性法规,主要内容包括: 总则:明确立法目
    广州铁金刚 2025-02-28 10:14 159浏览
  • 在当今数据驱动的世界,内存解决方案需要的不仅仅是原始性能。贞光科技代理的紫光国芯全系列存储产品提供定制化解决方案,解决各行业面临的独特挑战,同时确保可靠性、兼容性和面向未来的创新。打破“唯性能论”,迎接多元化存储需求一直以来,高性能似乎成了衡量存储产品的唯一标准。 没错,速度快、效率高,固然重要。 但话说回来, 难道所有应用场景,都对性能有着“变态”级的需求吗? 答案显然是否定的。 就像穿鞋一样,合脚才是最重要的, 一味追求“跑得快”, 反而容易磨脚,甚至崴脚!在实际应用中,各行各业对存储的需求
    贞光科技 2025-03-03 17:05 172浏览
  • 在2024年的科技征程中,具身智能的发展已成为全球关注的焦点。从实验室到现实应用,这一领域正以前所未有的速度推进,改写着人类与机器的互动边界。这一年,我们见证了具身智能技术的突破与变革,它不仅落地各行各业,带来新的机遇,更在深刻影响着我们的生活方式和思维方式。随着相关技术的飞速发展,具身智能不再仅仅是一个技术概念,更像是一把神奇的钥匙。身后的众多行业,无论愿意与否,都像是被卷入一场伟大变革浪潮中的船只,注定要被这股汹涌的力量重塑航向。01为什么是具身智能?为什么在中国?最近,中国具身智能行业的进
    艾迈斯欧司朗 2025-02-28 15:45 407浏览
  • 2025年世界移动通信大会(MWC 2025)期间,紫光展锐联合移远通信,正式发布了全面支持5G R16特性的模组RG620UA-EU,以强大的灵活性和便捷性赋能产业。展锐芯加持,关键性能优异RG620UA-EU模组基于紫光展锐V620平台开发,搭载4核Arm®Cortex®-A55 CPU,符合3GPP R16标准,在传输速率、计算能力、R16关键特性等方面表现优异。该模组配备了丰富的功能接口,包括USXGMII、PCIe3.0、USB3.1、SDIO3.0、UART、SPI、I2S、I2C、
    紫光展锐 2025-03-04 19:54 145浏览
  • 文/Leon编辑/cc孙聪颖在中国制造转向“智造”的过程中,一批80、90后企业创始人闪亮登场,用互联网思维进行创新,在全球市场取得了傲人的成绩,如大疆汪滔、宇树科技王兴兴、影石Insta360刘靖康,都是各自领域的佼佼者。在引领全球市场后,独角兽企业的下一步自然是上市。据悉,中国证监会于2025年2月26日正式批复影石Insta360创新科技股份有限公司(以下简称影石Insta360)的IPO申请,拟在上交所科创板上市,中信证券为保荐机构,拟募集资金4.64亿元。影石Insta360主要从事手
    华尔街科技眼 2025-03-03 18:40 269浏览
  • 振动样品磁强计是一种用于测量材料磁性的精密仪器,广泛应用于科研、工业检测等领域。然而,其测量准确度会受到多种因素的影响,下面我们将逐一分析这些因素。一、温度因素温度是影响振动样品磁强计测量准确度的重要因素之一。随着温度的变化,材料的磁性也会发生变化,从而影响测量结果的准确性。因此,在进行磁性测量时,应确保恒温环境,以减少温度波动对测量结果的影响。二、样品制备样品的制备过程同样会影响振动样品磁强计的测量准确度。样品的形状、尺寸和表面处理等因素都会对测量结果产生影响。为了确保测量准确度,应严格按照规
    锦正茂科技 2025-02-28 14:05 240浏览
  • 压力传感器是指能感受压力信号,并能按照一定的规律将压力信号转换成可用的电信号的器件或装置。压力传感器通常由压力敏感元件和信号处理单元组成,按不同测压方法,压力传感器可分为表压传感器、差压传感器和绝压传感器;按不同测压原理,压力传感器又可分为常见的压阻式压力传感器、电容式压力传感器、扩散硅压力传感器、蓝宝石压力传感器与陶瓷压力传感器等。作为工业自动化与智能化的关键器件,压力传感器在各类工业设备中扮演着不可或缺的角色,其通过精确感知和转换物理压力信号,为工业物联网(IIoT)构建起了高效精确的“压力
    华普微HOPERF 2025-03-03 10:19 233浏览
  • 中小企业(SME)对全球经济的贡献日益显著,不仅是发展中国家的经济支柱,通常还是其经济快速增长的关键部分。中小企业的其他关键作用还包括促进创业和创新,从而保证竞争力。从这一点来说,中小企业助力了许多大公司,并对世界经济做出重大贡献。本章将介绍中小企业的定义和经济份额,分析其特点以及它们与大型企业的区别。中小企业的定义任何组织在制订计划和策略时,最重要的都是了解业务的性质和类型。全球各企业的分类主要基于它们的体量,例如固定资产、产值、资金和员工数量。从大的分类来讲,大公司被划归为一种类型,而所有其
    优思学院 2025-03-04 11:07 143浏览
  • 在现代各种工业设备的复杂电路中,栅极驱动芯片虽不常被大众提及,却扮演着至关重要的角色。栅极驱动芯片是低压控制器和高压电路之间的缓冲电路,主要用于放大控制器的控制信号,从而令功率器件实现更快速高效的导通和关断,是保障电子设备稳定、高效运行的核心元件之一。驱动芯片的类型(按结构划分)电力电子应用基于功率器件技术,而无论是MOSFET、IGBT,还是SiC MOSFET等功率器件都需要相应的栅极驱动芯片(Gate Driver IC)。选择一款合适的驱动芯片,不仅可以简化相应电气系统的设计复杂度,还可
    华普微HOPERF 2025-03-04 14:40 137浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦