• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 博客專欄

    EEPW首頁 > 博客 > 如何調整CAN位寬容忍度?

    如何調整CAN位寬容忍度?

    發布人:美男子玩編程 時間:2024-10-17 來源:工程師 發布文章

    CAN位寬容忍度是指在控制器局域網絡(CAN, Controller Area Network)中允許時鐘同步的誤差范圍。這是CAN網絡正常通信時的關鍵因素之一,因為CAN協議依賴位同步來確保多個節點在總線上正確解碼數據。


    CAN位寬容忍度確保節點之間由于時鐘偏差或抖動而導致的微小時間誤差不會導致通信故障。


    CAN網絡的各個節點通過定時參數將位寬(bit width)劃分為幾個時間段,稱為時間量子(Time Quanta, TQ)。一個完整的CAN位由多個時間量子組成,通常分為4個階段:

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

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

    • 相位緩沖段1(Phase Buffer Segment 1, Phase_Seg1): 用于補償傳播延遲和節點時鐘的容差。

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


    在CAN網絡中,位寬容忍度是由相位緩沖段1(Phase_Seg1)和相位緩沖段2(Phase_Seg2)決定的。這兩個段用于調整每個節點的時鐘,使它們保持同步。CAN控制器可以通過調整這些段的長度來補償時鐘誤差,進而實現對位寬容忍度的管理。


    調整CAN位寬容忍度的關鍵是正確設置CAN定時寄存器中的相關參數。以下是主要的定時參數:

    • 時鐘周期(TQ, Time Quanta): 可以通過調整CAN控制器的分頻器來設置一個TQ的長度。

    • 同步跳轉寬度(SJW, Synchronization Jump Width): 當接收到的邊沿時間與預期不同步時,SJW定義了允許的時間跳躍范圍。

      增大SJW可以容忍更大的時鐘誤差。

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


    調整CAN位寬容忍度的步驟:

    • 選擇CAN總線速度總線速度通常取決于網絡中的節點要求和線纜長度(例如,500 kbps 或 1 Mbps)。

    • 設置時鐘周期TQ根據CAN控制器時鐘頻率和總線速率來計算每位的時間量子數。公式為:

    • 調整同步跳轉寬度SJW通過設置同步跳轉寬度來容忍邊沿與預期位置的偏移。如果網絡中節點的時鐘偏差較大,可以增加SJW的值,以允許更大的時鐘跳躍。

    • 配置相位緩沖段調整Phase_Seg1和Phase_Seg2的長度,確保時鐘誤差在可接受范圍內。常見的做法是讓Phase_Seg1的長度略大于Phase_Seg2,以提供更大的時鐘調整能力。


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

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

    這意味著一位的長度應為2微秒。


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


    3、設置同步段和相位緩沖段:根據總線速度和網絡條件,設置同步段1 TQ,傳播段6 TQ,相位緩沖段1為4 TQ,相位緩沖段2為3 TQ,這樣就提供了足夠的時鐘容忍度。


    4、同步跳轉寬度SJW:設置SJW為2 TQ,容許小范圍的跳躍調整。


    假設網絡中某些節點的時鐘精度較差,為了容忍這些節點的時鐘誤差,可以采取以下措施:

    • 增加SJW的寬度,例如從2 TQ調整為4 TQ。

    • 增加相位緩沖段1和相位緩沖段2的長度,以允許更多的時鐘調整空間。

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


    這樣可以進一步增強對時鐘誤差的容忍度,確保在有一定時鐘偏差的節點中仍然保持穩定的通信。


    *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



    關鍵詞: CAN

    技術專區

    關閉
    主站蜘蛛池模板: 周宁县| 巍山| 高邑县| 肃宁县| 土默特右旗| 松阳县| 恩平市| 十堰市| 巧家县| 望江县| 弥勒县| 双城市| 海口市| 天全县| 富顺县| 花莲市| 和田县| 麻阳| 嘉善县| 库伦旗| 鄂温| 锦屏县| 河曲县| 平远县| 永济市| 罗甸县| 汨罗市| 武穴市| 壤塘县| 库伦旗| 蚌埠市| 建阳市| 吉林省| 弋阳县| 富阳市| 肥城市| 长汀县| 阜康市| 巴林右旗| 布尔津县| 瓦房店市|