FlexRay數據傳輸
FlexRay規范定義了OSI參考模型中的物理層和數據鏈路層,每個FlexRay節點通過一個FlexRay Controller和兩個FlexRay Transceivers(用于通道冗余)與總線相連,FlexRay Controller負責Flexray協議中的數據鏈路層,FlexRay Transceivers則負責總線物理信號接收發送。

FlexRay可采用屏蔽或不屏蔽的雙絞線,每個通道有兩根導線,即總線正(Bus-Plus,BP)和總線負(Bus-Minus,BM)組成。采用不歸零法(NRZ,Non-Return to Zero)進行編碼。
可通過測量BP和BM之間的電壓差識別總線狀態,這樣可減少外部干擾對總線信息的影響,因這些干擾同時作用在兩根導線上可相互抵消。每一通道需使用80~110歐的終端電阻。將不同的電壓加載在一個通道的兩根導線上,可使總線有四種狀態:Idle_Lp(Low power)、Idle、Data_0和Data_1
顯性:差分電壓不為0V(Data_0和Data_1)
隱性:差分電壓為0V(Idle_Lp、Idle)

FlexRay幀格式
FlexRay幀由起始段、有效負載段和結束段三大部分構成。

1、起始段:由40個bits構成(5 bytes),包括
-Status Bits-5bits
-Frame ID-11bits
-Payload Length-7 bits
-Hedaer CRC-11bits
-Cycle count -6 bits
其中5bits的Status Bits包含四類指示符:凈荷指示位(Payload Preamble Indicator)、空幀指示位(Null Frame Indicator-指明該幀是否為無效幀)、同步幀指示位(Sync Frame Indicator-指明該幀是否為一個同步幀)和起始幀指示位(Startup Frame Indicator-指明該幀是否為起始幀)。
Frame ID:數據標志符,定義了在時間窗口(Slot)中發送的號碼,每個通道數據標志符需唯一。
Payload Length:工作區長度,指示該幀含有的有效數據長度,在每個Cycle下的靜態區中,每幀的數據長度是相同的,在動態區的長度則是不同的。
Hedaer CRC:用于起始段冗余校驗,檢查傳輸中的錯誤。
Cycle count:循環計數器。
2、有效負載段
包含要傳輸的有效數據,有效數據長度最大254個Bytes(0~127個Words),
3、結束段
包含24 Bits的檢驗域,由起始段和有效負載段計算得出的CRC校驗碼,計算CRC時,根據網絡傳輸順序從保留位到有效負載段的最后一位放到CRC生成器中進行計算。
FlexRay編碼
編碼的過程實際就是對要發送的數據進行一定的打包處理,即在節點可傳輸帶有主計算機數據的數據前需將其轉換為“比特流(Bitstream)”。


RxD為接收信號,TxD為發送信號,TxEN為通訊控制器請求數據,對于靜態幀和動態幀分別按照如下方式進行編碼。