影響CAN匯流排穩定的因素有很多,其中波特率是一項非常重要的指標,很多工程師在選擇波特率時非常頭疼。今天我們就來說說該如何快速解決特殊波特率計算的問題。
CAN匯流排採用的是非同步串列通信,也就是沒有單獨的時鐘線來保證各個收發器之間時鐘的一致,每個收發器是按事先設置的波特率來對匯流排上的電平進行分位。因此波特率設置準確對CAN匯流排的穩定通信來說非常重要。
CAN匯流排里我們可以通過對CAN節點裡的位定時寄存器的控制來實現不同波特率的通信。CAN協議里將一個位時間分為同步段、傳播段、相位緩衝段1和相位緩衝段2。每個段的時間長度都可以用一個整數的基本時間單位表示,該基本時間單位由系統的時鐘振蕩器分頻得到。
同步段位於一個位的起始位置,CAN-bus規定跳變沿為同步信號,但是發送節點發送一個位跟接收節點接收到這個位之間存在網路傳播延遲,傳播段則是為了補償這段傳播延遲,由於採樣點位置在相位緩衝段1跟相位緩衝段2之間,通過設置相位緩衝段1和相位緩衝段2的值,可以調整採樣點位置,保證每個位採樣點一致。緩衝段的長度調節範圍則是由同步跳轉寬度(SJW)決定。