如何計(jì)算CAN通信波特率
在CAN總線系統(tǒng)中,波特率的計(jì)算是一個(gè)關(guān)鍵步驟,它確保網(wǎng)絡(luò)上的所有設(shè)備能夠以相同的速率進(jìn)行通信。
1
理論
波特率的計(jì)算涉及到幾個(gè)關(guān)鍵參數(shù),包括CAN控制器的時(shí)鐘頻率、分頻因子、以及位時(shí)間的不同部分。
時(shí)鐘頻率(Fclk)
CAN控制器的時(shí)鐘頻率。
這是CAN模塊的輸入時(shí)鐘,通常來(lái)自于微控制器的主時(shí)鐘。
分頻因子(Prescaler)
用于從主時(shí)鐘頻率中分頻得到位時(shí)間計(jì)數(shù)器的時(shí)鐘頻率。
分頻因子可以增大位時(shí)間,使得CAN總線能夠在較低的波特率下工作。
位時(shí)間(Bit Time)
位時(shí)間由幾個(gè)部分組成,總共需要滿足規(guī)定的時(shí)間量子(Time Quanta,TQ)數(shù):
同步段(Sync Seg):
用于同步不同節(jié)點(diǎn)上的數(shù)據(jù)邊緣,固定為1 TQ。
傳播時(shí)間段(Prop Seg):
用于補(bǔ)償網(wǎng)絡(luò)中的物理延遲,長(zhǎng)度可以調(diào)整。
相位緩沖段1(Phase Seg1)和相位緩沖段2(Phase Seg2):
用于對(duì)抗信號(hào)抖動(dòng)和網(wǎng)絡(luò)延遲,長(zhǎng)度可調(diào)。
基于上述參數(shù),CAN波特率的計(jì)算公式如下:
波特率 = Fclk / (Prescaler * Bit Time)
其中,Bit Time = Sync Seg + Prop Seg + Phase Seg1 + Phase Seg2。
假設(shè)一個(gè)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
實(shí)踐
以AT32F413這款MCU為例,CAN波特率計(jì)算公式如下所示:
CAN 總線的額定位時(shí)間由 3 部分組成:
1、同步段(SYNC_SEG),該段占用 1 時(shí)間單元,即公式中的1 x t
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。