FlexRay

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013719984/article/details/46808773

FLexRay硬件

用的的发送接收芯片为TJA1080

FlexRay参数介绍

传播延迟

BSS(字节起始序,byte start sequence)的下降沿在发送和接受模块之间的延时
cPropagationDelayMax 最大延时;

非对称延时

TSS(传输起始序列Transmission Start Sequence)
特定位的理想位边界与实际位边界之间的偏差;
采样计数器等于常数(cStrobeOffset = 5,page 44)的值为bit value;
超前状态最多容忍到达的边沿早与预期边沿3个采样时间(10M-12.5ns)
滞后状态最坏情况是晚4个采样时间

截断

通道会截断TSS
dFrameTSSTruncation

冲突

冲突时出现噪声?

唤醒

电气信号

page 27
Idle_LP Idle Data_1 Data_0
BP—Transimitter –>Transimitter
BM —-Receiver –>Receiver
UBus=uBP-uBM
唤醒时序
Idle(1) ->Data_0(1)->Idle(2)->Data_0->(2)->Idle(3)
dWU01 –>Data_0(1)的持续时间
dWU01>4us;dWU02>4;dWU03>4;*dWU04>4
dWU=dWU01+dWU02+dWU03+dWU04<48us
接收端检测到的要求
dWU0detect>1 <4us
dWUidledetect>1 <4
dWUtimeout 超时时间>48 <140
BD总线驱动器
CC通信控制器
nStartPath 从ECUM到ECUN之间的有源星型的数量(0~2)
###通信控制要求
建立在最坏情况下的位时间和位选通偏移与采用正常位时间的关系:
dCCRxBit<=(1-nStrobeOffset/nSamplesPerBit)*gdBit(位时间)
nStrobeOffset 为定值5;

SDL规则

FlexRay协议中的时间表示法:
最小时间节拍(Microtick)、最大时间节拍(Macrotick)
uT计时器
MT计时器
一个Macrotick计时器采用MTG产生校正的Macrotick
ST计时器定义了一个以位采样时钟节拍(即采样节拍)为单位进行计数的计时器
在Microtick时基的时间节拍和位采样节拍之间存在一个确定关系。具体地讲:一个Microtick=pSamplesPerMicrotick(整数)个采样节拍组成
某个时间发生时盖上时间戳时间戳的基本时间间隔为一个Microtick;

FlexRay协议运行原理

核心机制

编码和解码(机制的主要进程为CODEC)
媒体接入控制(机制的主要进程为MAC)
帧和特征符处理(机制的主要进程为FSP)
时钟同步(机制的主要进程为MTG和CSP)
CHI—–控制器主机接口
POC—-协议运行控制
CC电源模式变化阀值

名称 描述
PowerOnPowerThreshold 从poweroff转换到poweron状态的电压阀值
powerOffPowerThreshold 从poweron状态转换到poweroff状态的电压阀值
POCOperationalTimeThreshold 必须保持该电压阀值,才能从reset状态转换到POCoperation状态
POCOperationalTimeThreshold 时间必须达到,才能进入POCoperation状态
ResetPowerThreshold 如果保持该电压,从POCoperational转换到reset状态

###编码与解码<68>
TSS由连续的低电平组成,低电平持续的时间有参数gdTSS Transmitter指定
FSS(帧起始序列,Frame Start Sequence)补偿TSS后第一个字节的量化误差,FSS由一个位时间gdBit的高电平组成
BSS(字节起始序列)有一个gdBit的高电平和一个gdBit的低电平组成。帧数据的每个字节都是以一个扩展字节序列(extended byte sequence)的形式发送到通道上的,即每8个数据位前就有一个BSS
FES(帧结束序列,Frame End Sequence)有一个gdBit的低电平紧跟一个gdBit的高电平组成。
对于静态断中发送的数据帧,FES的第2位为传输位流的最后一位?
DTS(动态尾部序列,Dynamic Trailing Sequence),动态段发送数据帧时才使用,用于指示发送器的最小时隙动作点(minislot action point)的精确时间点;组成:一段可变长度的低电平(最少一个gdBit,在这个最小时间后,节点一直输出低电平到下一个最小时隙动作点)和一段时间长度固定的高电平,可将其设为一下范围中的任意值:>2gbBit 小于gdMinislot+2gbBit ????
### 特征符编码
定义了3中类型的特征符,分别有两种不同的特征符位模式予以表述:
模式一:CAS(冲突避免特征符)和MTS(媒体接入测试特征符)
模式二:WUS(唤醒特征符)
CASMTS的时序
先发送TSS,随后发送持续cdCAS的低电平,通过prepCASstream函数实现
WUS时序
gdWakeupSymbolTxLow 长的低电平和gdWakeupSymbolTxIdle 长的’空闲’组成。并且重复发送pWakeupPatternWUS 生成一个唤醒模式。时序中不需要TSS 节点必须在WUPgdWakeupSymbolTxIdle 时间内检测出通道活动
###采样与多数表决
在每个采样周期中,节点将最近cVotingSamples 个采样点存储,高低电平的数量决定了采样的数据是高电平还是低电平
###时钟校验与位选通
位同步沿,每次选通一个高电平位,节点就会使能位同步沿检测
当zVotedVal从高电平转变为低电平时,节点就位同步使能,重新计入采样计数,从下一个为2;

通道空闲检测

非空闲状态检测到cChannelIdleDelimiter 个选通高电平位被解码,则认为通道变为空闲。节点正在进行通信元解码时,不会进行通信空闲检测

动作点和时间参照点

AP(Action Point)是节点根据校准的本地时基执行指定动作的时间点
pMicroPerCycleTRP 次级TRP(时间参照点)的时间戳
zPrimaryTRPTRP
zPrimaryTRP =pMicroPerCycleTRP -pDecodingCorrection (固定偏移量,节点参数)-pDelayCompensation(延迟补偿项)

扫描二维码关注公众号,回复: 4611996 查看本文章

帧与特征符解码

gdSampleClockPeriod (channel sample clock period,通道采样时钟周期)
gdBit 可配置的位时间长度。
cSamplesPerBit 每位采样次数
gdBit = gdSampleClockPeriod * cSamplesPerBit
Microtick时间=pSamplesPerMicrotick * gdSampleClockPeriod

帧解码

通道空闲分割符是指先于CHIRP(通道空闲识别点)的cChannelIdleDelimiter (定值为11)个连续的高电平位时间

特征符解码

CASMTS解码
TSS+介于cdCASRxLowMingdCASRxLowMax的低电平

WUS解码

两个WUS才有效

第一个WUS有至少gdWakeupSymbolRxLow 长的低电平
gdWakeupSymbolRxIdle 长的空闲组成
第二个WUS至少有gdWakeupSymbolRxLow 长的低电平
总时间不超过gdWakeupSymbolRxWindow

数据帧帧格式

数据由帧头、有效负载数据段和帧尾组成

帧头

保留位—-低电平(0)(1位)
有效负载预先指示位(1位)
静态段—数据段开始是否为网络管理向量
动态段—数据段开始为消息ID(0不包含)
空帧指示位(1位)0表示数据段不包含数据
同步帧指示位(1进行时钟同步)
启动帧指示位(startup frame),只有冷启动节点(codestart node)允许发送启动帧,并且冷启动节点只能将同步帧设置为启动帧
帧ID(11位)
有效负载数据长度(7位)以字为单位,长度值为0~*cPayloadLengthMax*,一个通信周期中所有的静态帧的有效数据长度都应该固定且相同;被设置为gPayloadLengthStatic个字
帧头是CRC11(11位)
周期计数vCycleCounter

有效负载数据段

帧CRC的海明距离为6?????
静态帧:0~12可以作为NMVector(网络管理向量),长度有gNetwordManagementVectorLength决定
动态帧:0~15可以配置成消息ID字段
NMVector同一节点簇都必须配置成一样,
帧尾—24位的帧CRC

符号窗

符号窗包含gbSymbolWindow 个Macrotick
gbSymbolWindow =gdActionPointOffset(距离时隙起始点的偏移长度)+特征符+cChannelIdleDelimiter +channel idle delimiter+channel idle

参数说明

gPayloadLengthStatic(静态帧中有效数据长度<85>)
gdStaticSlot(静态时隙均包含相同的Macrotick的数量)
gNumberOfStaticSlots(静态段内静态时隙的数量)
adActionPointDifference()
gdMinislot(动态段中每个时隙包含的Macrotick数量)
gNumberOfMinislots(动态段中最小时隙数量)
gdSymbolWindow(符号窗中包含的macrotick数量)
gdNIT
vSlotCounter(时隙计数器的状态变量)
gNumberOfStaticSlots(静态段内的静态时隙的数量)
gStaticSlot(静态时隙包含的Macrotick数量)
gMaxWithoutClockCorrectionFatal(每个
gMaxWithoutClockCorrectionPassive
vVotingDelay(表决延迟,协议层相互传输产生)
cPayloadLengthMax(动态帧的最大长度以字为单位)
cClockDeviationMax (最大的时钟偏差,等于1500/1000000=0.0015)
gListenNoise
vClockCorrectionFailed

公式说明

gMacroPerCycle(5000)[MT] = gdStaticSlot(120)[MT] * gNumberOfStaticSlots(20) + adActionPointDifference(0)[MT] + gdMinislot(40)[MT] * gNumberOfMinislots(40) + gdSymbolWindow(59)[MT] + gdNIT(805)[MT]

猜你喜欢

转载自blog.csdn.net/u013719984/article/details/46808773