stm32內部的CAN匯流排

2021-09-06 18:03:24 字數 1545 閱讀 6218

bxcan是基本擴充套件can(basic extended can)的縮寫,它支援can協議2.0a和2.0b;它的設計目標是以最小的cpu負載來高效處理大量的報文。它也支援報文傳送的優先順序要求(優先順序可軟體配置)。

bxcan模組可以完全自動地接收和傳送can報文,且完全支援標準識別符號(11位)和擴充套件識別符號(29位)。

支援can協議2.0a和2.0b主動模式;

波特率最高可達1兆位/秒;(屬於osi11898標準)

支援時間觸發通訊功能;(可以通過時間戳來進行資料同步)

共有3個傳送郵箱供軟體來傳送報文。傳送排程器根據優先順序決定哪個郵箱的報文先被傳送;

傳送報文的優先順序特性可軟體配置

記錄傳送sof時刻的時間戳

接收3級深度的2個接收fifo;

共有2個接收fifo,每個fifo都可以存放3個完整的報文。它們完全有硬體來管理;

14個位寬可變的過濾器組-由整個can共享;(沒通過過濾器的報文就直接丟棄掉)

共有14個位寬可變/可配置的識別符號過濾器組,軟體通過對其設定,從而在引腳收到的報文中選擇它的需要的報文,而把其他報文丟棄。

識別符號列表;

fifo溢位處理方式可配置;

記錄接收sof時刻的時間戳;

可支援時間觸發通訊模式

禁止自動重傳模式

16位自由執行定時器;(定時器的作用:提供時間戳)

定時器解析度可配置

可在最後2個資料位元組傳送時間戳

管理中斷可遮蔽

郵箱占用單獨1塊位址空間,便於提高軟體效率

控制、狀態和配置暫存器

應用程式通過這些暫存器,可以:

配置can引數,比如速度相關的波特率(所謂波特率就是傳送乙個位資料所花費的時間)

請求傳送報文

處理報文接收

管理中斷

獲取診斷資訊

bxcan有3個主要的工作模式:初始化、正常和睡眠模式;

還包括:測試模式、靜默模式、環迴模式、環迴靜默模式

初始化模式:主要是進行配置,配置完就進入正常模式。然後進入睡眠模式(低功耗模式)

接收到的報文,被儲存在3級郵箱深度的fifo中。fifo完全由硬體來管理,從而節省了cpu的處理負荷,簡化了軟體並保證了資料的一致性。應用程式只能通過讀取fifo輸出郵箱,來讀取fifo中最先收到的報文;

接收相關的中斷

一旦往fifo存入1個報文,硬體就會更新fmp[1:0]位,並且如果can_ier暫存器的fmpie位

為1,那麼就會產生乙個中斷請求。

當fifo變滿時(即第3個報文被存入),can_rfxr暫存器的full位就被置1,並且如果

can_ier暫存器的ffie位為1,那麼就會產生乙個滿中斷請求。

在溢位的情況下,fovr位被置1,並且如果can_ier暫存器的fovie位為1,那麼就會產生

乙個溢位中斷請求。

STM32的CAN匯流排除錯

1.使用stm32的can匯流排,回環程式寫好之後,在無外接收發晶元的情況下,使程式不斷發資料,使用示波器可以看到tx引腳有波形,而rx引腳沒有波形 2.模式改為正常模式,在沒有接收發晶元的情況下再次測一下tx與rx的波形,但是發現使用示波器採集不到波形,而且在發了幾次資料後會進行標準庫的斷言,一直...

STM32的匯流排AMBA AHB APB

一 匯流排的簡單介紹 處理器無疑是計算機中最重要的部件,但並不是唯一的部件。一台計算機也需要隨機訪問儲存器 ram 來存放機器碼指令以便讓處理器執行。計算機還必須有一些方法使這些指令進入ram 輸入裝置 以及一些方法使程式執行結果得以看見 輸出裝置 ram是易失性的,當斷電時,它的內容就會丟失。所以...

stm32的匯流排AMBA AHB APB

出處 amba advanced microprocessor bus architecture 是arm公司提出的一種開放性的soc匯流排標準,現在已經廣泛的應用於risc的核心上了。amba定義了一種 多匯流排系統 multilevel busing system 包括系統匯流排和等級稍低的外設...