博客專(zhuān)欄

EEPW首頁(yè) > 博客 > 如何調(diào)整CAN位寬容忍度?

如何調(diào)整CAN位寬容忍度?

發(fā)布人:美男子玩編程 時(shí)間:2024-10-17 來(lái)源:工程師 發(fā)布文章

CAN位寬容忍度是指在控制器局域網(wǎng)絡(luò)(CAN, Controller Area Network)中允許時(shí)鐘同步的誤差范圍。這是CAN網(wǎng)絡(luò)正常通信時(shí)的關(guān)鍵因素之一,因?yàn)镃AN協(xié)議依賴(lài)位同步來(lái)確保多個(gè)節(jié)點(diǎn)在總線上正確解碼數(shù)據(jù)。


CAN位寬容忍度確保節(jié)點(diǎn)之間由于時(shí)鐘偏差或抖動(dòng)而導(dǎo)致的微小時(shí)間誤差不會(huì)導(dǎo)致通信故障。


CAN網(wǎng)絡(luò)的各個(gè)節(jié)點(diǎn)通過(guò)定時(shí)參數(shù)將位寬(bit width)劃分為幾個(gè)時(shí)間段,稱(chēng)為時(shí)間量子(Time Quanta, TQ)。一個(gè)完整的CAN位由多個(gè)時(shí)間量子組成,通常分為4個(gè)階段:

  • 同步段(Synchronization Segment, Sync_Seg): 用于檢測(cè)邊沿同步。

  • 傳播段(Propagation Segment, Prop_Seg): 傳播延遲。

  • 相位緩沖段1(Phase Buffer Segment 1, Phase_Seg1): 用于補(bǔ)償傳播延遲和節(jié)點(diǎn)時(shí)鐘的容差。

  • 相位緩沖段2(Phase Buffer Segment 2, Phase_Seg2): 用于與實(shí)際接收到的邊沿調(diào)整同步。


在CAN網(wǎng)絡(luò)中,位寬容忍度是由相位緩沖段1(Phase_Seg1)和相位緩沖段2(Phase_Seg2)決定的。這兩個(gè)段用于調(diào)整每個(gè)節(jié)點(diǎn)的時(shí)鐘,使它們保持同步。CAN控制器可以通過(guò)調(diào)整這些段的長(zhǎng)度來(lái)補(bǔ)償時(shí)鐘誤差,進(jìn)而實(shí)現(xiàn)對(duì)位寬容忍度的管理。


調(diào)整CAN位寬容忍度的關(guān)鍵是正確設(shè)置CAN定時(shí)寄存器中的相關(guān)參數(shù)。以下是主要的定時(shí)參數(shù):

  • 時(shí)鐘周期(TQ, Time Quanta): 可以通過(guò)調(diào)整CAN控制器的分頻器來(lái)設(shè)置一個(gè)TQ的長(zhǎng)度。

  • 同步跳轉(zhuǎn)寬度(SJW, Synchronization Jump Width): 當(dāng)接收到的邊沿時(shí)間與預(yù)期不同步時(shí),SJW定義了允許的時(shí)間跳躍范圍。

    增大SJW可以容忍更大的時(shí)鐘誤差。

  • 相位緩沖段1和相位緩沖段2的長(zhǎng)度: 這些段的長(zhǎng)度越大,容忍的誤差范圍越大,但也會(huì)影響傳輸速度。


調(diào)整CAN位寬容忍度的步驟:

  • 選擇CAN總線速度總線速度通常取決于網(wǎng)絡(luò)中的節(jié)點(diǎn)要求和線纜長(zhǎng)度(例如,500 kbps 或 1 Mbps)。

  • 設(shè)置時(shí)鐘周期TQ根據(jù)CAN控制器時(shí)鐘頻率和總線速率來(lái)計(jì)算每位的時(shí)間量子數(shù)。公式為:

  • 調(diào)整同步跳轉(zhuǎn)寬度SJW通過(guò)設(shè)置同步跳轉(zhuǎn)寬度來(lái)容忍邊沿與預(yù)期位置的偏移。如果網(wǎng)絡(luò)中節(jié)點(diǎn)的時(shí)鐘偏差較大,可以增加SJW的值,以允許更大的時(shí)鐘跳躍。

  • 配置相位緩沖段調(diào)整Phase_Seg1和Phase_Seg2的長(zhǎng)度,確保時(shí)鐘誤差在可接受范圍內(nèi)。常見(jiàn)的做法是讓Phase_Seg1的長(zhǎng)度略大于Phase_Seg2,以提供更大的時(shí)鐘調(diào)整能力。


例如,使用的CAN控制器時(shí)鐘為8 MHz,要配置CAN總線的速度為500 kbps,具體步驟如下:

1、每位的時(shí)間量子數(shù)(TQ):CAN速度為500 kbps,因此每位占用的時(shí)間為:

這意味著一位的長(zhǎng)度應(yīng)為2微秒。


2、時(shí)鐘周期8 MHz時(shí)鐘頻率,1個(gè)時(shí)鐘周期為125 ns。則一個(gè)位需要的時(shí)間量子數(shù)(TQ)為:


3、設(shè)置同步段和相位緩沖段:根據(jù)總線速度和網(wǎng)絡(luò)條件,設(shè)置同步段1 TQ,傳播段6 TQ,相位緩沖段1為4 TQ,相位緩沖段2為3 TQ,這樣就提供了足夠的時(shí)鐘容忍度。


4、同步跳轉(zhuǎn)寬度SJW:設(shè)置SJW為2 TQ,容許小范圍的跳躍調(diào)整。


假設(shè)網(wǎng)絡(luò)中某些節(jié)點(diǎn)的時(shí)鐘精度較差,為了容忍這些節(jié)點(diǎn)的時(shí)鐘誤差,可以采取以下措施:

  • 增加SJW的寬度,例如從2 TQ調(diào)整為4 TQ。

  • 增加相位緩沖段1和相位緩沖段2的長(zhǎng)度,以允許更多的時(shí)鐘調(diào)整空間。

    例如,將相位緩沖段1從4 TQ調(diào)整為6 TQ,將相位緩沖段2從3 TQ調(diào)整為5 TQ。


這樣可以進(jìn)一步增強(qiáng)對(duì)時(shí)鐘誤差的容忍度,確保在有一定時(shí)鐘偏差的節(jié)點(diǎn)中仍然保持穩(wěn)定的通信。


*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



關(guān)鍵詞: CAN

技術(shù)專(zhuān)區(qū)

關(guān)閉