STM32CAN匯流排協議講解

2021-10-10 02:15:27 字數 2038 閱讀 9346

月報

最近學習了stm32的can匯流排協議,使用的是野火的開發板

can 是controller area network 的縮寫(can bus),具有佈線簡單、典型的匯流排型結構、可最大限度的節約佈線與維護成本、穩定可靠、實時、抗干擾能力強、傳輸距離遠等特點,是一種成功的匯流排。不僅在汽車行業得到推廣與應用,在航天、電力、石化、冶金、紡織、造紙等領域也得到廣泛應用。在自動化儀表、工業生產現場、數控工具機等系統中也越來越多的使用了can匯流排。

can匯流排採用差分訊號傳輸,通常情況下只需要兩根訊號線(can-h和can-l)就可以進行正常的通訊。在干擾比較強的場合,還需要用到遮蔽地即can-g(主要功能是遮蔽干擾訊號),can協議推薦使用者使用遮蔽雙絞線作為can匯流排的傳輸線。在隱性狀態下,can-h與can-l的輸入差分電壓為0v(最大不超過0.5v),共模輸入電壓為2.5v。在顯性狀態下,can-h與can-l的輸入差分電壓為2v(最小不小於0.9v)………

反正就是一堆看著非常讓人懵逼的協議啊之類咱們現在暫時就先不去折騰了,遵照基本的電氣使用規範來應用即可,這裡重點就是說下用stm32f1系列微控制器來實現can匯流排通訊的基本軟體配置。

微控制器基本的通訊配置好之後,這種通訊方式還是非常實用高效的,主要是通訊穩定可靠,傳輸距離遠。使用的前提是微控制器要帶硬體can功能,協議還是蠻複雜的,所以需要處理器自帶can協議功能模組,使用前對相關引數進行配置,如通訊速率、資料格式等,再搭配好外圍電路,如tja1050can轉換器之後,(根據實際的匯流排網路配好匯流排的阻抗(也就是匯流排兩端的匹配電阻),避免反射造成通訊混亂,硬體部分後面再做補充),就可以接入網路進行通訊,can通訊沒有主機從機之分。說的再直白一點,can中實際參與通訊的只有兩條線,can_h和can_l,他們是差分訊號傳輸,不能和序列口混為一談,不是乙個概念,stm32的can只是實現了協議控制器功能,介面還不能直接接入匯流排,需要乙個轉換器來實現與匯流排的物理連線,微控制器需要通過can轉換器,才能接入can網路實現雙向資料互動,can轉換器非常多,如tja1050之類,反正,接入can需要兩樣東西,①微控制器帶can功能 ②can轉換器,集齊這兩樣裝備後,就可以吃ji了。

//——————————————————————————————————

以上非常非常簡單的對一些概念腦補之後,開始詳細的軟體配置,我們的最終目標是兩個甚至多個裝置,通過can進行通訊,交換資料,從而實現多點聯機操作。

基本步驟如下(暫存器操作):

1.配置通訊埠與can基本暫存器配置

2.配置接收中斷

3.資料傳送處理

4.中斷資料接收處理

本次配置的微控制器型號是stm32f103vct6(lqfp100,256k flash,48k ram)

//—————————————————————————————————-

1.配置通訊埠與can基本暫存器配置(can_tx pa12 (71pin) can_rx_pa11(70pin))

返回值:初始化狀態

引數列表:

//tsjw:重新同步跳躍時間單元.範圍:1~3;

//tbs2:時間段2的時間單元.範圍:1~8;

//tbs1:時間段1的時間單元.範圍:1~16;

//brp :波特率分頻器.範圍:11024;(實際要加1,也就是11024) tq=(brp)*tpclk1

//注意以上引數任何乙個都不能設為0,否則會亂.

//波特率=fpclk1/((tbs1+tbs2+1)*brp);

//fpclk1的時鐘在初始化的時候設定為36m,如果設定can_init(1,4,7,6);

//則波特率為:36m/((4+7+1)*6)= 0.5m(500k)

//返回值:0,初始化ok;

can匯流排的通訊協議大概就是流程

野火開發板提供的**如下

void rcc_config(void)void gpio_for_can_and_uart_config(void) void can_config(void) void main(void)

STM32,CAN匯流排過濾器的設定詳細講解

遮蔽位模式 在遮蔽位模式下,識別符號暫存器和遮蔽暫存器一起,指定報文識別符號的任何一位,應該按照 必須匹配 和 不用關心 處理。識別符號列表模式 在識別符號列表模式下,遮蔽暫存器也被當做識別符號暫存器用。因此,不是採用乙個識別符號加乙個遮蔽位的方式,而是採用兩個識別符號暫存器。接收報文的每一位都必須...

STM32 CAN匯流排通訊學習筆記(一)

can 是控制器區域網路 controller area network,can 的簡稱。can採用資料塊編碼的方式,資料塊根據幀的型別,能夠讓掛載在匯流排上的不同節點接收到相同的資料,再根據每個節點的配置對資訊進行選擇性處理 處理or丟棄 can匯流排具有以下特點 1.多主控制 在匯流排空閒時,所...

STM32 CAN通訊問題

檢舉 2012 07 04 20 59 breath123 分類 工程技術科學 瀏覽974次 can通訊測試中 使能報文標示符過濾器按照標示符的內容進行比對過濾,擴充套件id不是如下的就拋棄掉,是的話,會存入fifo0。can filterinitstructure.can filteridhigh...