mcp2515遮蔽暫存器和過濾暫存器的學習

2022-02-04 09:44:30 字數 1257 閱讀 1384

mcp2515是can控制器,簡單的來講,就是只要配置好暫存器,晶元就能夠自動的解析can資料幀,同時儲存到接收快取中,提醒微控制器可以讀取can的資料位元組。

讀取的方式是快速spi,可以達到10mbits/s。當然,除錯的時候,可以放低速度。前一篇文章已經分析了spi的除錯步驟,這裡不再分析。

can控制器有設定過濾器的功能,通俗的講:不是can控制器想要的東西,我就過濾不接收,不放到接收快取上,這樣可以遮蔽了很多can匯流排上的無用的資料。

mcp251的接收快取器控制暫存器中,有兩位rxm設定,可以設定遮蔽的工作模式。

bit 6-5 rxm :接收緩衝器工作模式位

11 = 關閉遮蔽/濾波功能;接收所有報文

10 = 只接收符合濾波器條件的帶有擴充套件識別符號的有效報文

01 = 只接收符合濾波器條件的帶有標準識別符號的有效報文

00 = 接收符合濾波器條件的所有帶擴充套件識別符號或標準識別符號的有效報文

一般易用00和11,英文文件中,10 ,01是保留的,因此中文文件也有不對的地方。

1、在除錯的時候,建議不過濾,上位機發什麼資料,就接收什麼資料,以驗證硬體和軟體的基本功能是否正確。

2、如果上一步已經除錯成功,說明mcp2515的驅動基本上是ok了。

我的遮蔽暫存器設定如下:說明是開啟所有位遮蔽功能。所有id資料必須和我設定一樣才能接收資料。

mcp2515_writebyte(txb0sidh, 0xff); //傳送緩衝器0標準識別符號高位

mcp2515_writebyte(txb0sidl, 0xeb); //傳送緩衝器0標準識別符號低位

mcp2515_writebyte(txb0eid8, 0xff); //傳送緩衝器0標準識別符號高位

mcp2515_writebyte(txb0eid0, 0xff); //傳送緩衝器0標準識別符號低位

如果過濾位n如果是0,那麼報文中的id的第n位也要0,

如果過濾位n如果是1,那麼報文中的id的第n位也要1,

滿足以上的兩個條件,才是可以接受的資料id,否則將過濾掉,不接受。

如果要是遮蔽第n位設定為0,說名報文第n位資料mcp2515就不過濾,統統接收。

另外,除錯過程中一定要記住電源要接好。

stm32管腳的輸出電壓最多是3.3v而有些晶元比如1050晶元的工作電壓是大於4.75.從而導致晶元不能正常工作,外接個5vdc解決問題。

CS 暫存器 和 IP 暫存器

下面將要介紹的是一組非常非常重要的暫存器,即 cs ip cs ip 兩個暫存器指示了 cpu 當前將要讀取的指令的位址,其中cs 為 段暫存器,而ip 為指令指標暫存器。什麼叫做指示了 cpu 當前將要讀取的指令呢?在 8086 cpu 中,為什麼 cpu 會自動的執行指令呢?這些指令肯定是存放在...

除錯暫存器和測試暫存器

1 除錯暫存器 80386為除錯提供了硬體支撐。在80386晶元內有8個32位的除錯暫存器dr0 dr7,如圖2.6所示。這些暫存器可以使系統程式設計人員定義4個斷點,用它們可以規定指令執行和資料讀寫的任何組合。dr0 dr3是線性斷點位址暫存器,其中儲存著4個斷點位址。dr5 dr6是兩個備用的除...

sp暫存器和bp暫存器 彙編暫存器中英文名全稱對照

ah al ax accumulator 累加暫存器 bh bl bx base 基址暫存器 ch cl cx count 計數暫存器 dh dl dx data 資料暫存器 sp stack pointer 堆疊指標暫存器 bp base pointer 基址指標暫存器 si source poi...