4、硬同步
接收單元在總線空閑狀態檢測出第一個下降沿時(對應報文的SOF下降沿)進行的同步調整。在檢測到SOF的下降沿時,直接將此下降沿的位置認為是SS段,然后按照位時序對信號進行采樣,達到同步的效果。硬同步的過程如圖5所示。
圖5 硬同步將下降沿位置標識為SS段
5、重同步
硬同步只是在總線空閑時檢測出下降沿(幀起始)時進行,后續CAN報文數據位的同步則需要通過調整位時序來進行重同步。在接收過程中檢測出總線上的下降沿來臨時,根據SJW值通過加長PBS1段,或縮短PBS2段,以調整同步。但如果發生了超出SJW值的誤差時,最大調整量不能超過SJW值。重同步的過程如圖6、圖7所示。
圖6 同步前下降沿延后2個Tq
圖7 同步后PBS1增加2個Tq
其中,圖6可以有另一種理解:CAN總線上通訊的誤差我們也可以量化,量化成Tq數。圖6中對誤差的量化結果為下降沿延后2個Tq,因此在圖7重同步時在PBS1段增加2個Tq;但總線誤差真的就剛好是2個Tq嗎?答案是否定的,當位時序總Tq數越大,對誤差的量化就會越精確,重同步的同步效果就越理想。因此,合理配置位時序的Tq數極為重要。
6、位時序計算
位時序在底層、微觀上可體現為誤差的量化,在上層、宏觀上又體現為波特率(Baud)和采樣點位置(Samp_pos)。在位時序中,波特率的表現形式為總Tq數,采樣點位置的表現形式為各段的Tq數(采樣點位置處于PBS1和PBS2的交界處)。他們之間的換算關系如下。其中:CLK為當前時鐘頻率,DIV是分頻系數。
若當前時鐘頻率CLK=80M,用戶配置Baud =1M,Samp_pos =80%。DIV=1時,Tq個數N = 80M/1M = 80;DIV=2時,Tq個數N = 80M / 2 / 1M = 40。
以40個Tq數為例(SS+PTS+PBS1+PBS2=40),各段Tq數應滿足以下計算公式,其中TSEG1為PTS和PBS1的合并(CAN控制器將二者視為一段),TSEG2為PBS2段。
計算可得SS=1,TSEG1 = 31,TSEG2=8。通過計算結果配置CAN控制器相應寄存器,即可得到相應的波特率及采樣點位置。
注意,不同的分頻系數DIV,對應不同的Tq數,但都滿足位時序要求,在選擇時我們應盡可能選擇小的分頻系數(多的Tq數),這樣的位時序調整會更加準確,同步效果越理想。
總結
CAN總線沒有時鐘線,嚴格來講并不是同步通訊,但它存在位時序調整這種特殊的同步機制,使得CAN通訊的可靠性無限接近于同步通訊。因此,即使汽車的電子控制單元(ECU)在不斷增加,但CAN總線依舊憑借自身的高可靠性,在汽車控制領域被大量應用。
ZPS-CANFD是致遠電子總線分析儀第二代CAN總線開發輔助工具,是適用于CANFD、CAN、LIN總線的測量及測試儀器,支持總線數據的發送和接收,高層協議解析及診斷,能對CANFD、CAN總線物理層電氣信號實時采集和記錄,并附帶有高速模擬通道、通用數字IO及模擬IO,通過提供的硬件接口及軟件功能,用戶能夠便捷地構建總線信號測量與分析、節點功能仿真及測試、網絡可靠性診斷及評估的自動化系統。