博客專欄

        EEPW首頁 > 博客 > 如何計算CAN通信波特率

        如何計算CAN通信波特率

        發(fā)布人:美男子玩編程 時間:2024-01-10 來源:工程師 發(fā)布文章

        在CAN總線系統(tǒng)中,波特率的計算是一個關(guān)鍵步驟,它確保網(wǎng)絡(luò)上的所有設(shè)備能夠以相同的速率進(jìn)行通信。

        1

        理論

        波特率的計算涉及到幾個關(guān)鍵參數(shù),包括CAN控制器的時鐘頻率、分頻因子、以及位時間的不同部分。

        時鐘頻率(Fclk)

        • CAN控制器的時鐘頻率。

          這是CAN模塊的輸入時鐘,通常來自于微控制器的主時鐘。

        分頻因子(Prescaler)

        • 用于從主時鐘頻率中分頻得到位時間計數(shù)器的時鐘頻率。

          分頻因子可以增大位時間,使得CAN總線能夠在較低的波特率下工作。

        位時間(Bit Time)

        • 位時間由幾個部分組成,總共需要滿足規(guī)定的時間量子(Time Quanta,TQ)數(shù):


          • 同步段(Sync Seg):

            用于同步不同節(jié)點上的數(shù)據(jù)邊緣,固定為1 TQ。

          • 傳播時間段(Prop Seg):

            用于補償網(wǎng)絡(luò)中的物理延遲,長度可以調(diào)整。

          • 相位緩沖段1(Phase Seg1)和相位緩沖段2(Phase Seg2):

            用于對抗信號抖動和網(wǎng)絡(luò)延遲,長度可調(diào)。

        基于上述參數(shù),CAN波特率的計算公式如下:


        波特率 = Fclk / (Prescaler * Bit Time)

        其中,Bit Time = Sync Seg + Prop Seg + Phase Seg1 + Phase Seg2。

        假設(shè)一個CAN控制器有如下參數(shù):

        • Fclk = 16 MHz

        • Prescaler = 8

        • Sync Seg = 1 TQ

        • Prop Seg = 2 TQ

        • Phase Seg1 = 3 TQ

        • Phase Seg2 = 2 TQ

        • Bit Time = 1 + 2 + 3 + 2 = 8 TQ

        則波特率為:


        波特率 = 16 MHz / (8 * 8 TQ) = 16,000,000 / 64 = 250,000 bps (或250 kbps)

        2

        實踐

        以AT32F413這款MCU為例,CAN波特率計算公式如下所示:

        圖片


        CAN 總線的額定位時間由 3 部分組成:

        1、同步段(SYNC_SEG),該段占用 1 時間單元,即公式中的1 x t

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



        關(guān)鍵詞: CAN

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 松潘县| 那坡县| 英超| 阜新| 无为县| 静安区| 达州市| 黄浦区| 蛟河市| 简阳市| 孟连| 嘉义县| 湖口县| 米泉市| 武强县| 梧州市| 廉江市| 牟定县| 定日县| 客服| 清涧县| 嵩明县| 临清市| 隆回县| 监利县| 宣恩县| 祁门县| 循化| 龙游县| 崇文区| 千阳县| 德江县| 许昌县| 清苑县| 金平| 铁力市| 杂多县| 南平市| 久治县| 天津市| 南昌县|