首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >掩码和过滤dsPic30F4011

掩码和过滤dsPic30F4011
EN

Stack Overflow用户
提问于 2015-04-30 19:20:20
回答 1查看 143关注 0票数 2

我正在为CAN编写一个dsPIC30F4011。但是我在指定标识符、掩码和过滤器时遇到了问题。

我使用标准标识符和扩展标识符。在第16-23位中,我将写入收发信机的地址。因此,看起来00000 00000001 0000000000000001空格只是为了显示我设置的以下位的收发器部分:

代码语言:javascript
复制
// PRIO
C1TX0SIDbits.SID10_6 = 0x0000; 
// SCR
C1TX0SIDbits.SID5_0 = 0x0000;   
C1TX0EIDbits.EID17 = 0x0000;
C1TX0EIDbits.EID16 = 0x0001;
// DEST
C1TX0EIDbits.EID15 = 0x0000;    
C1TX0EIDbits.EID14 = 0x0000;
C1TX0EIDbits.EID13 = 0x0000;
C1TX0EIDbits.EID12 = 0x0000;
C1TX0EIDbits.EID11 = 0x0000;
C1TX0EIDbits.EID10 = 0x0000;
C1TX0EIDbits.EID9 = 0x0000;
C1TX0EIDbits.EID8 = 0x0000;
// CMD
C1TX0DLCbits.EID5_0 = 0x0001;

现在我在设置遮罩和滤镜时遇到了问题

代码语言:javascript
复制
// Mask
C1RXM0SID = 0x00FD;
C1RXM0EIDH = 0x0C00;
C1RXM0EIDL = 0x0000;
// Filter
C1RXF0SID = 0x0000;
C1RXF0EIDH = 0x0400;
C1RXF0EIDL = 0x0000;

现在我什么也收不到了。如果我设置

代码语言:javascript
复制
C1RXM0SID = 0x000FC;

我会收到所有的消息。我用收发信机试过了-地址

代码语言:javascript
复制
0b00000000

代码语言:javascript
复制
0b00000001

那么,我做错什么了吗?(我想是的,但我不知道是什么)

EN

回答 1

Stack Overflow用户

发布于 2018-08-31 05:22:20

现在我设置的遮罩和滤镜有问题了

//掩码C1RXM0SID = 0x00FD;C1RXM0EIDH = 0x0C00;C1RXM0EIDL = 0x0000;//过滤C1RXF0SID = 0x0000;C1RXF0EIDH = 0x0400;C1RXF0EIDL = 0x0000;

现在我什么也收不到了。如果我设置

C1RXM0SID = 0x000FC;

这是因为您正在设置C1RXM0SID的位0。根据reference manual中的寄存器描述,这将仅匹配由过滤器中的EXIDE位确定的消息类型(标准或扩展地址)。此寄存器的位1未实现。假设您想要的SID掩码为0xFD,则此寄存器的SID掩码为

代码语言:javascript
复制
C1RXM0SID = 0x00FD << 2;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29966370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档