通信方式分為兩種,同步串行通信與異步串行通信。CAN-bus屬于異步串行通信的方式。同步串行通信和異步串行通信的波形圖如下圖所示:
同步串行通信和異步串行通信特點比較可參見下表:
|
通信類型 |
同步串行通信 |
異步串行通信 |
|
時鐘信號 |
需要時鐘信號線 |
無需時鐘信號線 |
|
采樣點 |
采樣點由時鐘信號決定 |
由接收者內部定時觸發 |
|
缺點 |
多了一條時鐘線 |
波特率誤差會產生通信錯誤 |
異步串行通信的優點是減少了一根時鐘線,缺點是各接收器的時鐘不可能完全一致,總是會有偏差,有些偏快,有些偏慢,這些誤差會累計知道通信出錯。
如下圖所示為標準波特率時采集的數據:

如下圖兩幅圖分別為波特率偏大20%和波特率偏小20%時采樣的數據。

由上述幾幅圖可以看出,由于各接收器的時鐘可能會存在偏差,這就導致傳輸一兩個位時。誤差可能看不出來,但是傳輸的位數變多了之后,這些誤差會累計直到通信出錯。
那么如何解決這個問題呢?
同步!
同步就像給鐘表校時一樣,隔一段時間所有節點的時鐘就同步一次。這樣盡管大家的時鐘仍有誤差,但是可以消除累計誤差。
CAN-bus規定信號的跳變沿時刻進行同步,因此只要信號發送變化,節點時鐘就會被同步。如下圖所示,累計的誤差可以限制在兩個跳變沿之間,減少錯誤的發生。
然而這種同步方式又會帶來新的問題,比如說發送多個相同位時,并無跳變沿可用于同步,這樣就會導致誤差不斷累積,最后導致通信出錯。
那么CAN-bus如何消除這種累計誤差?
CAN-bus通過位填充提供同步信號,從而消除累計誤差。CAN-bus規定,如果傳輸的信號連續5個位時相同的,就要插入一個電平相反的位,這個額外插入的位稱為“填充位”。
接下來先讓我們了解一下位時間這個概念。
一個標稱的位時間=1/波特率
一個標稱的位時間分為:同步段、傳播段、相位緩沖段1、相位緩沖段2。
其中采樣點時最為重要的一個概念。
只有采樣點設置正確了,我們才能進行正確的采樣,獲得正確的數據。
不同的波特率下,1位時間的時間份額不相同,采樣點也不相同,如下圖為不同波特率下的采樣點設置。
不同波特率下的時間份額設置可參考下表。
虹科汽車電子與全球頂尖公司技術合作,產品全面覆蓋CAN/CAN FD/LIN/TSN/車載以太網等協議,提供數據采集、監控、分析、仿真和一致性測試,架構開發服務解決方案。
虹科的總線培訓課程已經累計超過40萬的播放量。我們有專業的技術工程師傳播前沿知識,提供專業的技術支持和解答、為您找到最適合的解決方案!
想要了解更多車輛網絡解決方案,歡迎前往虹科汽車電子官網!