www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式分享

CAN 過濾器的本質(zhì)是 “基于 CAN 幀 ID 的硬件匹配電路”,其核心功能是通過預(yù)設(shè)的 “過濾規(guī)則”,判斷接收幀的 ID 是否符合條件,僅允許符合條件的幀進(jìn)入接收緩沖區(qū)。不同廠商的 CAN 控制器(如 ST 的 bxCAN、NXP 的 SJA1000、Microchip 的 MCP2515)在過濾器的硬件實現(xiàn)上略有差異,但核心邏輯一致,主要包含 “過濾器組”“過濾模式”“ID 類型”“接收 FIFO” 四大組件,共同構(gòu)成 “幀接收 - ID 匹配 - FIFO 存儲” 的完整流程。

(一)過濾器的核心組件:從規(guī)則定義到數(shù)據(jù)存儲

1. 過濾器組(Filter Bank):過濾規(guī)則的載體

CAN 控制器通常包含多個 “過濾器組”(如 STM32 bxCAN 支持 28 個過濾器組,SJA1000 支持 2 個),每個過濾器組可獨立配置一套過濾規(guī)則,實現(xiàn)多維度的篩選需求。例如,某汽車 ECU 需要同時接收 “發(fā)動機(jī)轉(zhuǎn)速幀”(ID=0x123)與 “水溫幀”(ID=0x124),可配置兩個過濾器組,分別匹配這兩個 ID;也可通過一個過濾器組的 “列表模式” 同時匹配多個 ID,靈活度取決于應(yīng)用場景。

每個過濾器組包含 “過濾器寄存器”(用于存儲目標(biāo) ID 與匹配規(guī)則)與 “控制寄存器”(用于配置過濾模式、ID 類型、激活狀態(tài)):

過濾器寄存器:通常分為 “過濾器 ID 寄存器”(Filter ID Register)與 “過濾器掩碼寄存器”(Filter Mask Register),前者存儲目標(biāo) ID 的位 pattern,后者定義哪些位需要嚴(yán)格匹配、哪些位可忽略(僅掩碼模式需要);

控制寄存器:配置過濾器的工作模式(掩碼模式 / 列表模式)、ID 類型(標(biāo)準(zhǔn) ID / 擴(kuò)展 ID)、關(guān)聯(lián)的接收 FIFOFIFO0/FIFO1)、激活狀態(tài)(激活 / 未激活)。

2. 過濾模式:精準(zhǔn)匹配與靈活篩選的選擇

CAN 過濾器支持兩種核心模式 ——掩碼模式(Mask Mode) 與列表模式(List Mode),分別對應(yīng) “靈活篩選一類 ID” 與 “精準(zhǔn)匹配多個固定 ID” 的需求,是過濾器配置的核心區(qū)別。

1)掩碼模式:靈活的 “模糊匹配”

掩碼模式(也稱為 “掩碼位寬模式”)通過 “過濾器 ID” 與 “過濾器掩碼” 的配合,實現(xiàn)對某一類 ID 的靈活篩選。其核心邏輯是:掩碼的每一位定義了過濾器 ID 對應(yīng)位的 “匹配強(qiáng)度”—— 掩碼位為 1 時,接收幀的對應(yīng)位必須與過濾器 ID 的對應(yīng)位完全一致(“嚴(yán)格匹配位”);掩碼位為 0 時,接收幀的對應(yīng)位可任意(0 1,“忽略位”)。這種模式適合篩選 “ID 具有相同前綴或后綴” 的一類幀,無需為每個 ID 單獨配置過濾器。

以標(biāo)準(zhǔn) ID11 位) 為例:若需篩選 ID 0x120~0x12F 的所有幀(共 16 ID),過濾器 ID 可設(shè)為 0x120(二進(jìn)制00010010000),過濾器掩碼設(shè)為 0x1F0(二進(jìn)制00011111000)。此時,掩碼的高 6 位(bit10~bit5)為 1,接收幀的這 6 位必須與過濾器 ID 000100完全一致(即 ID 的高 6 位為 0x12);掩碼的低 4 位(bit4~bit0)為 0,接收幀的這 4 位可任意(0~F),因此所有 ID 0x120~0x12F 范圍內(nèi)的幀都會被匹配。

以擴(kuò)展 ID29 位) 為例:若需篩選擴(kuò)展 ID 0x12345000~0x12345FFF 的幀(低 8 位任意),過濾器 ID 設(shè)為 0x12345000,過濾器掩碼設(shè)為 0xFFFFFF00。掩碼的高 21 位為 1,需嚴(yán)格匹配 0x12345;低 8 位為 0,可任意,實現(xiàn)對該范圍 ID 的篩選。

掩碼模式的優(yōu)勢是 “一規(guī)則覆蓋多 ID”,節(jié)省過濾器組資源;缺點是無法排除 “范圍內(nèi)不需要的 ID”—— 例如,若 0x120~0x12F 中包含不需要的 0x128 幀,掩碼模式無法單獨排除,需結(jié)合軟件二次篩選(但仍比無過濾器時節(jié)省資源)。

2)列表模式:精準(zhǔn)的 “枚舉匹配”

列表模式(也稱為 “標(biāo)識符列表模式”)將過濾器 ID 寄存器直接作為 “目標(biāo) ID 列表”,接收幀的 ID 需與列表中的某一個 ID 完全一致才能通過篩選。其核心邏輯是:過濾器組的兩個寄存器(Filter ID1 Filter ID2)可存儲兩個目標(biāo) ID,接收幀的 ID 只需與其中一個完全匹配(標(biāo)準(zhǔn) ID 11 位全一致,擴(kuò)展 ID 29 位全一致),即可通過過濾。部分高端 CAN 控制器(如 STM32H7 bxCAN)支持 “擴(kuò)展列表模式”,可通過多個過濾器組級聯(lián),實現(xiàn)更多 ID 的精準(zhǔn)匹配。

例如,某工業(yè) PLC 需精準(zhǔn)接收 ID 0x001(緊急停止幀)、0x002(啟動幀)、0x003(暫停幀)的三個關(guān)鍵幀,可配置兩個過濾器組:

過濾器組 1Filter ID1=0x001,Filter ID2=0x002(列表模式,標(biāo)準(zhǔn) ID);

過濾器組 2Filter ID1=0x003,Filter ID2=0x003(列表模式,標(biāo)準(zhǔn) ID,重復(fù)配置以僅匹配 0x003)。

此時,只有 ID 0x0010x002、0x003 的幀能通過過濾,其他 ID(如 0x004、0x123)會被直接丟棄。

列表模式的優(yōu)勢是 “精準(zhǔn)篩選,無冗余數(shù)據(jù)”,適合需要嚴(yán)格控制接收 ID 的場景(如安全相關(guān)幀);缺點是 “一 ID 需一規(guī)則”,過濾器組資源消耗大 —— 若需匹配 10 ID,至少需要 5 個過濾器組(每個組存 2 ID),不適用于多 ID 篩選場景。

3. ID 類型:標(biāo)準(zhǔn) ID 與擴(kuò)展 ID 的匹配適配

CAN 幀的 ID 分為 “標(biāo)準(zhǔn) ID11 位)” 與 “擴(kuò)展 ID29 位)”,過濾器需先配置 “ID 類型”,確保與接收幀的 ID 位寬一致,否則會導(dǎo)致匹配失效。

標(biāo)準(zhǔn) ID 過濾:過濾器僅匹配 11 ID CAN 幀(CAN 2.0A 協(xié)議),過濾器 ID 寄存器的高 11 位存儲目標(biāo) ID,低 18 位(擴(kuò)展位寬)無效或設(shè)為 0

擴(kuò)展 ID 過濾:過濾器僅匹配 29 ID CAN 幀(CAN 2.0B 協(xié)議),過濾器 ID 寄存器的高 29 位存儲目標(biāo) ID,低 3 位無效或設(shè)為 0。

部分 CAN 控制器支持 “混合模式”(如 SJA1000 的 “雙緩沖器模式”),可同時接收標(biāo)準(zhǔn) ID 與擴(kuò)展 ID 幀,但過濾器需分別配置 —— 例如,用一個過濾器組匹配標(biāo)準(zhǔn) ID,另一個過濾器組匹配擴(kuò)展 ID,避免 ID 類型混淆導(dǎo)致的過濾錯誤。

4. 接收 FIFO:過濾后數(shù)據(jù)的暫存區(qū)

通過過濾的 CAN 幀會被存入 CAN 控制器的 “接收 FIFO”(通常包含 FIFO0 FIFO1 兩個獨立 FIFO),FIFO 的作用是 “暫存有效數(shù)據(jù),避免 MCU 讀取不及時導(dǎo)致的數(shù)據(jù)丟失”。每個 FIFO 有固定的深度(如 STM32 bxCAN FIFO 深度為 3 級,可存儲 3 幀數(shù)據(jù)),當(dāng) FIFO 未滿時,新過濾后的幀會依次存入;當(dāng) FIFO 滿時,新幀的處理策略由 “FIFO 溢出模式” 決定:

丟棄模式:新幀直接丟棄,僅保留 FIFO 中的舊數(shù)據(jù);

覆蓋模式:新幀覆蓋 FIFO 中最早存入的幀(FIFO 頭部數(shù)據(jù)),確保最新數(shù)據(jù)不丟失(適用于實時性要求高的場景)。

MCU 通過讀取 FIFO 中的數(shù)據(jù)(如讀取 CAN_RIR 寄存器獲取 ID,CAN_RDLR/CAN_RDHR 寄存器獲取數(shù)據(jù)),完成有效幀的處理;處理后需通過 “釋放 FIFO” 操作(如讀取 FIFO 后自動釋放,或通過寄存器手動釋放),為新幀騰出空間。

(二)過濾器的工作流程:從幀接收到數(shù)據(jù)存儲

CAN 過濾器的工作流程是 “硬件自動執(zhí)行” 的,無需 MCU 干預(yù),核心步驟可分為四步:

幀接收與 ID 提?。?span>CAN 控制器接收總線上的差分信號,解析出 CAN 幀的結(jié)構(gòu)(幀起始、ID 場、控制場、數(shù)據(jù)場、CRC 場、ACK 場),并提取 ID 場的二進(jìn)制數(shù)據(jù)(11 位標(biāo)準(zhǔn) ID 29 位擴(kuò)展 ID),暫存到 “臨時 ID 寄存器”。

過濾器激活判斷:控制器檢查當(dāng)前配置的過濾器組是否處于 “激活狀態(tài)”(通過控制寄存器的 “激活位” 判斷)—— 未激活的過濾器組不參與匹配,所有幀直接進(jìn)入 FIFO(或丟棄,取決于控制器配置);激活的過濾器組進(jìn)入下一步匹配。

ID 匹配與規(guī)則判斷:激活的過濾器組根據(jù)預(yù)設(shè)的 “過濾模式” 與 “ID 類型”,對臨時 ID 寄存器中的 ID 進(jìn)行匹配:

若為掩碼模式:將臨時 ID 與過濾器 ID 進(jìn)行 “按位與” 運算,再與 “過濾器 ID & 過濾器掩碼” 的結(jié)果比較 —— 若一致,說明 ID 符合規(guī)則;若不一致,判定為無效幀。

若為列表模式:將臨時 ID 與過濾器 ID1、過濾器 ID2 分別比較 —— 若與任意一個 ID 完全一致,判定為有效幀;若均不一致,判定為無效幀。

有效幀存儲與無效幀丟棄:

有效幀:控制器將完整的 CAN 幀(ID + 數(shù)據(jù) + 狀態(tài))存入關(guān)聯(lián)的接收 FIFOFIFO0 FIFO1),若 FIFO 未滿,直接存入;若 FIFO 滿,按溢出模式處理(丟棄或覆蓋),同時置位 “FIFO 滿標(biāo)志”,提醒 MCU 及時讀取。

無效幀:控制器直接丟棄該幀,不占用 FIFO 資源,也不觸發(fā) MCU 中斷,僅更新 “無效幀計數(shù)寄存器”(部分控制器支持),用于后續(xù)故障排查。

整個流程的耗時均為 “硬件級速度”(通常為幾十納秒),遠(yuǎn)快于 MCU 的軟件解析速度(需數(shù)百納秒到微秒),確保了篩選的高效性。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護(hù)是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機(jī)驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機(jī)驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉