flexray通信原理

flexray通信原理



前言

在汽车领域,FlexRay比起传统的can和lin通讯,具有诸多优点,所以现在很多场合开始使用该总线进行通讯,以下是flexray具有的优点:

1、使用双通道进行通讯时,最高速率可达20M bit/s。
2、采用建立在通信循环基础上的时分多路数据传输方式(TDMA:Time Division Multiple Access),周期性数据在通信中拥有笃定的位置,确保了报文到达的时效性。
3、使用基于同步时基的访问方法,同步时基通过协议自动建立,精度可达1us。
4、支持总线型,星型。级联星型和混合型等多种拓扑结构,支持时间触发和事件触发通信方式,支持报文的冗余和非冗余传输方式,且提供大量配置参数供用户灵活进行系统调整扩展。
5、容错数据传输。


一、flexray总线通讯原理

1.与can总线比较情况

在这里插入图片描述

2.总线物理层定义

在这里插入图片描述
和can一样,flexrat在总线使用两条线差分形式进行通讯,分别为BP(bus plus)和BM(bus minus),代表的逻辑状态如下:

idle_LP:低功耗状态
idle: 空闲状态
0: BP - BM > 600mv
1: BP - BM < -600mv

tips:规定flexray物理通讯线不超过24m,有些地方看到又是22m

3.通讯协议

刚开始看flexray协议的时候,这一块有点蒙,看了好多资料都没太懂QAQ

①数据段情况

flexray在总线上通讯和can的机制不一样,can是事件触发型,某一节点报文达到需要发动的时刻,发送到总线上即可,flexray属于时间+事件触发型,数据发送形式见下图表示
在这里插入图片描述
数据在总线上发送,分为很多个cycle进行,所有的报文就是塞在每一个cycle的不同段中,总线上总共分为四个段,静态段动态段符号窗网络空闲段,其中前后两个段是必须的,中间两个是可选的,我们需要的报文又分为静态报文和动态报文,如果是静态报文,则数据放在静态段中进行发送,静态段中每一条报文的发送顺序都是固定了的,动态报文就放在动态段中进行发送。

静态报文:如一个节点的静态报文ID为3,每个cycle的静态段中都作为第三条报文进行发送(相当于can总线中周期性报文,只是flexray中时效性更强,所有报文的发送时间都是确定好的,到了报文发送时刻一定能发送出来)。
动态报文:诊断类等事件型报文,达到触发条件后就放于动态段中发送。

②报文帧格式

在讲每个段构成情况之前,先讲一下报文帧的组成格式,便于下面的理解,以下是一帧报文的组成情况:
在这里插入图片描述
和can报文类似,flexray报文也是由各个段组成,组要分为HeaderPayloadTrailer三大段组成,以下是详细介绍

A、Header segment
保留位(1 bit)

预留使用。

负载场前导指示位(1 bit)

0:数据段中不包含网络管理向量消息ID
1:数据段中包含网络管理向量消息ID

对静态报文,该位对应网络管理向量的指示。
对动态报文,改为对应消息ID的指示。

网络管理向量:占一个字节
消息ID:占两个字节

空帧指示位(1 bit)

0: 表示该帧为空帧,数据载荷段中不包含任何有效数据。
1: 该帧数据有效。

同步帧指示位(1 bit)

0:其他接收节点不需要考虑同步问题。
1:其他接收节点将该帧作为同步帧进行同步使用。

启动帧指示位(1 bit)

0:非启动帧
1:启动帧

只有冷启动节点可以使用启动帧。在冷启动节点的同步帧中,启动帧指示灯只能设置为一个。 因此,启动帧指示器设置为1的帧也应该设置同步帧指示器为1。 因此,所有有效的启动帧也是同步帧

Frame ID(11 bits)

和普通can应用报文一样,占了11位,所以最大值为0x7FF,所以在flexray中报文取值范围为1~2047(0是非法帧)。

Payload lenth(7 bits)

flexray数据长度最大为254个字节,但是该位表示:实际数据字节数/2,所以最大字节数占了7bit,即127。

Header CRC(11 bits)

头部信息校验值,好像是同步帧位到payloadLenth的数据校验

Cycle count(6 bits)

相当于rolling counter,最大值为0x3F(63)。

B、Payload segment

正常数据段,网络管理向量消息ID 就位于该段最前面的字节中。

C、Trailer segment

三字节所有数据的CRC校验值。

巧的是header+trailer信息字节加起来刚好等于8,can普通报文的数据长度

③静态段

在这里插入图片描述
该段的数据相当于can中周期发送的报文。每一条报文的顺序都是固定好不变的。
在这里插入图片描述静态段中最多可容纳1023条报文。

④动态段

在这里插入图片描述
在这里插入图片描述

⑤符号窗

在这里插入图片描述
该数据段有以下三部分组成:

冲突避免符号Collision Avoidance Symbol22 (CAS)
用于冷启动节点的通讯启动,用于表示第一个通信周期的开始。
介质测试符号Media Access Test Symbol (MTS)
用于总线的测试
唤醒符号Wakeup Symbol (WUS)
用于唤醒过程的初始化

⑥网络空闲段

在这里插入图片描述

二、网络唤醒

1、主节点发起启动流程

1、主冷启动节点检测总线情况,若总线not active,则发送30个Data0冲突避免符号,CAS的最初传输在第一个正式通信循环(Cycle 0)之前成功完成。
2、从循环0开始,节点发送启动帧(除了冷启动间歇和启动尝试的中断)。由于每个冷启动节点都允许执行一个冷启动尝试。所以可能会有多个节点同时发送CAS,并进入冷启动路径。这一状况在CAS传输后的最先4个循环能够解决。一旦发起冷启动尝试的节点在最先4个循环收到一个CAS或数据帧头,则其重新进入监听状态。因此,改路径中只留有一个节点。
3、在循环4(Cycle)中,其他冷启动节点开始它们的启动帧。发起启动的节点将收集来自循环4和循环5的所有启动帧,并执行时钟校正。如果时钟校正没有发出信号提示错误。且节点已经接收到至少一个有效的启动帧(由两个节点分别发送的启动帧),则节点离开启动过程并进入运行过程。

2、随动冷启动节点流程

当冷启动节点进入启动过程后,它会监听其连接的通道,并尝试接收FlexRay数据帧。如果节点接收到有效通信,那么它会尝试集成到一个正在有效通信的冷启动节点中。该节点会尝试着从冷启动节点处接收一对有效启动帧和时钟校正,并通过接收到的启动对,获取自己的时间表。
在接下来的俩个循环中执行时钟校正。若时钟校正没有发出信号提示错误,并且该节点持续从同一个已经集成到簇的节点接到足够的数据帧,则该节点开始发送启动帧,否则,它将重新进入监听状态
在接下来的3个循环内,时钟校正没有发出信号提示错误,并且节点簇中至少还集成了另一个冷启动节点,则该节点离开启动过程。因此,该节点在其发送冷启动之后至少一个循环时离开启动过程。

3、非冷启动节点的过程

当非启动节点进入启动过程后,那么它会尝试集成到一个正在有效通信的冷启动节点中。该节点会尝试着从冷启动节点处接收一对有效启动帧和时钟校正,并通过接收到的启动帧对,获取自己的时间表
在接下来的俩个循环内,它试图找到符合其时间表。并且发送了启动帧的至少俩个冷启动节点。
若失败,或者时钟校正出现错误,则该节点会中断本次集成尝试,并重新开始集成尝试。
节点在连续的俩个循环内至少从两个冷启动节点处接收到有效启动帧的帧头,在此之后,该节点会离开启动过程并进入运行过。

总结

完结撒花


  • 4
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值