CAN總線學習(2018-5.31)


STM32F103中集成了一個CAN總線控制器,所以我們進行CAN總線通信的時候只需要將CAN接口的H、L接口接到一個Transceiver(轉換器),然后經過轉換器就可以連接到其他CAN設備了。


CAN的優勢特點:
1.可以連接的CAN設備不限數量,且每一個設備都可以做為主設備/從設備,即當其做為主設備時都可以主動發送數據。
2.沒有地址的概念,可以通過標識符來識別設備。即使增加和減少CAN設備也不會影響通信。
3.速度快,距離遠。最高1Mbps(距離<40M),最遠可達10KM(速率<5Kbps)
4.所有單元都可以檢測錯誤(錯誤檢測功能),檢測出錯誤的單元會立即同時通知其他所有單元(錯誤通知功能)
5.故障封閉功能。CAN可以判斷出錯誤的類型是總線上暫時的數據錯誤(如外部噪聲等)還是持續的數據錯誤(如單元內部故障、驅動器故障、短線等)。由此功能,當總線上發生持續的數據錯誤時,可將引起故障的單元從總線上隔離出去。
6.所有CAN總線上的設備波特率都是相同的,所以設備接入前要知道總線上的波特率是多少
7.CAN總線上發送數據時,一次最多只能發送8個字節的數據,這是由CAN協議規定的。
多於8個的需要第二次再發送,或者做一個上層的連續多數據發送的函數。

 

-------------------------------------------------------------------------------------------
CAN補充:
1.對於CAN總線發送的數據我們統稱為“報文”,報文中包含了“標識符(ID)”用於各個設備對主設備發送的數據進行識別和判斷,即判斷屬於自己的標識符的數,如果吻合了,就接收發送過來的數據。否則就不接收。另外標識符中又包括”標准格式(11個位標識符)“和”擴展格式(29個位標識符)“兩種。

                             

說明:圖片均來自網易雲課堂“楊桃電子”的“STM32入門100步”,感謝圖片提供者提供的圖片資源。

 

2.對於CAN郵箱的理解:
CAN總線有接收郵箱和發送郵箱:
”發送郵箱“是用於CAN總線數據發送的,總共有3個,並且存在優先級關系。優先級越高表示其里面的數據會被優先發送。數據在發送前都會被送到優先級最高且空閑的發送郵箱,然后依次發送。最后說明一點:“發送郵箱有3個,且每個郵箱只能裝一個報文”。
”接收郵箱“是用於CAN總線數據接收用的,在接收數據端會有一個過濾器處於”接收郵箱“的前面,過濾器使用於刪選”標識符“的,只有標識符符合的報文才會被放入到”接收郵箱“當中。注意:”接收郵箱不同於發送郵箱,接收郵箱只有2(FIFO0、FIFO1)個,但是每一個有三層,每層都可以存放一個報文,即每一個接收郵箱可以接收三個報文。但讀取時只能讀到最先收到的報文,等這個讀完之后,才能讀下一個報文”。

                   

                   

 

 

------------------------------------------------------------------------------------------
對過濾器的補充:
---》過濾器模式說明:
因為過濾器是用來刪選標識符的,而標識符有標准模式(11位)和擴展模式(29位)兩種,所以過濾器同樣有兩種模式。一種是“列表模式”,還有一種是“屏蔽模式”。
->“列表模式”中的過濾器會將設置好的所需的ID與報文中的標識符進行比較,只有每個位數據都相同時才視為匹配。因其這樣的特性,所以只有唯一的標識符能成功進入接收郵箱。
->“屏蔽模式”的過濾器有兩個值,“ID值” & “屏蔽值“。通過這兩個值的配合與報文中的標識符進行比較從而刪選出想要的報文。那么他們是如何配合的呢?其實屏蔽值就是對ID值進行限定的,即屏蔽值的為”1“的位表示對應ID值上的這個位的值報文中的標識符必須與其完全相同,即視為”關心位“。反之為”0“就是”不關心“位,標識符中對應的位可以相同也可以不相同。由於這樣的特性,這種模式下所能匹配的標識符就不止唯一的一個了,就可以是一組標識符,這是與列表模式最大的不同的地方。這樣說起來還是不夠直觀,建議去看看,圖解,在我的資料中有。

                            

---》過濾器優先級問題:
1.位寬位32位的過濾器,優先級高於位寬為16位的過濾器。它會優先過濾。
2.對於位寬相同的過濾器,列表模式高於屏蔽模式。
3.位寬和模式都相同的過濾器,優先級由過濾器號決定,小的號優先級高
---》過濾器號
STM32F103系列有14組過濾器。具體看圖解

                     

 

 

問題:
一.關於過濾器組號,不是很理解組號的編配。
二.為什么有14組過濾器組?

 


免責聲明!

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



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