FlexCAN簡單介紹

2021-09-26 05:03:40 字數 2327 閱讀 5932

郵箱系統由高達64個報文緩衝區組成,前38個mbs相對應的記憶體空間可以被配置成支援fifo接收機制,該機制具有乙個強大的id過濾機制,能夠檢測接收幀的id表(最多可以是128個擴充套件幀id或者256個標準幀id或者512個8位元的id分片),還具有高達32個id表提供私有掩碼暫存器。

對於郵箱接收,乙個匹配演算法可以使得將接收到的幀儲存到mbs中,該mb的id欄位和接收到的幀具有相同的id欄位。掩碼機制可以使得在mb中設定的id號與一系列的接收到的can幀的id進行匹配。對於傳輸,仲裁演算法可以基於報文的id(通過本地3個位元的優先權欄位來選擇)或者mb的排序來決定將要傳送的mbs的優先權。

仲裁過程會根據ctrl1[lbuf]以及mcr[lprio_en]位的設定,在掃瞄結束時在所有啟用的傳送郵箱中選擇優勝者。

ctrl1[lbuf]置位,則第乙個(最小號)啟用的傳送郵箱將獲得仲裁優先權。當其置位時,mcr[lprio_en]將不會產生作用。

flexcan模組具有四種不同的功能模式:正常模式(使用者和管理員)、凍結模式、監聽模式以及閉環模式;同樣具有三種不同的低功耗模式:禁止模式、睡眠模式以及停止模式。

mcr暫存器的frz位被置位,can_mcr_frz_mask:當mcr的halt位置位時或者在mcu級請求除錯模式並且mcr暫存器的frz_ack被置位,can模組將進入到凍結模式。

can_ctrl1_lpb_mask;can工作在內部閉環模式用於自測。從傳送器發出的位元流輸出回內部的接收器輸入,輸入引腳將被忽略,並且輸出引腳將處於邏輯1狀態。

當mcr暫存器的doze被置位、在mcu級請求睡眠模式並由can置位mcr暫存器的lpm_ack位時將進入低功耗模式。

在mcu級請求模式並且由flexcan模組置位mcr暫存器lpm_ack位時,模組進入該低功耗模式。在停止模式中,模組將會自己置於不活動狀態,然後通知cpu可以關閉所有時鐘。當請求離開停止模式或者當檢測到can匯流排上有活動時,並且同時開啟了自醒機制時,flexcan將會退出該模式。

顯性狀態代表邏輯0,隱性狀態表示邏輯1.

模組可以使用郵箱和rx接收佇列結構儲存can報文用於傳輸與接收。

接收郵箱全域性掩碼暫存器,位於ram區,是為了對傳統的支援。

【可替代的掩碼機制】四個掩碼暫存器,主要是向後相容。當mcr[irmq]位清零時,開啟。

接收郵箱全域性掩碼暫存器can_rxmgmask_reg(canbaseadd),當mcr[irmq]位清零時,rxmgmask總是全部有效,當mcr[irmq]位置位時,rxmgmask無效。

rxmgmask用於給所有接收mb提供過濾字段,除了mbx14-15,它們有自己的掩碼暫存器。只能在凍結模式下才能被寫入。

0 相應的位元在過濾器中為無關,1為檢查。

smb 接收幀的rtr位元位,其被放在附加的mb,即接收序列報文緩衝區rxsmb。

每乙個緩衝區在該暫存器中都有乙個相應的遮蔽位,置位:開啟相應緩衝區中斷;0禁止相應緩衝區中斷。

當iflag1置位時,當緩衝區1完成收發過程時,會向cpu產生中斷。

canx_iflag1,如果相應的imask1置位,就會產生乙個中斷,向相應的中斷標記寫1可以清除該位,寫0無影響。

當接收佇列fifo使能時,buf7i與buf5i標誌也可以用來表示佇列fifo中斷。

緩衝區mb5中斷或者接收佇列fifo中可用的幀,當mcr暫存器的rfen位清零時,該位用來表示mb5緩衝區中斷。

mcr[rfen]=1:接收佇列有可用幀。

rfen:接收佇列fifo過濾器的數目。凍結模式下選擇。不能大於接收佇列及郵箱id過濾器的報文緩衝區的數目,由macr[maxmb]所定義。

位於ram區,因此在復位後不會被初始化。用作在接收mbs以及接收佇列fifo的id過濾器的可接收掩碼。如果沒有使能接收佇列fifo,那麼會給每個可用的郵箱提供乙個掩碼暫存器,該掩碼暫存器為郵箱的每一位提供id掩碼功能。1檢查過濾器中相應位;0不受影響。

mcr[rfen]位置位,可以使能只用於接收的佇列fifo,復位值為0。fifo佇列具有6個報文的深度,當佇列中至少有乙個可讀幀時,iflag[buf5i]標誌位被置位。同時使能相應的掩碼會產生乙個中斷。只有當iflag[buf5i]被置位時fifo輸出才有效。

iflag[buf6i]接收佇列警告置位時,意味著接收佇列將要滿了。會一直置位,直到cpu清除它。

iflag[buf7i]  :rx fifo overflow

傳送時先傳送高位,再傳送低位。

掃瞄整個mb記憶體,尋找與can匯流排上接收到的幀的id相匹配的接收緩衝區的乙個演算法。只有被設定為接收的mb才參與匹配。

通過使用id接收掩碼,可以匹配一系列id,通過三個掩碼暫存器來支援掩碼機制。在匹配演算法中,如果掩碼位被置位,則相應id位被驗證,反之,則相應id位不進行驗證。

FlexCAN和CAN的關係

原文 1 2 flexcan指示ip核的名字,在飛思卡爾,我們在不同的mcu系列中有多個can控制器,mscan,flexcan等。每個can控制器在緩衝區,fifo,mailboxes等方面都有不同的特點。重要的是該ip模組符合can標準。flexcan模組是符合can 2.0b協議規範的can通...

K65 Flex CAN模組初始化

使能flex can模組時鐘 使模組進入禁止模式 在禁止模式下選擇好時鐘源 協議引擎時鐘源 開啟flexcan模組 一旦開啟flexcan模組,flexcan即進入凍結模式,也可以同過軟中斷來復位flexcan然後進入凍結模式 初始化flex can模組暫存器,初始化mb為0 退出凍結模式 設定rx...

xgboost簡單介紹 xgboost介紹

xgboost是華盛頓大學博士陳天奇創造的乙個梯度提公升 gradient boosting 的開源框架。至今可以算是各種資料比賽中的大殺器,被大家廣泛地運用。接下來,就簡單介紹一下xgboost和普通的gbdt相比,有什麼不同。何為gradient boosting,gbdt請看我上篇文章 1.梯...