飛思卡爾CAN模塊關於ID和mask的使用


該方式提供了一種類似於尋址的模式。

1、CAN的buf每個都是獨立工作的

2、最好不要設定一個CAN模塊發送和接受同樣的一個ID。

關於CAN的buf的ID和mask的設置。ID表示該buf只接受這個ID的報文。但是,mask提供了一種方式,並不只是接受某個特定ID的報文。而是一段區域的報文。舉個例子:

ID設置為0x85;
mask設置為0xFC。那么也就意味着0x84、0x85、0x86、0x87的報文均可以被該特定的buf接收。
注:以上為飛思卡爾系列單片機的叫法。

4、以上接收的意義意味着,每個buf都是獨立工作的。可以在不用占用cpu的情況下,處理特定ID的報文。
據說j1939協議就是利用上述方式進行尋址。

5、以下是對buf進行配置的示例代碼的片段:

CAN_A.BUF[4].CS.B.IDE = 0; /* MB 4 will look for a standard ID */
CAN_A.BUF[4].ID.B.STD_ID = 0x85; /* MB 4 will look for ID = */
CAN_A.BUF[4].CS.B.CODE = 4; /* MB 4 set to RX EMPTY */
CAN_A.RXIMR[4].B.MI = 0xfffffffcu<<18u; /*0xc = 0b1100*/

6、以下是調試時需要注意的事項:
CAN_A.MCR.B.MBFEN = 0b1; /*不使用過時的模式*/

The Individual Rx Mask Registers are implemented in RAM, so they are not affected by reset and must be
explicitly initialized prior to any reception. Furthermore, they can only be accessed by the CPU while the
module is in Freeze Mode. Out of Freeze Mode, write accesses are blocked and read accesses will return
“all zeros”. Furthermore,


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM