那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM8單片機CAN濾波器的設置

jf_pJlTbmA9 ? 來源:玩轉嵌入式 ? 作者:玩轉嵌入式 ? 2023-10-17 14:50 ? 次閱讀

今天和大家分享一下CAN濾波器相關的內容,濾波器主要用來設置CAN的接收ID,當CAN總線上所掛接的節點較多,數據量較大的話,對單節點的接收判斷可能造成較大的壓力、占用較多的資源。為了解決這個問題,可以通過設置濾波器實現只接收特定ID。ST系列單片機的濾波器設置非常繞,很容易把自己繞暈了,下面以STM8為例和大家分享一下。

注意,此文需要看多遍。

前言

在CAN協議里,報文的標識符不代表節點的地址,而是跟報文的內容相關的。因此,發送者以廣播的形式把報文發送給所有的接收者。節點在接收報文時,根據標識符的值決定軟件是否需要該報文;如果需要,就拷貝到RAM里;如果不需要,報文就被丟棄且無需軟件的干預。為滿足這一需求,beCAN為應用程序提供了個可配置的、位寬可變的6個(0-5)過濾器組,用于只接收那些軟件需要的報文。硬件過濾的做法節省了CPU開銷,否則就必須由軟件進行過濾,從而占用一定的CPU資源。

濾波器設置

濾波器設置包括下面幾個寄存器:CAN濾波模式寄存器1 (CAN_FMR1)和CAN濾波模式寄存器2(CAN_FMR2)、CAN濾波配置寄存器1 (CAN_FCR1)、CAN濾波配置寄存器2 (CAN_FCR2)和CAN濾波配置寄存器3 (CAN_FCR3),CAN濾波組i寄存器x (CAN_FiRx) (i = 0 .. 5, x = 1 .. 8)。

濾波模式寄存器用于設置濾波器為標識符列表模式和掩碼模式,濾波配置寄存器用于開啟或關閉濾波器和濾波器的寬度設置,濾波組用于具體濾波設置。

6個可配置的位寬可變的過濾器組,通過FSCx0(x=1..6)和FSCx1(x=1..6)設置濾波寬度,

wKgaomUD75WAUYrLAABhCSuW28s012.jpg

就32位濾波器設置進行解讀,CAN報文分為標準幀和擴展幀,標準幀ID11位,擴展幀29位,ID與濾波配置映射關系如上表所示,如濾波模式設置可知可以分為兩個ID或者一個ID+Mask。當需要過濾某一段ID時,使用ID+Mask模式,當過濾具體ID時直接使用ID模式即可。

如果我的擴展id是0x12345678 ;想只接收0x12xxxxxx的標識符號,該如何設置濾波器?

此處采用32位濾波器0進行濾波配置,因此FSC00 = 1;FSC01 = 1;FMH0 = 0;FML0 = 0;
擴展id為0x12345678 (0001,0010,0011,0100,0101,0110,0111,1000)

將擴展幀ID填入CAN幀ID格式中

wKgZomUD75eADiHJAABKWVMIsVU754.jpg

RTR位我們設置為0表示數據幀,IDE位設置為1表示擴展ID,因為我們的ID是29位的,所以RTR = 0;IDE = 1;

在濾波器中填充如下:

wKgZomUD75mAQBpbAABSrk3fdP4201.jpg

如果要關心到具體的某一個比特位置;如果要過濾讓它只接收0x12xxxxxx的表示符號;

這時候要根據它實際在identify中的位置去修改idmask ; 前八個比特,對應的就是黃色和綠色的部分,所以其他的顏色,可以都填0表示不需要關心,則這里填入:1 1 1 1 ,1 x x x,我們這里填0xF8 ;

CAN_F0R1 = 0x91; CAN_F0R2 = 0x00; CAN_F0R3 = 0x00; CAN_F0R4 = 0x00; CAN_F0R5 = 0x91; CAN_F0R6 = 0x00; CAN_F0R7 = 0x00; CAN_F0R8 = 0x00;

同理,對于下面的配置是只接收標準id= 0x321(0011,0010,0001)的ID(也是32位過濾器),因為也是數據幀,所以RTR = 0,標準的id,所以IDE = 0 ;所以填入到:

wKgZomUD75qASIuVAABPpezDKnw419.jpg

CAN_F0R1 = 0x64; CAN_F0R2 = 0x20; CAN_F0R3 = 0x00; CAN_F0R4 = 0x00; CAN_F0R5 = 0xFF; CAN_F0R6 = 0xE0; CAN_F0R7 = 0x00; CAN_F0R8 = 0x00;

設置過濾器0只接收ID為0x1828A0EF和0x1828A0EE的數據幀。(工作在標識符列表模式)

首先我們把這兩個ID寫成二進制:

0x1828A0EF:0001 1000 0010 1000 1010 0000 1110 1111 0x1828A0EE:0001 1000 0010 1000 1010 0000 1110 1110

然后我們將0x1828A0EF二進制的格數據組成如上圖mapping所示的格式

Can_fxr1:1100 0001 0xc1 Can _fxr2:0100 1001 0x49 //這里有個RTR位我們設置為0表示數據幀,IDE位設置為1表示擴展ID, Can _fxr3:0100 0001 0x41 Can _fxr4:1101 1110 0xDE

這時我們工作在標識符列表模式,identifier/Mask的寄存器相當于identifier使用。

再將0x1828A0EE二進制的格數據組成如上圖mapping所示的格式

Can _fxr5:1100 0001 0xc1 Can _fxr6:0100 1001 0x49 //這里有個RTR位我們設置為零表示數據幀,IDE設置為1表示擴展ID Can _fxr7:0100 0001 0x41 Can _fxr8:1101 1100 0xDC

wKgaomUD75uAdko2AABzzEtbZuo707.jpg

16位配置模式也經常使用,如CAN網絡管理中往往涉及到網絡管理ID-0x4xx,因此需要利用ID和Mask模式,其余的采用ID模式,可以建立濾波器設置寄存器數組。

0x400網段,0x330,0x320 0x400: 展開 0000 0100 0000 0000,采用標準幀數據幀格式 0x330: 展開 0000 0011 0011 0000 0x320: 展開 0000 0011 0010 0000 CAN_F0R1: 100 0000 0 0x80 CAN_F0R2: 000 00 000 0x00 CAN_F0R3: 111 0000 0 0xE0 CAN_F0R4: 00000000 0x00 CAN_F0R5: 011 0011 0 0x66 CAN_F0R6: 00000000 0x00 CAN_F0R7: 011 0010 0 0x64 CAN_F0R8: 00000000 0x00 FSC00 = 0; FSC01 = 1; FMH0 = 1; FML0 = 0; FACT0 = 1;

wKgaomUD75yAN-84AACHOa3bv3c349.jpg

wKgaomUD756AJi8vAACK_dJO_Gg003.jpg

在以往的項目中用過多個品牌的單片機,包括國產的,一直感覺ST的濾波器設置比較麻煩,每次用到的時候都要花較長時間去回憶。

來源:玩轉嵌入式
免責聲明:本文為轉載文章,轉載此文目的在于傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請聯系小編進行處理


審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6043

    文章

    44620

    瀏覽量

    638481
  • 濾波器
    +關注

    關注

    161

    文章

    7860

    瀏覽量

    178924
  • CAN
    CAN
    +關注

    關注

    57

    文章

    2769

    瀏覽量

    464370
  • STM8
    +關注

    關注

    18

    文章

    392

    瀏覽量

    56941
收藏 人收藏

    評論

    相關推薦

    STM8單片機

    單片機8單片機STM8
    jf_72064266
    發布于 :2022年10月04日 05:27:41

    stm8單片機例程分享

    使用stm8單片機模擬串口功能實現STM8S003單片機串口實現printf函數功能STM8單片機
    發表于 01-27 07:37

    基于單片機控制的程控有源濾波器電路

    基于單片機控制的程控有源濾波器電路 有源濾波器廣泛應用于數字信號處理、通信、自動控制領域,但設計可變寬頻帶有源濾波器則比較困難。利用單片機
    發表于 05-13 00:36 ?831次閱讀
    基于<b class='flag-5'>單片機</b>控制的程控有源<b class='flag-5'>濾波器</b>電路

    PIC STM8 STC單片機代碼及相關資料

    PIC STM8 STC單片機代碼及相關資料,破解文件等
    發表于 02-07 15:53 ?15次下載

    單片機程控濾波器設計詳解

    本文主要闡述了單片機程控濾波器設計,分別從設計要求、設計方案、硬件設計以及軟件設計這幾個方面詳細介紹。
    發表于 04-13 11:06 ?1w次閱讀
    <b class='flag-5'>單片機</b>程控<b class='flag-5'>濾波器</b>設計詳解

    STM8單片機如何進行IAR工程的建立

    本文檔的主要內容詳細介紹的是STM8單片機如何進行IAR工程的建立。
    發表于 05-10 18:13 ?8次下載
    <b class='flag-5'>STM8</b><b class='flag-5'>單片機</b>如何進行IAR工程的建立

    STM8單片機的串口UART資料免費下載

    本文檔的主要內容詳細介紹的是STM8單片機的串口UART資料免費下載。
    發表于 04-24 17:19 ?34次下載
    <b class='flag-5'>STM8</b><b class='flag-5'>單片機</b>的串口UART資料免費下載

    基于單片機控制的可編程有源濾波器

    有源濾波器廣泛應用于數字信號處理、通信、自動控制領域,但設計可變寬頻帶有源濾波器則比較困難。利用單片機控制參數可編程的雙二階通用開關電容有源濾波器,精確
    發表于 05-18 09:47 ?1879次閱讀

    STM8系列單片機程序的下載方式

    STM8系列單片機程序的下載方式
    發表于 11-26 14:06 ?31次下載
    <b class='flag-5'>STM8</b>系列<b class='flag-5'>單片機</b>程序的下載方式

    手把手教你STM8單片機標準庫移植

    的8051,STM8是ST獨有的8單片機內核。2.STM8單片機內部的寄存更多,資源更豐富,
    發表于 11-26 14:36 ?15次下載
    手把手教你<b class='flag-5'>STM8</b><b class='flag-5'>單片機</b>標準庫移植

    stm8單片機例程下載鏈接

    使用stm8單片機模擬串口功能實現STM8S003單片機串口實現printf函數功能STM8單片機
    發表于 12-03 12:06 ?40次下載
    <b class='flag-5'>stm8</b><b class='flag-5'>單片機</b>例程下載鏈接

    如何設置STM8單片機選項字

    如何設置STM8單片機選項字
    發表于 12-03 12:36 ?12次下載
    如何<b class='flag-5'>設置</b><b class='flag-5'>STM8</b><b class='flag-5'>單片機</b>選項字

    關于CAN濾波器相關的內容

    。為了解決這個問題,可以通過設置濾波器實現只接收特定ID。ST系列單片機濾波器設置非常繞,很容易把自己繞暈了,下面以
    的頭像 發表于 09-08 09:39 ?3795次閱讀

    stm單片機型號的意義 stm8和stm32的燒寫程序的區別 stm8讀取程序

    STM或STM32或STM8,代表單片機的品牌和系列。STM32系列是基于ARM Cortex-M內核的單片機系列,而STM8系列則是基于ST8
    的頭像 發表于 04-08 14:43 ?8555次閱讀

    STM8系列單片機入門

    電子發燒友網站提供《STM8系列單片機入門.pdf》資料免費下載
    發表于 10-07 16:09 ?3次下載
    <b class='flag-5'>STM8</b>系列<b class='flag-5'>單片機</b>入門
    大发888怎么样| 百家乐网站新全讯网| 百家乐官网网上娱乐场开户注册 | 大发888娱乐场 888| 新葡京百家乐娱乐城| 百家乐平注法是什么| 百家乐门户网站| 真人百家乐澳门娱乐城| 百家乐博彩平| 威尼斯人娱乐城易博lm0| 大发888大发8668| 线上龙虎| 大发888城| 娱乐城官方网| 寒江博彩堂| 黄冈市| 长乐坊百家乐官网娱乐城| 百家乐官网下注所有组合| 钱隆百家乐官网破解版| 回力百家乐官网的玩法技巧和规则 | 24山入门| 澳门百家乐论谈| 介绍百家乐赌博技巧| 欧洲百家乐的玩法技巧和规则| 百家乐的各种打法| 大发888游戏下载官网免费| 皇冠网小说微博| 百家乐官网如何视频| 百家乐官网游戏论坛| 南宁百家乐官网赌| 百家乐庄的概率| 百家乐那里可以玩| 金龙博彩网| 澳门百家乐官网海星王娱乐城| 百家乐游戏类型| 永利高百家乐怎样开户| 威尼斯人娱乐百利宫| 皇冠在线娱乐| 现场百家乐官网电话投注| 玩机器百家乐心得| 威尼斯人娱乐代理|