會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)


正在流覽:   1 名訪客





dsPIC33 CAN bus疑問
新會員
註冊日期:
2016/12/28 10:50
所屬群組:
註冊會員
文章: 4
等級: 1; EXP: 21
HP : 0 / 5
MP : 1 / 42
離線
設定fiter ID須對應到它要哪個buffer如下所示:
/*acceptance filter to use buffer 2 for incoming messages*/
C1BUFPNT1bits.F1BP=0b0010;

查datasheet, ECAN1有8buffer 可以運用,如下程式:
/* ECAN1, Buffer 0 is a Transmit Buffer */
C1TR01CONbits.TXEN0=1;
/* ECAN1, Buffer 1 is a Receive Buffer */
C1TR01CONbits.TXEN1=0;
/* ECAN1, Buffer 2 is a Receive Buffer */
C1TR23CONbits.TXEN2=0;
/* ECAN1, Buffer 3 is a Receive Buffer */
C1TR23CONbits.TXEN3=0;
/* ECAN1, Buffer 4 is a Transmit Buffer */
C1TR45CONbits.TXEN4=0;

1個CAN bus RX需要用到buffer,目前有18個不同ID需要讀取,請問該如何處置? 8個buffer都用在RX 是否只能讀取8個ID帶的資料?

1月16日 11:28:02
轉換PDF檔 列印


Re: dsPIC33 CAN bus疑問
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14805
等級: 73; EXP: 53
HP : 1087 / 1813
MP : 4935 / 81178
離線
除非你 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 的比對。

1月16日 13:43:14
轉換PDF檔 列印


Re: dsPIC33 CAN bus疑問
新會員
註冊日期:
2016/12/28 10:50
所屬群組:
註冊會員
文章: 4
等級: 1; EXP: 21
HP : 0 / 5
MP : 1 / 42
離線
已知0x18FF01F4 , 0x18FF24F4 , 0x18FF22F4......等18個
ID有其共通性,要如何用1個buffer和1個filter去抓這些ID,設定如下
C1RXM0EID=CAN_FILTERMASK2REG_EID0(0xFFFF);
C1RXM0SID=CAN_FILTERMASK2REG_EID1(0x1FFF);
C1RXF0EID=CAN_FILTERMASK2REG_EID0(0x0302); <-- 修改這裡
C1RXF0SID=CAN_FILTERMASK2REG_EID1(0x0000); <-- 修改這裡
C1RXF0SID=CAN_FILTERXTD(C1RXF0SID);
/*acceptance filter to use buffer 1 for incoming messages*/
C1BUFPNT1bits.F0BP=0b0001; <-- 指定buffer
C1FEN1bits.FLTEN0=1;

有嘗試過不同filter指定到相同buffer是抓不到數值。
要在不同buffer才能抓到直,如果用18個filter去分辨18個ID就需要18個buffer,但dspic33僅有8個buffer 但filter有15個,所以問題在於如何在有限的buffer內分辨18個ID?

謝謝Ryang回覆。

1月16日 16:15:08
轉換PDF檔 列印






無法在此發表文章
可以在此觀看文章
無法回覆文章
無法編輯自己的文章
無法刪除自己的文章
無法發起投票調查
無法在此投票
無法上傳附加檔案
無法不經審核直接發表文章

[進階搜尋]


搜尋
Microchip連結

網頁捷徑
2019 Summer Elite 報名
教育訓練
其它網站連結
電話: 02-25000405
產品技術問題產品技術支援專線:0800-717718 台北02-25088600 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project