CAN/FlexRay网关的设计与实现

时间:2013-06-25

  摘要:为了解决CAN网络和FlexRay网络之间的数据共享问题,提出了一种CAN/FlexRay网关设计方案。通过对两种网络的分析和研究,设计实现了基于处理器的网关的硬件和软件。

  该网关完成了CAN网络和F1exRay网络的互联,实现了不同网络设备的数据共享问题。

  0引言

  CAN网络因其实时性。无破坏仲裁和多主多从等优越特性成为汽车控制网络的首要选择,但随着汽车电子技术及网络技术的不断发展,CAN网络的传输模式过于简单并受传输速率的限制,难以满足日益发展的车载信息设备对大数据量。高可靠性等方面的要求。作为新一代现场总线接口标准的FlexRay则具有突出的可靠性。实时性和高传输速率等优点。在经过不断的发展和验证后,FlexRay总线标准已经日益成熟,目前已经开始应用在行驶动态管理系统和发动机管理系统中。

  随着汽车系统化。信息化进程不断推进,FlexRay总线的应用不断增加,因此cAN和FlexRay两个网络之间不可避免地需要进行数据交换,需要一个工作在CAN网络和FIexRav网络之间的设备。目前CAN/FlexRay总线网关设计在国外技术相对成熟,并已经普及到一些中次的汽车上,但国内还尚未正式在行业内进行应用,因此研究并开发这一技术在技术上和应用上都具有深远的意义。

  1 CAN总线介绍

  上世纪80年代末,德国博世公司开发了一种串行通信协议CAN并成为了国际标准,实现了汽车中控制单元和测试设备之间的实时数据交换。CAN总线与其他总线相比,具有突出的可靠性。实时性和灵活性。重要的是,目前有20多家CAN总线协议控制器芯片生产厂商,产品种类繁多,这一切导致了cAN总线的成本很低,且具有极高的总线利用率。CAN总线的优点十分突出,因此得到了广泛的应用。

  2 FlexRay总线介绍

  FlexRay是戴姆勒克莱斯勒公司的注册商标,在FlexRay联盟(FlexRay Consonium)的推进下,FlexRay不断标准化,并成为新一代汽车内部网络通讯协议。FlexRay总线是一种高速可确定性的,具备故障容错的总线系统,其主要应用在与确定性和故障容错有密切关系的电子设备上,是一种更可靠的高速汽车网络系统。

  FlexRay总线传输速率比CAN总线高20倍,并且符合TDMA(Time Division Multiple Access)的原则,因此总线访问完全是确定的。FlexRay总线实现双通道故障容错,以及带宽可以静态。动态分配,提高了应用的可靠性和灵活性。

  3网关的实现

  CAN/FlexIhy网关作为CAN网络和FlexRay网络中间件,完成了两者协议或数据之间的转换,也就是将传输信息重新封装且满足目标网络协议的要求。

  CAN网络和FlexRay网络都只是支持OSI(0pen SystemInterconnection)模型中的层和第二层,CAN/FlexRay网关必须能够接收和发送两个网络上的数据,因此在传输层完成CAN网络和FlexRay网络的数据交换即可实现网关功能,如图l所示。

  3.1网关的硬件实现CAN/FlexRay网关由三部分组成:CAN网络接口。FlexRay网络接口和数据处理单元。其中C舢WFlexRay数据处理单元是网关模块的部分,该部分选用的处理器是Freescale公司出产的MPC8245.

  MPC8245属于ⅪSC体系架构,主频为300MH2.

  CAN网络接口由CAN控制器SJAl000和CAN收发器PCA82C25 1 T组成。FlexRay网络接口由F1exRay通信控制器MFR4310和总线控制器TJAl080组成。为了提高抗干扰性,在CAN网络接口电路和FlexRay网络接口电路分别设计了隔离电路。网关的硬件结构如图2所示。

  3.2网关的软件实现

  CAN佰lexRay网关软件采用结构清晰的模块化设计思路,在设计决策上表现为支持平台软件。驱动层软件以及应用层软件。支持平台软件包括BOOT程序。BSP以及操作系统三部分内容,其中B00T程序需要完成模块运行状态判断,并引导相应的程序,包括引导配置加载程序。BSP和操作系统。驱动层软件主要实现模块设备的驱动支持,由设备驱动模块和通信驱动模块(包括F1exRay驱动和CAN总线驱动两部分)组成,提供自定义设备驱动控制接口以及中断管理的支持。应用层软件主要实现模块设备的应用功能的处理,由设备管理。BIT程序。CAN网络和FlexRay网络协议转换组成。

  3.2.1 CAN总线应用软件实现

  CAN总线节点的接收选用中断方式。当CAN控制器接收到报文后,将会向处理器产生中断,处理器判断中断向量启动对应的中断服务程序。在中断服务程序里,处理器将接收到的数据从CAN控制器的接收缓冲区中读取,在判断数据类型后保存到对应的缓冲区。CAN总线是按照事件触发方式执行,因此当接收到发送命令时,处理器会启动CAN发送程序。首先确定当前发送缓冲区指针,将待发送的报文写入CAN控制器的发送缓冲,然后设置发送请求标识位,CAN控制器就可以自动完成发送工作。

  3.2.2 FlexRay总线应用软件实现

  FlexRay总线是按照TDMA方式执行,因此不管数据是否更新,当到了设定的时间片时,FlexRay通信控制器将会自动从缓冲区取出数据写入对应的发送buffer.当发送时间片到达时,CC会产生一个中断信号。为了提高工作效率,在接收到发送中断时,只是将该发送的消息号写入消息队列后就退出中断服务程序。

  在FlexRay发送任务中,当消息队列指针发生变化则会开始此次发送工作。为确保数据完整性,CC会先将消息buffer锁定,所有的发送工作都在消息bu虢r锁定的情况下执行。当完成待发送数据的更新后,则解除消息buffer的锁定。FlexRay总线接收程序的设计思路同发送程序一致,在此不再赘述。

  3.3协议转换程序

  3.3.1网关路由表

  为了实现网关协议的转换功能,就必须根据系统应用环境建立网关路由表,网关路由表存放的是CAN网络和FlexRay网络之间的路径关系。为了能够方便应用程序能快速识别转换路径,网关路由表由三部分组成,分别是CAN索引标识。消息调度规则。F1exRav索引标识。该表在系统启动时完成初始化,为网关下一步工作做好准备。

  3.3.2缓冲区

  缓冲区的管理必须和网关的调度结合起来,这个是整个网关软件的关键,它的性能与采用的调度方式密切相关。在接收时通过网关路由表的判断,如果是需要进行转发的数据,则直接将接收到的数据写入对应网络的发送缓冲区中,这样可以极大地提高工作效率。

  CAN总线缓冲区是通过环形队列实现的,在初始化时,定义其数据结构并建立一个指定空间大小的环形缓冲区,从而避免了重复建立缓冲区而导致的内存空间溢出和泄漏等问题。并且这样存储地址是完全连续的,因此在向缓冲区进行读写操作时,只需要判断缓冲区当前指针即可获得首地址,减少了多重条件的判断,提高了处理的效率。

  而FlexRay总线的缓冲区则与CAN总线缓冲区有所不同,虽然同样是环形队列,但根据FlexRay通信控制器应用特点而有所改变。FlexRay通信控制器共有128个通信buffer,在F1exRay总线初始化时,应用程序会记录下配置信息中发送bu船r的数量,并且在建立缓冲区时为每个发送buffer建立一个环形队列。

  环形队列的长度至少是FlexRay数据包长度的N倍,在发送时更新当前bu毹r数据指针即可。

  缓冲区管理示意图如图3所示。

  4结论

  笔者通过分析CAN/FlexRay网关的系统结构,给出了CAN/FlexRay网关的硬件实现和软件设计架构。通过试验证明,笔者设计的CAN/FlexRay网关能很好地实现CAN网络和FlexRay网络之间的数据信息交换。本设计方法具有良好的推广性,满足了系统设计需求。

上一篇:流量检测中MSP430单片机的应用分析
下一篇:基于ARM7的LED回流焊机温控系统的设计

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料