郭创建 王琳煜
摘 要:随着自动驾驶、车联网等汽车领域技术的发展,传统CAN总线已逐渐无法满足高带宽、高传输速率的要求,而CAN FD的到来,为CAN总线带来了带宽及速率的升级。虽然CAN FD为CAN总线带来了升级,但目前CAN FD仍未普及,因此市場上带CAN FD控制器的微控制器仍为数不多,或微控制器所带的CAN FD控制器数不足以支撑应用需求,为此我们采用MCP2517FD——一款SPI转CAN FD控制器模块,来扩展CAN FD控制器。微控制器仅需支持SPI控制器,即可扩展CAN FD,从而实现CAN FD通信。本文从探究CAN总线技术出发,比较了CAN与CAN FD的差异。同时,对MCP2517FD控制器的相关特性进行说明,阐述了基于MCP2517FD的CAN FD通信实现,验证了MCP2517FD模块CAN FD报文收发的性能。
关键词:有线通信技术;MCP2517FD;CAN FD通信;CAN总线
中图分类号:TN925 文献标识码:A 文章编号:2096-4706(2019)16-0067-03
Abstract:With the development of auto fields such as automatic driving and internet of vehicles,the traditional CAN bus has been unable to meet the requirements of high bandwidth and high transmission rate. However,the arrival of CAN FD has brought the upgrade of bandwidth and rate for CAN bus. Although CAN FD brings an upgrade to CAN bus,CAN FD is still not popular at present. There are still a few microcontrollers with CAN FD controller in the market,or the number of CAN FD controllers with microcontroller is not enough to support the application demand. Therefore,we adopt MCP2517FD——an SPI to CAN FD controller module to expand CAN FD controller. The microcontroller only needs to support SPI controller to extend CAN FD and realize CAN FD communication. Based on the research of CAN bus technology,this paper compares the differences between CAN and CAN FD. At the same time,the related characteristics of MCP2517FD controller are explained,the CAN FD communication implementation based on MCP2517FD is expounded,and the performance of MCP2517FD module CAN FD message send-receive is verified.
Keywords:wired communication technology;MCP2517FD;CAN FD communication;CAN bus
0 引 言
当今社会,汽车已经成为人们生活中不可或缺的一部分。人们希望汽车不仅仅是一种代步工具,更希望汽车智能化,为生活带来更多的便利,因此自动驾驶、车联网等汽车智能化技术得到了快速发展。而随着汽车智能化技术的发展,越来越多的功能集成到汽车上,对汽车通讯上的数据吞吐量和数据传输速率要求越来越高,传统的CAN总线应对这些新技术显得越来越力不从心。因此,CAN FD应运而生。CAN FD的出现,为传统的CAN总线带来了数据吞吐量与传输速率的提升,CAN FD传输数据量由传统CAN的8字节升级到了64字节,传输速率由传统CAN的最高1Mbps升级到了最高15Mbps。虽然CAN FD为CAN总线带来了升级,但目前市面上带有CAN FD控制器的MCU(微控制单元)并不多,或MCU所带CAN FD控制器数不足以支撑用户的应用需求,为此我们采用外置的SPI转CAN FD模块——MCP2517FD,来实现CAN FD控制器的扩展。目前,绝大部分MCU都带有SPI控制器,通过MCU的SPI总线来与MCP2517FD通讯,可快速实现CAN FD控制器的扩展,从而实现CAN FD通信。
1 CAN总线技术
1.1 CAN总线概述
CAN(Controller Area Network)总线是由Bosch公司发明的一种基于消息广播模式的串行通信总线,它起初用于实现汽车内ECU(电子控制单元)之间可靠的通信,后因其简单、实用、可靠等特点,而被广泛应用于工业自动化、船舶、医疗等其他领域。CAN总线是国际上应用最广泛的现场总线之一,目前已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线。
CAN总线采用串行通信方式,即同一时刻只传送一位。其通常使用两根电缆(CANH和CANL)传输信号,使用差分传输方式,具有较强的抗干扰能力。每一位有两种可能的电平状态:当其中的CANH(2.5V)与CANL(2.5V)压差为0V时,为隐性电平;当CANH(3.5V)与CANL(1.5V)压差为2V时为显性电平。
CAN总线传输的波特率最高可达1Mbps,在该波特率下最高可传输40m。
1.2 CAN报文格式
CAN报文支持两种报文格式:标准帧(CAN2.0A定义)和扩展帧(CAN2.0B定义)。其主要区别在于帧ID的位数不同,标准帧ID为11位,擴展帧ID为29位。以上帧格式被称为数据帧,而除了数据帧之外,CAN报文还定义了远程帧。远程帧不包含数据,主要用于遥控通知目标节点。
一帧CAN报文分为:帧起始、仲裁段、控制段、数据段、CRC(循环冗余校验)段、ACK段(应答段)、帧结束。
帧起始(SOF)由一个显性位组成,只能在总线空闲时发送。
仲裁段主要包含帧ID,通过帧ID来解决报文仲裁。
控制段由6个位构成,标准帧和扩展帧的两位保留位含义稍有不同,但都包含四位的数据长度码(DLC),这个值决定了数据段的字节长度。远程帧中,由于不包含数据段,则标明请求发送的字节数。
数据段可包含0~8个字节数据,从最高位(MSB)开始传送。
CRC段包含15位CRC序列和1位CRC界定符,用于对当前报文校验,检测当前报文传输是否正确。
ACK段包含1位的应答间隙和1位的应答界定符。发送器在发送CRC界定符后,会再发送2个隐性位,分别是应答间隙、应答界定符。当接收到正确报文,总线上的接收器都会在应答间隙,将隐性电平修改为显性电平,做出应答。
帧结束(EOF)由7个隐性位组成。
1.3 CAN FD协议升级
CAN FD继承了CAN总线的主要特性,提高了CAN总线的网络通信带宽,改善了错误帧漏检率,同时可以保持网络系统中的物理层不变。其相对于传统CAN总线的更新如下。
1.3.1 传输速率的变化
CAN FD的速率包含两个段的速率:仲裁段和数据段。其中仲裁段包括仲裁域和ACK域等部分,该段沿用CAN 2.0的规范,最高速率为1Mbit/s;而数据段包含数据与CRC段,其波特率是可变速的,即可与仲裁段不一致,但必须高于或等于仲裁段,数据段波特率最高可达15Mbit/s(最高波特率由控制器决定)。
1.3.2 传输报文长度的变化
CAN FD对数据场的长度作了很大的补充,数据长度码(DLC)最大可以传输64字节有效数据,这意味着CAN FD具有更高的有效传输负载。
1.3.3 报文格式的变化
CAN FD数据帧在控制场中新添加了EDL位、BRS位、ESI位。
EDL位用于判断报文是否为CAN FD报文,该位为原CAN帧中的保留位,隐性表示CAN FD报文,显性表示CAN报文。
BRS位表示位速率转换,表示数据段波特率是否与标称段不一致。
ESI位表示节点当前错误状态,可判断当前发送该报文的节点为主动错误或被动错误状态。
1.3.4 CRC段的变化
CAN FD对CRC段做了改善,CRC以含填充位的位流进行计算,改善了错误帧漏检率。
2 MCP2517FD通信实现
2.1 MCP2517FD模块概述
MCP2517FD是Mircochip(微芯)公司推出的一款低成本、小尺寸的外部CAN FD控制器。其可通过SPI接口轻松地添加到微控制器中,以解决微控制器中缺少CAN FD外设或没有足够CAN FD控制器的问题。其有如下特点:
(1)符合ISO 11898-1:2015标准;
(2)支持CAN2.0B和CAN FD;
(3)SPI时钟速度高达20MHz;
(4)31个FIFO可配置为发送或接收;
(5)支持验收滤波,最高支持32条滤波;
(6)仲裁域波特率高达1Mbps,数据波特率高达8Mbps。
2.2 硬件设计
电路主要分为微控制器(RT1052)、MCP2517FD、CAN FD收发器。其硬件设计如图1所示。
微控制器(MCU)部分采用NXP公司RT1052(Cortex- M7),其主频可高达528MHz。
MCU与MCP2517FD通过SPI连接,用于数据通讯。此外,MCU提供一个GPIO与MCP2517FD的INT管脚连接,用于触发中断,以通知MCU读取接收报文、报文发送完成或总线错误等信息。
收发器采用致远电子的CTM3MFD隔离CAN FD收发器,其支持CAN FD波特率可高达5Mbps。
2.3 软件实现
软件基于ZLG公司的AWorks嵌入式物联网软件开发平台实现,其主要分为MCP2517FD初始化、报文发送、报文接收三个部分。
2.3.1 模块初始化
模块初始化部分主要完成对MCP2517FD模块的初始化配置,包括CAN FD模式配置、控制器工作模式(正常/只听)配置、波特率配置、报文收发FIFO配置、配置中断触发、启动控制器等。
2.3.2 报文发送
调用报文发送接口后,将软件向模块写入一帧CAN FD报文,等待发送完成中断,当得知报文发送完成后,继续下帧报文发送。由于MCP2517FD无法获取发送完成标志,仅能依赖发送FIFO是否为空标志判断是否发送。而默认未发送数据前,发送FIFO为空,则会一直产生中断。因此,软件仅设置FIFO为1帧报文深度。每次发送时,在填充报文后使能发送FIFO为空中断。发送完成后进入中断后,关闭发送FIFO为空的中断。
2.3.3 报文接收
当接收到CAN(FD)报文时,MCP2517FD模块INT管脚将拉低,触发MCU中断。触发中断后,软件将通知消息处理线程。线程将读取报文数据,填入缓冲区中,等用户读取报文接口。
2.4 模块收发性能
在微控制器主频528MHz,MCP2517FD时钟为40MHz,SPI传输速率在20MHz条件下,可实现接收CAN FD报文不丢帧(波特率:1Mbps/5Mbps),发送长度为64字节的CAN FD报文可达3500帧每秒。
3 结 论
本文针对CAN总线技术及CAN升级后的CAN FD带来的变化进行了探究,分析了CAN FD带来的数据吞吐量和传输速率上的提升。通过对CAN FD技术的探究,本文给出了基于MCP2517FD的CAN FD通信实现,解决了微控制器无CAN FD控制器或没有足够CAN FD控制器情况下的CAN FD通信实现的问题。同时基于该实验验证了MCP2517FD模块的收发性能。
参考文献:
[1] 周立功.CAN-bus现场总线基础教程 [M].北京:航空航天大学出版社,2012.
[2] 邬宽明.CAN总线原理和应用系统设计 [M].北京:航空航天大学出版社,2002.
作者简介:郭创建(1991-),男,汉族,广东汕头人,嵌入式软件工程师,本科,研究方向:通信技术及应用;王琳煜(1992-),男,汉族,广东汕头人,嵌入式软件工程师,本科,研究方向:通信技术及应用。