STM32學習之CAN控制器簡介

1、STM32自帶了基本擴展CAN外設,又稱bxCAN,bxCAN的特點如下:

    支持CAN協議2.0A和2.0B主動模式

    波特率最高達1Mbps

    支持時間觸發通信

    具有3個發送郵箱

    具有3級深度的2個接收FIFO

    可變的篩選器組(也稱過濾器組,最多28個)

2、STM32 CAN控制器簡介-模式

       ①初始化模式(INRQ=1,SLEEP=0)

       ②正常模式(INRQ=0,SLEEP=0)

       ③睡眠模式(SLEEP=1)

測試模式

       ①靜默模式( LBKM=0,SILM=1 )

       ②環回模式( LBKM=1,SILM=0 )

       ③環回靜默模式(LBKM=1,SILM=1)

調試模式

3、STM32 CAN控制器簡介-bxCAN框圖

CAN控制器框圖如下:

CAN的標識符不表示目的地址而是表示發送優先級。接收節點根據標識符的值,來決定是否接收對應消息。

STM32 CAN控制器,提供了28個可配置的篩選器組(F1僅互聯型纔有28個,其他的只有14個),可降低CPU處理CAN通信的開銷。

STM32 CAN控制器每個篩選器組由2個32位寄存器組成(CAN_FxR1和CAN_FxR2,x=0~27)。根據位寬不同,每個篩選器組可提供:

       ● 1個32位篩選器,包括:STDID[10:0]、EXTID[17:0]、IDE和RTR位

       ● 2個16位篩選器,包括:STDID[10:0]、IDE、RTR和EXTID[17:15]位

篩選器可配置爲:屏蔽位模式和標識符列表模式。在屏蔽位模式下,標識符寄存器和屏蔽寄存器一起,指定報文標識符的任何一位,應該按照“必須匹配”或“不用關心”處理。而在標識符列表模式下,屏蔽寄存器也被當作標識符寄存器用。因此,不是採用一個標識符加一個屏蔽位的方式,而是使用2個標識符寄存器。接收報文標識符的每一位都必須跟篩選器標識符相同。
通過CAN_FM1R和CAN_FS1R可配置篩選器的位寬和模式:

    爲了過濾出一組標識符,應該設置篩選器組工作在屏蔽位模式。
    爲了過濾出一個標識符,應該設置過濾器組工作在標識符列表模式。
    應用程序不用的篩選器組,應該保持在禁用狀態(通過CAN_FA1R設置)。
    篩選器組中的每個篩選器,都被編號爲(即:篩選器編號)從0開始,到某個最大數值-取決於篩選器組的模式和位寬的設置。
    通過CAN_FFA1R的設置,可以將篩選器組關聯到FIFO0/FIFO1

        例:設置篩選器組0工作在:1個32位篩選器-標識符屏蔽模式,然後設置CAN_F0R1=0XFFFF0000,CAN_F0R2=0XFF00FF00。其中存放到CAN_F0R1的值就是期望收到的ID,即(STID+EXTID+IDE+RTR)最好是:0XFFFF0000。而0XFF00FF00就是設置我們需要必須關心的ID,表示收到的映像,其位[31:24]和位[15:8]這16個位的必須和CAN_F0R1中對應的位一模一樣,而另外的16個位則不關心,可以一樣,也可以不一樣,都認爲是正確的ID,即收到的映像必須是0XFFxx00xx,纔算是正確的(x表示不關心)。
3、STM32 CAN控制器簡介-發送流程
CAN發送流程:

CAN發送流程爲:

程序選擇1個空置的郵箱(TME=1)->設置標識符(ID),數據長度和發送數據->設置CAN_TIxR的TXRQ位爲1,請求發送->郵箱掛號(等待成爲最高優先級)->預定發送(等待總線空閒)->發送->郵箱空置。

CAN接收流程 :

CAN接收流程爲:

FIFO空->收到有效報文->掛號_1(存入FIFO的一個郵箱,這個由硬件控制,我們不需要理會)->收到有效報文->掛號_2->收到有效報文->掛號_3->收到有效報文->溢出。

CAN收到的有效報文,存儲在3級郵箱深度的FIFO中。FIFO接收到的報文數,我們可以通過查詢CAN_RFxR的FMP寄存器來得到,只要FMP不爲0,我們就可以從FIFO讀出收到的報文。

4、STM32 CAN控制器簡介-位時序:

STM32的CAN位時序,如下圖所示:

STM32F103,設TS1=8、TS2=7、BRP=3,波特率=36000/[(9+8+1)*4]=500Kbps。

STM32F407,設TS1=6、TS2=5、BRP=5,波特率=42000/[(7+6+1)*6]=500Kbps。
---------------------
作者:奔跑吧_自己
來源:CSDN
原文:https://blog.csdn.net/qq_38721302/article/details/82989171
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章