Re: dsPIC33 CAN bus疑問

作者 Ryang 於 2019年01月16日 13:43:14
除非你 18 個 ID 都沒有共通性,每個 ID 的位元都是唯一且不重複。

一般在設定 Receiver Filter 時,都會先將 ID 與 MASK 一起規劃的。MASK 相對應被設成 1 的位元將會被 Filter 做比對檢查是否是所要的 ID 或 ID 群。如 MASK 的該位元是設成 0 的話,表示該位元將不檢查,這時無關 filter 的設定。

也就是說如果 MASK 所有位元都設成 0 時,這時 Filter 的設定就無關了,所有的資料將無阻攔通通被接收到 Receiver Buffer。

如果 MASK 通通設為 1 的話,Filter 將會檢查所有的 ID 位元是否與 Filter 的位元一樣。通通都一樣時 ID 才會被接收進來。

如果 MASK 只設了 msb 的位元,如 0b111 0000 0000 的話那只有最高的三個位元會被 Filter 比對,其餘的都不比對 ID。如此一來就可以使用在群體 ID 的比對。

來自: http://www.microchip.com.tw/newbb/viewtopic.php?forum=2&topic_id=22530&post_id=79184