STM32F103學習筆記(6)——CAN通訊(下)—— 過濾器配置
1. 前言
元旦嗨了幾天,今天回來補一下CAN的過濾器。
就使用而言,實際上CAN的過濾器非常簡單,只需要幾個簡單的引數配置,不需要學習什麼郵箱FIFO、還回什麼靜默什麼的。
我一直認為,所有的東西想要入門最簡單的是找個例子拿來用,你把這個例子將清楚了,我會套著用了,然後再去學習基礎知識就會知道自己在學什麼,要不然我TMD學了兩天各種亂七八糟的定義過兩天又全都忘光了,實踐的時候發現還入不了門,學了等於白學,又讓人對這個想學的東西產生厭惡感。
可能是網上的教程可能都不太適合我,所以在使用參考資料寫程式碼時候非常困難,在這裡寫下我的學習過程。
2. 怎麼用
(1)在傳送函式設定
設定標準識別符號和擴充套件識別符號,同時在下面一行設定使用標準幀或擴充套件幀
(2)在CAN初始化裡面配置
這個過濾器ID並非標準幀ID,而是加了很多東西的ID,後面章節詳解
這個過濾器的配置要看這裡
總結之後,重要的是下面這個表
ID對應CAN_FilterIdHigh和CAN_FilterIdLow,ID高11位對應傳送方設定的標準識別符號(TxMessage.StdId=0x01),本次只講標準格式的配置,一切從簡,所以不講擴充套件幀相關的配置,後續請各位讀者自行研究或等我後期修改
遮蔽位對應CAN_FilterMaskIdHigh和CAN_FilterMaskIdLow
如果要使用掩碼模式,就是CAN_FilterMode=CAN_FilterMode_IdMask,則規則為:
識別符號表示想要接收的ID幀,如傳送識別符號為0x01,則過濾器ID前11位應為0000 0000 001。
因為本次講解標準模式,無需配置擴充套件幀,全為0即可。IDE因為使用標準模式配置為0。RTR因為傳輸資料幀也配置為0。
綜上,總的ID暫存器的值應該為:0000 0000 0010 0000 0000 0000 0000 0000
上述最終的ID值,綠色為CAN_FilterIdHigh的值0x0020,紅色為CAN_FilterIdLow的值0x0000,注意這裡的字元必須是4個字,不能是0x20,我試過不行,具體原因以後再看,我們們今天先入門哈哈。
如果要接收和這個一模一樣的資料幀,則直接配置CAN_FilterMaskId為1111 1111 1111 1111 1111 1111 1111 1111,意思是接收所有的位都要和ID值的所有位相等
轉換16進製為CAN_FilterMaskIdHigh值是FFFF,CAN_FilterMaskIdLow是FFFF
綜上,我們傳送方配置是
TxMessage.StdId=0x01; // 標準識別符號 0-7ff(1111 111)
TxMessage.ExtId=0x00; // 設定擴充套件標示符 0-1FFFFFFF
TxMessage.IDE=CAN_Id_Standard; // 標準幀
TxMessage.RTR=CAN_RTR_Data; // 資料幀
接收方的過濾器配置是
CAN_FilterInitStructure.CAN_FilterIdHigh=0x0020;32位ID
CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;
CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0xFFFF;//32位MASK
CAN_FilterInitStructure.CAN_FilterMaskIdLow=0xFFFF;
以上。
寫到這裡發現,入門需要使用的東西都講完了。。
至於郵箱、掛號什麼的的基本都由硬體完成,不需要什麼配置了,溢位什麼的後面再看看吧。
相關文章
- CAN過濾器過濾器
- LevelDB 學習筆記1:布隆過濾器筆記過濾器
- RxJava 學習筆記 -- 過濾操作符RxJava筆記
- STM32F103的CAN結構體學習結構體
- .NET 6學習筆記(2)——通過Worker Service建立Windows Service筆記Windows
- CAS學習筆記三:SpringBoot自動配置與手動配置過濾器方式整合CAS客戶端筆記Spring Boot過濾器客戶端
- 【學習筆記】OpenMV與arduino通訊筆記UI
- dotnet學習筆記-專題06-過濾器和中介軟體-01筆記過濾器
- Filterpost請求中文字元編碼的過濾器 --學習筆記Filter字元過濾器筆記
- CAN匯流排協議 學習筆記協議筆記
- Adaptive AUTOSAR 學習筆記 12 - 通訊管理APT筆記
- 《通訊原理基礎》學習筆記(1)筆記
- jvm學習筆記6:類載入器JVM筆記
- vue學習筆記6Vue筆記
- java學習筆記6Java筆記
- 3|程式間通訊--有名管道學習筆記筆記
- 協同過濾筆記筆記
- vue 基礎入門筆記 07:過濾器Vue筆記過濾器
- es6學習筆記筆記
- ES6 學習筆記筆記
- ES6 學習筆記筆記
- .NET 6學習筆記(7)——ASP.NET Core透過配置檔案啟用HTTPS筆記ASP.NETHTTP
- 工作筆記——CPLD與MCU通過SPI通訊筆記
- Python學習筆記:過濾N位數並繪製折線圖Python筆記
- 機器學習學習筆記機器學習筆記
- 001 通過連結串列學習Rust筆記之前言Rust筆記
- Swoft 學習筆記之配置筆記
- Elasticsearch的配置學習筆記Elasticsearch筆記
- 學習筆記2(下)筆記
- CANopen學習筆記(二)通訊物件PDO和SDO等筆記物件
- Android學習筆記--基於XMPP的即時通訊Android筆記
- RT-Thread學習筆記3-執行緒間通訊 & 定時器thread筆記執行緒定時器
- G01學習筆記-6筆記
- ES6 學習筆記一筆記
- ES6 學習筆記二筆記
- ES6 學習筆記三筆記
- ES6 學習筆記四筆記
- ES6的學習筆記筆記