FlexRay是FlexRay联盟开发的一种汽车网络通信协议。其用来提供一种比CAN和TTP更为快速和可靠的协议,不过更为昂贵。
Contents
|
FlexRay有以下显著特性:
FlexRay联盟有以下成员组成:
此外,还有FlexRay高级会员和普通会员。截止到2009年,有28个高级会员,以及60多个普通会员。在2009年底时,该联盟解散了。
2006年底,BMW X5是第一系列采用了FlexRay的汽车,实现了新的、高速适应的组你系统。在2008年,BMW 7 Series (F01)完全使用了FlexRay,也是全球第一个完全使用FlexRay系统的产品。
FlexRay是有一个总线和处理器(电子控制单元,ECUs)组成。每隔ECU有一个独立的时钟,与参考时钟相比,该时钟的飘逸程度不能超过0.15%,因此,系统中最慢的时钟和最快的时钟偏差不能超过30%。
这就意味着,如果ECU-s是发送者、ECU-r是接收者,发送者的300个周期对于接收者来说是299~301个周期之间。因此,会进经常进行时钟同步,来保证不会发生这样的问题。
在某个时间点,进能有一个ECU向总线写数据。要发送的每个位在总线上为8个采样时钟周期。接收方有个缓冲区,来存放最后5次采样,并使用最后5次采样中的多数结果作为输入信号。
单周期传输错误可能对位的边界附近产生影响,但不会影响8个周期的中间区域。
0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 |
在没有错误时. 信号进延迟了两个周期。
0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 |
在8周期区域的中间区域发生了错误被取消了。
0 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 |
在8周期区域的边界区域发生了错误,可能会影响到边界位。
所有的通信以帧的形式发送。由字节组成的消息以下面的方式进行打包:
如果没有通信,总线章台为1(高电平),因此接收者根据电平掉到了0来知道通信开始了。
接收者通过检查是否收到了BSS0 (1)或FES (0)来判断是否完成接收。
需要注意的是,每个位需要8个周期同字节没有关系。每个字节的传输需要80个周期,BSS0和BSS1需要16个周期,其他位需要64个周期[译者注:假设传输一个字节0x5A,即8位,二进制为:01011010,传输的帧格式为: 0 1 1 0 0 1 0 1 1 0 1 0 0 1,其中每一位分别为TSS、FSS、BSS0、BSS1、8位要传输的数据、FES、TES。每个位的传输时间是8个周期,呢么一个字节的传输周期是8 *(1位TSS + 1位FSS + 1位BSS0 + 1位BSS1 + 8位数据 + 1位FES + 1位TES)=80个周期,其中BSS0和BSS1总共需要16个周期,其他的位需要64个周期]。此外,还需要注意的是BSS0为1,BSS1为0。
Clocks are resynchronized when the voted signal changes from 1 to 0, if the receiver was in either idle state or expecting BSS1.
So the clock is synchronized when the transmission starts and between BSS0 and BSS1. As synchronization is done on the voted signal, small transmission errors during synchronization that affect the boundary bits may skew the synchronization no more than 1 cycle. As there are at most 88 cycles between synchronization (BSS1, 8 bits of the last byte, FES and TES - 11 bits of 8 cycles each), and the clock drift is no larger than 1 per 300 cycles, the drift may skew the clock no more than 1 cycle. Small transmission errors during the receiving may affect only the boundary bits. So in the worst case the two middle bits are correct, and thus the sampled value is correct.
Here's an example of a particularly bad case - error during synchronization, a lost cycle due to clock drift and error in transmission.
Errors that happened in the example
尽管有这么多错误,通信接收仍然是正确的。
All except the first are synchronized by the 1->0 edge in the transmission fragment shown.
要发送的信号 | 1 | 0 | 1 | 0 | 1 | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
发送的信号 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
总线上的信号 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 |
接收到得信号 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | X | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 |
5个大多数表决 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | X | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
在开发FlexRay总想和/或解决FlexRay总线问题时,检查硬件的信号非常重要。逻辑分析仪和总线分析仪可以收集、分析、解码、存储信号,可以查看高速波形。
【原文出处】http://write.blog.csdn.net/postedit/6725706