18.2 相關寄存器
18.2.1 CAN主控制器:CAN_MCR
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
- | DBF | ||||||||||||||
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
RESET | - | TTCM | ABOM | AWUM | NART | RFLM | TXFP | SLEEP | INRQ |
Bit 16:DBF:調試凍結
0:在調試時,CAN照常工作
1:在調試時,凍結CAN的接收/發送。仍然可以正常地讀寫和控制接收FIFO
Bit 15:bxCAN軟件復位
0:本外設正常工作
1:對bxCAN進行強行復位,復位后bxCAN進入睡眠模式。此后硬件自動對該位清0
Bit 7:時間觸發通信模式
0:禁止時間觸發通信模式
1:允許時間觸發通信模式
Bit 6:自動離線管理
0:離線狀態的退出過程是,軟件對INRQ位進行置1隨后清0后,一旦硬件檢測到128次11位連續的隱性位,則退出離線狀態
1:一旦硬件檢測到128次11位連續的隱性位,則自動退出離線狀態
Bit 5:自動喚醒模式
0:睡眠模式通過清除CAN_MCR寄存器的SLEEP位,由軟件喚醒
1:睡眠模式通過檢測CAN報文,由硬件自動喚醒。喚醒的同時,硬件自動對SLEEP和SLAK位清0
Bit 4:禁止報文自動重傳
0:按照CAN標準,CAN硬件在發送報文失敗時會一直自動重傳直到發送成功
1:CAN報文只被發送1次,不管發送的結果如何
Bit 3:接收FIFO鎖定模式
0:在接收溢出時FIFO未被鎖定,當接收FIFO的報文未被讀出,下一個收到的報文會覆蓋原有的報文
1:在接收溢出時FIFO被鎖定,當接收FIFO的報文未被讀出,下一個收到的報文會被丟棄
Bit 2:發送FIFO優先級
0:優先級由報文的標識符來決定
1:優先級由發送請求的順序來決定
Bit 1:睡眠模式請求(在復位后該位被置1)
1:可以請求CAN進入睡眠模式,一旦當前的CAN活動結束,CAN就進入睡眠
0:使CAN退出睡眠模式
Bit 0:初始化請求
0:當CAN在接收引腳檢測到連續的11個隱性位后,CAN就達到同步,并為接收和發送數據作好準備了。為此,硬件相應地對INAK位清0
1:一旦當前的CAN活動結束,CAN就進入初始化模式。相應地,硬件對INAK位置1
18.2.2 CAN主狀態寄存器:CAN_MSR
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
- | RX | SAMP | RXM | TXM | - | SLAKI | WKUI | ERRI | SLAK | INAK |
Bit 11:CAN接收電平,該位反映CAN接收引腳的實際電平
Bit 10:上次采樣值,CAN接收引腳的上次采樣值(對應于當前接收位的值)
Bit 9:接收模式,該位為1表示CAN當前為接收器
Bit 8:發送模式,該位為1表示CAN當前為發送器
Bit 4:睡眠確認中斷,當SLKIE=1,一旦CAN進入睡眠模式硬件就對該位置1,緊接著相應的中斷被觸發軟件可對該位清0,當SLAK位被清0時硬件也對該位清0
Bit 3:喚醒中斷掛號,當CAN處于睡眠狀態,一旦檢測到幀起始位,硬件就置該位為1
Bit 2:出錯中斷掛號,當檢測到錯誤時,CAN_ESR寄存器的某位被置1,如果CAN_IER寄存器的相應中斷使能位也被置1時,則硬件對該位置1
Bit 1:睡眠模式確認
0:CAN退出睡眠模式
1:CAN模塊正處于睡眠模式
Bit 0:初始化確認
0:CAN退出初始化模式時
1:CAN模塊正處于初始化模式
18.2.3 CAN位時序寄存器:CAN_BTR
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
SILM | LBKM | - | SJW[1:0] | - | TS2[2:0] | TS1[3:0] | |||||||||
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
- | BRP[9:0] |
Bit 31:靜默模式(用于調試)
0:正常狀態
1:靜默模式
Bit 30:環回模式(用于調試)
0:禁止環回模式
1:允許環回模式
Bit 25~Bit 24:重新同步跳躍寬度,該位域定義了CAN硬件在每位中可以延長或縮短多少個時間單元的上限,t RJW =t CAN ×(SJW[1:0]+1)
Bit 22~Bit 20:時間段2,該位域定義了時間段2占用了多少個時間單元,t BS2 =t CAN ×(TS2[2:0]+1)
Bit 19~Bit 16:時間段1,該位域定義了時間段1占用了多少個時間單元,t BS1 =t CAN ×(TS1[3:0]+1)
Bit 9Bit 0:波特率分頻器,該位域定義了時間單元tq的時間長度,t PCLK~q =(BRP[9:0]+1)×t
18.2.4 CAN發送狀態寄存器:CAN_TSR
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
LOW2 | LOW1 | LOW0 | TME2 | TME1 | TME0 | CODE[1:0] | ABRQ2 | - | TERR2 | ALST2 | TXOK2 | RQCP2 | |||
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
ABRQ1 | - | TERR1 | ALST1 | TXOK1 | RQCP1 | ABRQ0 | - | TERR0 | ALST0 | TXOK0 | RQCP0 |
Bit 31,Bit30,Bit 29:郵箱x最低優先級標志
當多個郵箱在等待發送報文,且郵箱x的優先級最低時,硬件對該位置1
Bit 28,Bit 27,Bit 26:發送郵箱x空
Bit 25~Bit 24:郵箱號
當有至少1個發送郵箱為空時,表示下一個空的發送郵箱號。
當所有的發送郵箱都為空時,表示優先級最低的那個發送郵箱號
Bit 23,Bit 15,Bit 7:郵箱x終止發送
Bit 19,Bit 11,Bit 3:郵箱x發送失敗
Bit 18,Bit 10,Bit 2:郵箱x仲裁丟失
Bit 17,Bit 9,Bit 1:郵箱x發送成功
Bit 16,Bit 8,Bit 0:郵箱x請求完成
18.2.5 CAN接收FIFOx寄存器:CAN_RFxR
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
- | ROFM | FOVR | FULL | - | FMP[1:0] |
Bit 5:釋放接收FIFO,輸出郵箱軟件通過對該位置1來釋放接收FIFO的輸出郵箱。如果接收FIFO為空,那么對該位置1沒有任何效果,即只有當FIFO中有報文時對該位置1才有意義。如果FIFO中有2個以上的報文,由于FIFO的特點,軟件需要釋放輸出郵箱才能訪問第2個報文,當輸出郵箱被釋放時,硬件對該位清0
Bit 4:FIFO溢出,當FIFO0已滿,又收到新的報文且報文符合過濾條件,硬件對該位置1,該位由軟件清0
Bit 3:FIFO滿,當FIFO0中有3個報文時,硬件對該位置1,該位由軟件清0
Bit 1~Bit 0:FIFO報文數目,表示當前接收FIFO0中存放的報文數目
每當1個新的報文被存入接收FIFO0,硬件就對FMP0加1
每當軟件對RFOM位寫1來釋放輸出郵箱,FMP就被減1,直到其為0
18.2.6 CAN過濾器主控寄存器:CAN_FMR
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
- | FINIT |
Bit 0:過濾器初始化模式
0:過濾器組工作在正常模式
1:過濾器組工作在初始化模式
18.2.7 CAN過濾器模式寄存器:CAN_FM1R
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
- | FBM[27:16] | ||||||||||||||
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
FBM[15:0] |
Bit 29~Bit 0:過濾器模式
0:過濾器組x的2個32位寄存器工作在標識符屏蔽位模式
1:過濾器組x的2個32位寄存器工作在標識符列表模式
18.2.8 CAN過濾器位寬寄存器:CAN_FS1R
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
- | FSC[27:16] | ||||||||||||||
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
FSC[15:0] |
Bit 29~Bit 0:過濾器位寬設置
0:過濾器位寬為2個16位
1:過濾器位寬為單個32位
-
通信協議
+關注
關注
28文章
911瀏覽量
40428 -
數據傳輸
+關注
關注
9文章
1950瀏覽量
64836 -
CAN
+關注
關注
57文章
2766瀏覽量
464304
發布評論請先 登錄
相關推薦
評論