日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]1. 前言bxCAN是STM32系列最穩(wěn)定的IP核之一,無論有哪個新型號出來,這個IP核基本未變,可見這個IP核的設(shè)計是相當(dāng)成熟的。本文所講述的內(nèi)容屬于這個IP核的一部分,掌握了本文所講內(nèi)容,就可以很方便地適用于所有STM32

1. 前言

bxCAN是STM32系列最穩(wěn)定的IP核之一,無論有哪個新型號出來,這個IP核基本未變,可見這個IP核的設(shè)計是相當(dāng)成熟的。本文所講述的內(nèi)容屬于這個IP核的一部分,掌握了本文所講內(nèi)容,就可以很方便地適用于所有STM32系列中包含bxCAN外設(shè)的型號。有關(guān)bxCAN的過濾器部分的內(nèi)容在參考手冊中往往看得“不甚明白“,本文就過濾器的4種工作模式進行詳細講解并使用具體的代碼進行演示,這些代碼都進行過實測驗證通過的,希望能給讀者對于bxCAN過濾器有一個清晰的理解。


2. 準(zhǔn)備工作2.1.為什么要過濾器?

在這里,我們可以將CAN總線看成一個廣播消息通道,上面?zhèn)鬏斨鞣N類型的消息,好比報紙,有體育新聞,財經(jīng)新聞,政治新聞,還有軍事新聞,每個人都有自己的喜好,不一定對所有新聞都感興趣,因此,在看報紙的時候,一般人都是只看自己感興趣的那類新聞,而過濾掉其他不感興趣的內(nèi)容。那么我們一般是怎么過濾掉那些不感興趣的內(nèi)容的呢?下面有兩種方法來實現(xiàn)這個目的:

第一種方法:

每次看報紙時,你都看下每篇文章的標(biāo)題,如果感興趣則繼續(xù)看下去,如果不感興趣,則忽略掉。

第二種方法:

你告訴郵遞員,你只對財經(jīng)新聞感興趣,請只將財經(jīng)類報紙送過來,其他的就不要送過來了,就這樣,你看到的內(nèi)容必定是你感興趣的財經(jīng)類新聞。

上面那種方法好呢?很明顯,第二種方法是最好的,因為你不用自己每次判斷哪些新聞內(nèi)容是你感興趣的,可以免受“垃圾”新聞干擾,從而可以節(jié)省時間忙其他事。bxCAN的過濾器就是采用上述第二種方法,你只需要設(shè)置好你感興趣的那些CAN報文ID,那么MCU就只能收到這些CAN報文,是從硬件上過濾掉,完全不需要軟件參與進來,從而節(jié)省了大大節(jié)省了MCU的時間,可以更加專注于其他事務(wù),這個就是bxCAN過濾器的意義所在。

2.2.兩種過濾模式(列表模式與掩碼模式)

假設(shè)我們是bxCAN這個IP的設(shè)計者,現(xiàn)在由我們來設(shè)計過濾器,那么我們該如何設(shè)計呢?

首先我們是不是很快就會想到只要準(zhǔn)備好一張表,把我們需要關(guān)注的所有CAN報文ID寫上去,開始過濾的時候只要對比這張表,如果接收到的報文ID與表上的相符,則通過,如果表上沒有,則不通過,這個就是簡單的過濾方案。恭喜你!bxCAN過濾器的列表模式采用的就是這種方案。

但是,這種列表方案有點缺陷,即如果我們只關(guān)注一個報文ID,則需要往列表中寫入這個ID,如果需要關(guān)注兩個,則需要寫入兩個報文ID,如果需要關(guān)注100個,則需要寫入100個,如果需要1萬個,那么需要寫入1萬個,可問題是,有這個大的列表供我們使用嗎?大家都知道,MCU上的資源是有限的,不可能提供1萬個或更多,甚至100個都嫌多。非常明顯,這種列表的方式受到列表容量大小的限制,實際上,bxCAN的一個過濾器若工作在列表模式下,scale為32時,每個過濾器的列表只能寫入兩個報文ID,若scale為16時,每個過濾器的列表最多可寫入4個CAN ID,由此可見,MCU的資源是非常非常有限的,并不能任我們隨心所欲。因此,我們需要考慮另外一種替代方案,這種方案應(yīng)該不受到數(shù)量限制。

下面假設(shè)我們是古時候一座城鎮(zhèn)的守衛(wèi),城主要求只有1156年出生的人才可以進城,我們又該如何執(zhí)行呢?假設(shè)古時候的人也有類似今天的身份證(...->_<-…),大家都知道,身份份證號碼中有4位是表示出生年月,如下圖:


圖 1 18位身份證號碼的各位定義

如上圖,身份證中第7~10這4位數(shù)表示的是出生年份,那么,我們可以這么執(zhí)行:

檢查想要進城的所有人的身份證號碼的第7~10位數(shù)字,如果這個數(shù)字依次為1156則可以進入,否則則不可以,至于身份證號碼的其他位則完全不關(guān)心。假如過幾天城主放寬進城條件為只要是1150年~1160前的人都可以進城,那么,我們就可以只關(guān)注身份證號碼的第7~9這3位數(shù)是否為115就可以了,對不對?這樣一來,我們就可以非常完美地執(zhí)行城主的要求了。

再變下,假設(shè)現(xiàn)在使用機器來當(dāng)守衛(wèi),不再是人來執(zhí)行這個“篩選”工作。機器是死的,沒有人那么靈活,那么機器又該如何執(zhí)行呢?

對于機器來說,每一步都得細化到機器可以理解的程度,于是我們可以作如下細化:

第一步:獲取想進城的人的身份證號碼

第二步:只看獲取到身份證的第7~9位,其他位忽略

第三步:將忽略后的結(jié)果與1156進行比較

第四步:比較結(jié)果相同則通過,不同則不能通過

這種方式,我們稱之為掩碼模式。

2.3.驗證碼與屏蔽碼

仔細查看上面4個步驟,這不就是C代碼中的if語句嗎?如下:


if(x&y==z)//x表示待檢查身份證號碼,y表示只關(guān)注第7~9位的屏蔽碼,Z則為1156,這里叫做驗證碼

{

//可以通過

}

else

{

//不可以通過

}


對于機器來說,我們要為它準(zhǔn)備好兩張紙片,一片寫上屏蔽碼,另一片紙片寫上驗證碼,屏蔽碼上相應(yīng)位為1時,表示此位需要與驗證碼對應(yīng)位進行比較,反之,則表示不需要。機器在執(zhí)行任務(wù)的時候先將獲取的身份證號碼與屏蔽碼進行“與”操作,再將結(jié)果與驗證碼的進行比較,根據(jù)判斷是否相同來決定是否通過。整個判別流程如下所示:

圖 2 掩碼模式的計算過程

從上圖可以很容易地理解屏蔽碼與驗證碼的含義,這樣一來,能通過的結(jié)果數(shù)量就完全取決于屏蔽碼,設(shè)得寬,則可以通過的多(所有位為0,則不過任何過濾操作,則誰都可以通過),設(shè)得窄,則通過的少(所有位設(shè)為1,則只有一個能通過)。那么知道這個有什么用呢?因為bxCAN的過濾器的掩碼模式就是采用這種方式,在bxCAN中,分別采用了兩個寄存器(CAN_FiR1,CAN_FiR2)來存儲屏蔽碼與驗證碼,從而實現(xiàn)掩碼模式的工作流程的。這樣,我們就知道了bxCAN過濾器的掩碼模式的大概工作原理。


但是,我們得注意到,采用掩碼模式的方式并不能精確的對每一個ID進行過濾,打個比方,還是采用之前的守衛(wèi)的例子,假如城主要求只有1150~1158年出生的人能通過,那么,若我們還是才用掩碼模式,那么掩碼就設(shè)為第7~9位為”1”,對應(yīng)的,驗證碼的7~9位分別為”115”,這樣就可以了。但是,仔細一想,出生于1159的人還是可以通過,是不是?但總體來說,雖然沒有做到精確過濾,但我們還是能做到大體過濾的,而這個就是掩碼模式的缺點了。在實際應(yīng)用時,取決于需求,有時我們會同時使用到列表模式和掩碼模式,這都是可能的。


2.4.列表模式與掩碼模式的對比

綜合之前所述,下面我們來對比一下列表模式與掩碼模式這兩種模式的優(yōu)缺點。


模式優(yōu)點缺點列表模式能精確地過濾每個指定的CAN ID有數(shù)量限制掩碼模式取決于屏蔽碼,有時無法完全精確到每一個CAN ID,部分不期望的CAN ID有時也會收到數(shù)量取決于屏蔽碼,最多無上限



2.5.標(biāo)準(zhǔn)CAN ID與擴展CAN ID



1986 年德國電氣商BOSCH公司開發(fā)出面向汽車的CAN 通信協(xié)議,剛開始的時候,CAN ID定義為11位,我們稱之為標(biāo)準(zhǔn)格式,ISO11898-1標(biāo)準(zhǔn)中CAN的基本格式如下圖所示:

圖 3 標(biāo)準(zhǔn)CAN報文格式定義


如上圖所示,標(biāo)準(zhǔn)CAN ID存放在上圖ID18~ID28中,共11位。隨著工業(yè)發(fā)展,后來發(fā)現(xiàn)11位的CAN ID已經(jīng)不夠用,于是就增加了18位,擴展CAN ID到29位,如下圖所示:


圖 4 擴展CAN報文格式定義

從上圖對比擴展CAN報文與標(biāo)準(zhǔn)CAN報文,發(fā)現(xiàn)在仲裁域部分,擴展CAN報文的CAN ID包含了base Identifier與extension Identifier,即基本ID與擴展ID,而標(biāo)準(zhǔn)CAN報文的CAN ID部分只包含基本ID,擴展ID(ID0~ID17)被放在基本ID的右方,也就是說,屬于低位。知道這些有什么用呢?至少我們可以得到這兩條信息:


標(biāo)準(zhǔn)ID一般小于或等于<=0x7FF(11位),只包含基本ID。

對于擴展CAN的低18位為擴展ID,高11位為基本ID。



例如標(biāo)準(zhǔn)CAN ID 0x7E1,二進制展開為0b 0[111 1110 0001],只有中括號內(nèi)的11位才有效,其全部是基本ID。

再例如擴展CAN ID 0x1835f107,二進制展開為0b 000[1 1000 0011 10][01 11110001 0000 0111],只有紅色中括號和綠色中括號內(nèi)的位才有效,總共29位,左邊紅色中括號中的11位為基本ID,右邊綠色中括號內(nèi)的18位為擴展ID,請記住這個信息!知道這個之后,我們可以很方便地將一個CANID拆分成基本ID和擴展ID,這個也將在后續(xù)的內(nèi)容中多次用到,再次留意一下,擴展ID是位于基本ID的右方,在擴展CAN ID的構(gòu)成中,擴展ID位于低18位,而基本ID位于高11位,于是要獲取一個擴展CANID的基本ID,就只需要將這個CANID右移18位(這種算法后續(xù)將多次用到,請務(wù)必記住!)。

3. bxCAN的過濾器的解決方案

終于進入到正題了!前面已經(jīng)介紹了過濾器的列表模式與掩碼模式,以及掩碼模式下的屏蔽碼與驗證碼的含義,還介紹了標(biāo)準(zhǔn)CAN ID與擴展CAN ID的組成部分?,F(xiàn)在我們終于要站在bxC

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

在嵌入式開發(fā)中,STM32的時鐘系統(tǒng)因其靈活性和復(fù)雜性成為開發(fā)者關(guān)注的焦點。然而,看似簡單的時鐘配置背后,隱藏著諸多易被忽視的陷阱,輕則導(dǎo)致系統(tǒng)不穩(wěn)定,重則引發(fā)硬件損壞。本文從時鐘源選擇、PLL配置、總線時鐘分配等關(guān)鍵環(huán)...

關(guān)鍵字: STM32 時鐘系統(tǒng)

在嵌入式系統(tǒng)開發(fā)中,STM32系列微控制器的內(nèi)部溫度傳感器因其低成本、高集成度特性,廣泛應(yīng)用于設(shè)備自檢、環(huán)境監(jiān)測等場景。然而,受芯片工藝差異和電源噪聲影響,其原始數(shù)據(jù)存在±1.5℃的固有誤差。本文從硬件配置、校準(zhǔn)算法、軟...

關(guān)鍵字: STM32 溫度傳感器

在能源效率與智能化需求雙重驅(qū)動下,AC-DC轉(zhuǎn)換器的數(shù)字控制技術(shù)正經(jīng)歷從傳統(tǒng)模擬方案向全數(shù)字架構(gòu)的深刻變革?;赟TM32微控制器的PFM(脈沖頻率調(diào)制)+PWM(脈沖寬度調(diào)制)混合調(diào)制策略,結(jié)合動態(tài)電壓調(diào)整(Dynam...

關(guān)鍵字: AC-DC STM32

當(dāng)前智能家居產(chǎn)品需求不斷增長 ,在這一背景下 ,對現(xiàn)有澆花裝置缺陷進行了改進 ,設(shè)計出基于STM32單片機的全 自動家用澆花機器人。該設(shè)計主要由機械結(jié)構(gòu)和控制系統(tǒng)構(gòu)成 ,機械結(jié)構(gòu)通過麥克納姆輪底盤與噴灑裝置的結(jié)合實現(xiàn)機器...

關(guān)鍵字: STM32 麥克納姆輪 安全可靠 通過性強

用c++編程似乎是讓你的Arduino項目起步的障礙嗎?您想要一種更直觀的微控制器編程方式嗎?那你需要了解一下Visuino!這個圖形化編程平臺將復(fù)雜電子項目的創(chuàng)建變成了拖動和連接塊的簡單任務(wù)。在本文中,我們將帶您完成使...

關(guān)鍵字: Visuino Arduino ESP32 STM32

基于STM32與LoRa技術(shù)的無線傳感網(wǎng)絡(luò)憑借其低功耗、廣覆蓋、抗干擾等特性,成為環(huán)境監(jiān)測、工業(yè)自動化等場景的核心解決方案。然而,如何在復(fù)雜電磁環(huán)境中實現(xiàn)高效休眠調(diào)度與動態(tài)信道優(yōu)化,成為提升網(wǎng)絡(luò)能效與可靠性的關(guān)鍵挑戰(zhàn)。本...

關(guān)鍵字: STM32 LoRa

在實時控制系統(tǒng)、高速通信協(xié)議處理及高精度數(shù)據(jù)采集等對時間敏感的應(yīng)用場景中,中斷響應(yīng)延遲的優(yōu)化直接決定了系統(tǒng)的可靠性與性能上限。STM32系列微控制器憑借其靈活的嵌套向量中斷控制器(NVIC)、多通道直接內(nèi)存訪問(DMA)...

關(guān)鍵字: STM32 DMA

數(shù)字電源技術(shù)向高功率密度、高效率與高動態(tài)響應(yīng)方向加速演進,STM32微控制器憑借其基于DSP庫的算法加速能力與對LLC諧振變換器的精準(zhǔn)控制架構(gòu),成為優(yōu)化電源動態(tài)性能的核心平臺。相較于傳統(tǒng)模擬控制或通用型數(shù)字控制器,STM...

關(guān)鍵字: STM32 數(shù)字電源

STM32微控制器憑借其針對電機控制場景的深度優(yōu)化,成為高精度、高可靠性驅(qū)動系統(tǒng)的核心選擇。相較于通用型MCU,STM32在電機控制領(lǐng)域的核心優(yōu)勢集中體現(xiàn)在FOC(磁場定向控制)算法的硬件加速引擎與PWM死區(qū)時間的動態(tài)補...

關(guān)鍵字: STM32 電機控制

無線充電技術(shù)加速滲透消費電子與汽車電子領(lǐng)域,基于Qi協(xié)議的無線充電發(fā)射端開發(fā)成為智能設(shè)備能量補給的核心課題。傳統(tǒng)模擬控制方案存在響應(yīng)滯后、參數(shù)調(diào)整困難等問題,而基于STM32的數(shù)字PID控制結(jié)合FOD(Foreign O...

關(guān)鍵字: STM32 無線充電
關(guān)閉