CAN匯流排學習資料總結

2021-09-28 12:34:54 字數 2408 閱讀 3968

can(低層或稱硬體)協議僅僅定義了第 1 層(物理層)和第 2 層(資料鏈路層)

can匯流排簡明易懂教程(講得不錯)

can匯流排簡明易懂教程(一)

can匯流排簡明易懂教程(二)

can匯流排簡明易懂教程(三)

深入淺出、通俗易懂的講解can bus(**講解比較通俗易懂)

基於stm32的can匯流排通訊學習筆記

can相關計算:

can匯流排-位時序、波特率、取樣點

關於取樣點和波特率的計算公式:

can波特率 = can時鐘/((

1+ can_bs1 + can_bs2)

* can_prescaler)

sample =(1

+ can_bs1)/(

1+ can_bs1 + can_bs2)

如果 can時鐘為8m,can_bs1 =

9,can_bs2 =

6,can_prescaler =

5 那麼 波特率=

8m/(1+

9+6)

/5=100k

取樣點=(1

+9)/(1+9

+6)=

62.5

%

由上面可以看出來,同一波特率條件下,bs1、bs2可以有不同的組合,不同的組合取樣點不同。

stm32標稱位計算

例如,假設 fosc = 20 mhz 時欲實現 125 khz 的 can

波特率:

tosc = 50 ns, 選擇 brp<5:0> = 04h, 則 tq = 500 ns。欲達到 125 khz,位時間應為 16 tq。位的取樣時刻取決於系統引數,通常應發生在位時間的60-70% 處。同時, tdelay 典型值為 1-2 tq。同步段 = 1 tq,傳播段 = 2 tq,這種情況下設定相位緩衝段 ps1 = 7 tq,將會在跳變之後的 10 tq 時進行取樣。此時相位緩衝段 ps2 長度為 6 tq。由於相位緩衝段 ps2 長度為 6 tq,根據規則, sjw 最大值為 4 tq。然而通常狀況下,只有當不同節點的時鐘發生不夠精確或不穩定 (如採用陶瓷諧振器)時,才需要較大的 sjw。一般情況下, sjw 取值 1 tq 即可滿足要求。

咱來理一理以上的內容:

首先晶振是20mhz,那它的週期就為1/20mhz=50ns,如果bpr=4,則tq=2*(4+1)50ns=500ns,那要實現125khz也就是週期等於8us的乙個標稱位,那麼就需要16tq=8us/500ns。這16tq需要按照程式設計要求對它們進行分布,首先同步段得1tq,位取樣時間要位於位的60%-70%處,那麼這樣算下來,取樣的點也就ps1與ps2交點,ps1按照60%算的話也得9.6,即同步段1tq,傳播段2tq,相位緩衝段ps1為7tq,剩下ps2就剩6tq。這樣算下來是比較合適的。比較符合以上的要求。

那如果假設 fosc = 8 mhz 時欲實現 1m 的 can的波特率:

tosc = 0.125us, 選擇 brp<5:0> = 04h, 則 tq =1.25us。欲達到 1mhz,位時間應為不到1 tq。

晶振為8mhz,週期就為0.125us,如果bpr為4的話,則tq=2(4+1)0.125us=1.25us,那要實現1mhz的也就是週期為1us的標稱位,只有不到1tq的為時間,顯然不可行。即使bpr為0,tq=0.25us。所以1m的波特率需要4tq,也不能實現。實現800khz的1.25us,需要5tq,顯然也不適合。

對於要實現500khz是,當bpr為0時,tq=2(0+1)*0.125us=0.25us,要實現500khz的波特率需要8tq。這樣來說還是可以滿足時間段的要求的。

書籍

《can匯流排輕鬆入門與實踐》 李真花 崔健

《手把手教你學can匯流排》 來清民

《can匯流排嵌入式開發 從入門到實戰》牛躍聽 周立功

乙個典型的can硬體電路

can應用層(高層)協議:

can協議和canopen協議是兩套不同的協議。從軟硬體層次來劃分,can協議屬於硬體協議,而canopen屬於軟體協議。

canopen系列教程

can匯流排學習(一) 初識can匯流排

can匯流排最初由德國bosch公司為汽車檢測 控制系統而設計的。1993年can成為國際標準iso11898 高速應用 和iso1119 低速應用 can的規範從can1.2規範 標準格式 發展為相容can1.2規範的can2.0規範 can2.0a為標準格式,can2.0b為擴充套件格式 目前應...

CAN匯流排學習 1

最近開始學習can,希望每天能夠做些筆記,有所積累。本文基於weixin 40528417博主的內容。1 位定時1.1 位速率 位速率 又叫做位元率 bit rata 資訊傳輸率,表示的是單位時間內,匯流排上傳輸的資訊量,即每秒能夠傳輸的二進位制位的數量,單位是bit per second。1.2 ...

CAN匯流排資料演算法

之前學過一些c語言和彙編,了解過二進位制機器碼,未進行過多的應用。去年做了一年的開發,有些資料演算法得用到16進製制轉化為二進位制或轉化成10進製。根據自己的經驗總結下演算法。二進位制比較簡單的記憶為8,4,2,1。8 2 3 4 2 2 2 2 0 1 2 0。16進製制數,乙個位元組 byte ...