1. 程式人生 > >關於USBCAN二次開發函式的過濾器設定

關於USBCAN二次開發函式的過濾器設定

來自: https://wenku.baidu.com/view/89fa57c34028915f804dc2c7.html?rec_flag=default&sxts=1537363928337

         CAN匯流排中的驗證碼有點像IP地址驗證

        但是驗收遮蔽位和IP地址掩碼的概念完全不同

        遮蔽位=1時, 相當於不對該位上面的bit值進行驗證----看下下圖的邏輯運算就清楚了,        

========================================================

關於USBCANII接收驗證碼和遮蔽碼的設定, 看這裡:

             https://wenku.baidu.com/view/fb3ffccfa0c7aa00b52acfc789eb172ded639910.html

USBCAN採用如下圖的左對齊方式進行驗證碼和遮蔽碼的設定

SDK函式:   VCI_InitCAN(DWORD DevType, DWORD DevIndex, DWORD CANIndex,PVCI_INIT_CONFIG pInitConfig);

對於標準幀:

                pInitConfig->AccCode 取高11bit作為驗證碼:  pInitConfig->AccCode = ID << 21;

                pInitConfig->AccMask 取高11bit作為遮蔽碼:      pInitConfig->AccCode = ID_MASK << 21;

多餘擴充套件幀:

                pInitConfig->AccCode 取高29bit作為驗證碼:  pInitConfig->AccCode = ID <<3;

                pInitConfig->AccMask 取高29bit作為遮蔽碼: pInitConfig->AccCode = ID_MASK << 3;

 

如果我要過濾ID為0x12x的標準幀, 則驗證碼為:  001 0010 xxxx

                                                             遮蔽碼:   000 0000 1111