基於MCP2515的CAN學習


CAN總線上的所有節點都必須具有相同的標稱比特率(Nominal Bit Rate)。

 

MCP2515通過DPLL(數字鎖相環)實現位定時,DPLL被配置成同輸入數據同步,並為發送數據提供標稱定時。DPLL將一個位時間分割為有最小單位為時間份額(Time Quanta,TQ)所組成的多個時間段。

 

CAN總線上的所有器件都必須使用相同的比特率。然而並非所有器件都要求具有相同的主振盪器時鍾頻率。對於采用不同時鍾頻率的器件,應通過適當設置波特率預分頻比以及每一時間段中的時間份額的數量來對比特率進行調整。

 

CAN位時間由互不重疊的時間段組成。每個時間段又由時間份額(TQ)組成。

CAN的標稱比特率(Nominal Bit Rate,NBR):在不需要再同步的情況下,理想發送器每秒發送的位數公式如下:

        NBR = fbit = 1/tbit

標稱位時間(Nominal Bit Time,NBT)(tbit)由互不重疊的段時間段組成,NBT為以下時間段之和。

    tbit = tSyncSeg + tPropSeg + tPS1 + tPS2

與NBT相關的參數是采樣點、同步跳轉寬度(Synchronization Jump Width,SJW)和信息處理時間(Information Processing Time,IPT)。

 

同步段(SyncSeg)為NBT中的首段,用於同步CAN總線上的各個節點,輸入信號的跳變沿就發生在同步段,該段持續時間為1TQ。

傳播段(PropSeg)用於補償各節點之間的物理傳輸延遲時間。傳輸延時時間為信號在總線上傳播時間的兩倍,包括總線驅動器延遲時間,傳播段的長度可編程設定為1--8TQ。

相位緩沖段1(PS1)和相位緩沖段2(PS2)

PS1、PS2用於補償總上的邊沿相位誤差。通過再同步,可以延長PS1(或縮短PS2)。PS1可編程設定為1--8TQ,而PS2可編程設定為2--8TQ。

采樣點

采樣點是位時間內的一個時間點,在該時間點,讀取總線電平並進行分析。采樣點位於PS1的終點。當采樣模式設置為每位采樣3次時例外。這種情況下,在PS1的終點仍然對某一位進行采樣時,前兩次的采樣時間間隔為TQ/2,而該位的值將根據三個采樣值中至少兩次采樣的相同值決定。

信息處理時間(IPT)

信息處理時間是確定采樣點的位電平所需要的時間。IPT從采樣點開始,以TQ計算,Microchip的CAN模塊將該時間長度定義為2TQ。PS2同樣開始於采樣點,且為位時間的最后一個時間段,因此PS2的最小值不能小於IPT。

                PS2min = IPT = 2TQ

同步跳轉寬度

同步跳轉寬度(SJW0)可通過編程設定為1--4TQ,他可對位時鍾進行必要的調整來保持與發送報文同步。

時間份額

組成位時間的每個段都由時間份額(TQ)組成。每個時間份額長度取決於振盪器周期(tOSC)通常TQ為兩個振盪器周期。TQ的長度等於一個TQ時鍾周期(tBRPCLK),可利用波特率預分頻器(BRP)對其進行編程設置。

 

 

STM32 CAN控制器的知識:

stm32復位后can處於睡眠模式,國際慣例在使用某個模塊時最好先調用XXX_DeInit函數使該模塊處於復位后的狀態,can模塊的函數為CAN_DeInit。

CAN_Init函數對can模塊進行初始化,這里設置了:

  對寄存器 CAN bit timing register (CAN_BTR),當CAN處於初始化模式時,該寄存器只能由軟件訪問

CAN_Prescaler,位時序寄存器中的波特率分頻器,取值范圍:1 --- 1024;該位域定義了時間單元tq的長度  tq = (分頻值+1)xtpclk;

CAN_Mode,位時序寄存器中的模式位,官方3.5.0固件庫給出四個取值CAN_Mode_Normal (正常模式)、CAN_Mode_LoopBack (回環模式)、CAN_Mode_Silent (靜默模式) 、CAN_Mode_Silent_LoopBack( 靜默回環模式)。這個官方固件庫的注釋不正確請注意甄別;

CAN_SJW,位時序寄存器中的重新同步跳躍寬度,為了重新同步,該位域定義了CAN硬件在每位中可以延長或縮短多少個時間單元tq的上限。tRJW(重新同步跳躍寬度)=tcan x(SJW值+1)。這里的tcan對照中英文數據手冊和固件庫確認等於tq時間單元,這里數據手冊里給出兩個標識tcan和tq來表示時間寬度沒搞懂為什么這么做。

CAN_BS1,位時序寄存器中的時間段1,該位域定義了時間段1占用了多少個tq時間單元,tBS1 = tcan x(時間段1值+1),此處tcan依舊等於tq;時間段1值取值:0 -- 15

CAN_BS2,位時序寄存器中的時間段2,該位域定義了時間段2占用了多少個tq時間單元,tBS2 = tcan x(時間段2值+1),此處tcan依舊等於tq;時間段1值取值:0 -- 7

  對寄存器CAN master control register (CAN_MCR)

TTCM:時間觸發通信模式,禁止或允許;在時間觸發通信模式下CAN硬件的內部定時器被激活,並且用於產生(發送與接收郵箱的)時間戳。

ABOM:自動離線管理,兩種退出過程。

AWUM:自動喚醒模式,兩種方式。

NART:禁止報文自動重傳

RFLM:接收FIFO鎖定模式

TXFP:發送FIFO優先級

待續

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM