如何調(diào)整CAN位寬容忍度?
CAN位寬容忍度是指在控制器局域網(wǎng)絡(CAN, Controller Area Network)中允許時鐘同步的誤差范圍。這是CAN網(wǎng)絡正常通信時的關(guān)鍵因素之一,因為CAN協(xié)議依賴位同步來確保多個節(jié)點在總線上正確解碼數(shù)據(jù)。
CAN位寬容忍度確保節(jié)點之間由于時鐘偏差或抖動而導致的微小時間誤差不會導致通信故障。
CAN網(wǎng)絡的各個節(jié)點通過定時參數(shù)將位寬(bit width)劃分為幾個時間段,稱為時間量子(Time Quanta, TQ)。一個完整的CAN位由多個時間量子組成,通常分為4個階段:
同步段(Synchronization Segment, Sync_Seg): 用于檢測邊沿同步。
傳播段(Propagation Segment, Prop_Seg): 傳播延遲。
相位緩沖段1(Phase Buffer Segment 1, Phase_Seg1): 用于補償傳播延遲和節(jié)點時鐘的容差。
相位緩沖段2(Phase Buffer Segment 2, Phase_Seg2): 用于與實際接收到的邊沿調(diào)整同步。
在CAN網(wǎng)絡中,位寬容忍度是由相位緩沖段1(Phase_Seg1)和相位緩沖段2(Phase_Seg2)決定的。這兩個段用于調(diào)整每個節(jié)點的時鐘,使它們保持同步。CAN控制器可以通過調(diào)整這些段的長度來補償時鐘誤差,進而實現(xiàn)對位寬容忍度的管理。
調(diào)整CAN位寬容忍度的關(guān)鍵是正確設置CAN定時寄存器中的相關(guān)參數(shù)。以下是主要的定時參數(shù):
時鐘周期(TQ, Time Quanta): 可以通過調(diào)整CAN控制器的分頻器來設置一個TQ的長度。
同步跳轉(zhuǎn)寬度(SJW, Synchronization Jump Width): 當接收到的邊沿時間與預期不同步時,SJW定義了允許的時間跳躍范圍。
增大SJW可以容忍更大的時鐘誤差。
相位緩沖段1和相位緩沖段2的長度: 這些段的長度越大,容忍的誤差范圍越大,但也會影響傳輸速度。
調(diào)整CAN位寬容忍度的步驟:
選擇CAN總線速度:總線速度通常取決于網(wǎng)絡中的節(jié)點要求和線纜長度(例如,500 kbps 或 1 Mbps)。
設置時鐘周期TQ:根據(jù)CAN控制器時鐘頻率和總線速率來計算每位的時間量子數(shù)。公式為:
調(diào)整同步跳轉(zhuǎn)寬度SJW:通過設置同步跳轉(zhuǎn)寬度來容忍邊沿與預期位置的偏移。如果網(wǎng)絡中節(jié)點的時鐘偏差較大,可以增加SJW的值,以允許更大的時鐘跳躍。
配置相位緩沖段:調(diào)整Phase_Seg1和Phase_Seg2的長度,確保時鐘誤差在可接受范圍內(nèi)。常見的做法是讓Phase_Seg1的長度略大于Phase_Seg2,以提供更大的時鐘調(diào)整能力。
例如,使用的CAN控制器時鐘為8 MHz,要配置CAN總線的速度為500 kbps,具體步驟如下:
1、每位的時間量子數(shù)(TQ):CAN速度為500 kbps,因此每位占用的時間為:
這意味著一位的長度應為2微秒。
2、時鐘周期:8 MHz時鐘頻率,1個時鐘周期為125 ns。則一個位需要的時間量子數(shù)(TQ)為:
3、設置同步段和相位緩沖段:根據(jù)總線速度和網(wǎng)絡條件,設置同步段1 TQ,傳播段6 TQ,相位緩沖段1為4 TQ,相位緩沖段2為3 TQ,這樣就提供了足夠的時鐘容忍度。
4、同步跳轉(zhuǎn)寬度SJW:設置SJW為2 TQ,容許小范圍的跳躍調(diào)整。
假設網(wǎng)絡中某些節(jié)點的時鐘精度較差,為了容忍這些節(jié)點的時鐘誤差,可以采取以下措施:
增加SJW的寬度,例如從2 TQ調(diào)整為4 TQ。
增加相位緩沖段1和相位緩沖段2的長度,以允許更多的時鐘調(diào)整空間。
例如,將相位緩沖段1從4 TQ調(diào)整為6 TQ,將相位緩沖段2從3 TQ調(diào)整為5 TQ。
這樣可以進一步增強對時鐘誤差的容忍度,確保在有一定時鐘偏差的節(jié)點中仍然保持穩(wěn)定的通信。
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。