>一、在双机通讯的基础上,稍微改变一下设置,就可以实现多机通讯,方法有两种。 1、配置屏蔽寄存器,比如配置为0x7f8,相应的二进制为111 1111 1000,那么只要是高8位与滤波寄存器相同的ID都可以接受到信息,如果滤波寄存器为0x004,则0x000--0x007之间的所有ID码发送的信息都可以收到。 2、MCP2515 具有两个全接收缓冲器RXB0与RXB1。每个接收缓冲器配备 有多 个 验 收滤 波 器。可以设置多个滤波寄存器的值,每一个对应一个接受ID码,这样就可以精确接受某些ID码发送的信息了。
二、把ABCD四个单片机,标准ID分别设置为0x001,0x002,0x003,0x004。 1、单片机A初始化mcp2515,设置为标准ID=0x001,标准ID为11位,既000 0000 0001,高位寄存器TXB0SIDH为0000 0000,低位寄存器TXB0SIDL为0010 0000,低位寄存器的高三位为标准ID的最低三位。 MCP2515_WriteByte(TXB0SIDH,0x00); MCP2515_WriteByte(TXB0SIDL,0x20);
2、单片机B初始化mcp2515,设置为标准ID=0x002,标准ID为11位,既000 0000 0010,高位寄存器TXB0SIDH为0000 0000,低位寄存器TXB0SIDL为0100 0000,低位寄存器的高三位为标准ID的最低三位。 MCP2515_WriteByte(TXB0SIDH,0x00); MCP2515_WriteByte(TXB0SIDL,0x40);
3、单片机C初始化mcp2515,设置为标准ID=0x003,标准ID为11位,既000 0000 0011,高位寄存器TXB0SIDH为0000 0000,低位寄存器TXB0SIDL为0110 0000,低位寄存器的高三位为标准ID的最低三位。 MCP2515_WriteByte(TXB0SIDH,0x00); MCP2515_WriteByte(TXB0SIDL,0x60);
4、单片机D初始化mcp2515,设置为标准ID=0x004,标准ID为11位,既000 0000 0100,高位寄存器TXB0SIDH为0000 0000,低位寄存器TXB0SIDL为1000 0000,低位寄存器的高三位为标准ID的最低三位。 MCP2515_WriteByte(TXB0SIDH,0x00); MCP2515_WriteByte(TXB0SIDL,0x80);
三、把屏蔽寄存器配置为0x7F8(注意是11位) MCP2515_WriteByte(RXM0SIDH,0xff); MCP2515_WriteByte(RXM0SIDL,0x00);
这样从0-7的所有ID码发送的信息都可以收到。 如果只接受某几个ID码的信息,可以设置屏蔽寄存器为 MCP2515_WriteByte(RXM0SIDH,0xff); MCP2515_WriteByte(RXM0SIDL,0xE0);
然后再配置滤波寄存器 MCP2515_WriteByte(RXF0SIDH,0x00); MCP2515_WriteByte(RXF0SIDL,0x40); MCP2515_WriteByte(RXF1SIDH,0x00); MCP2515_WriteByte(RXF1SIDL,0x60);
这样ID位0x002 0x003的可以收到,其它的不能接受。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |