[电工&电子] 51单片机CAN总线通讯,MCP2515模块,普中科技单片机电路板--正常模式,多机

[复制链接]
查看164 | 回复0 | 2024-7-20 16:17:08 | 显示全部楼层 |阅读模式
>

一、在双机通讯的基础上,稍微改变一下设置,就可以实现多机通讯,方法有两种。

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);//发送缓冲器0标准标识符高位MCP2515_WriteByte(TXB0SIDL,0x20);//发送缓冲器0标准标识符低位/2

2、单片机B初始化mcp2515,设置为标准ID=0x002,标准ID为11位,既000 0000 0010,高位寄存器TXB0SIDH为0000 0000,低位寄存器TXB0SIDL为0100 0000,低位寄存器的高三位为标准ID的最低三位。

MCP2515_WriteByte(TXB0SIDH,0x00);//发送缓冲器0标准标识符高位MCP2515_WriteByte(TXB0SIDL,0x40);//发送缓冲器0标准标识符低位

3、单片机C初始化mcp2515,设置为标准ID=0x003,标准ID为11位,既000 0000 0011,高位寄存器TXB0SIDH为0000 0000,低位寄存器TXB0SIDL为0110 0000,低位寄存器的高三位为标准ID的最低三位。

MCP2515_WriteByte(TXB0SIDH,0x00);//发送缓冲器0标准标识符高位MCP2515_WriteByte(TXB0SIDL,0x60);//发送缓冲器0标准标识符低位/2

4、单片机D初始化mcp2515,设置为标准ID=0x004,标准ID为11位,既000 0000 0100,高位寄存器TXB0SIDH为0000 0000,低位寄存器TXB0SIDL为1000 0000,低位寄存器的高三位为标准ID的最低三位。

MCP2515_WriteByte(TXB0SIDH,0x00);//发送缓冲器0标准标识符高位MCP2515_WriteByte(TXB0SIDL,0x80);//发送缓冲器0标准标识符低位

三、把屏蔽寄存器配置为0x7F8(注意是11位)

  MCP2515_WriteByte(RXM0SIDH,0xff);//配置验收屏蔽寄存器n标准标识符高位  MCP2515_WriteByte(RXM0SIDL,0x00);//配置验收屏蔽寄存器n标准标识符低位

这样从0-7的所有ID码发送的信息都可以收到。

如果只接受某几个ID码的信息,可以设置屏蔽寄存器为

  MCP2515_WriteByte(RXM0SIDH,0xff);//配置验收屏蔽寄存器n标准标识符高位  MCP2515_WriteByte(RXM0SIDL,0xE0);//配置验收屏蔽寄存器n标准标识符低位

然后再配置滤波寄存器

  MCP2515_WriteByte(RXF0SIDH,0x00);//配置验收滤波寄存器n标准标识符高位  MCP2515_WriteByte(RXF0SIDL,0x40);//配置验收滤波寄存器n标准标识符低位  MCP2515_WriteByte(RXF1SIDH,0x00);//配置验收滤波寄存器n标准标识符高位  MCP2515_WriteByte(RXF1SIDL,0x60);//配置验收滤波寄存器n标准标识符低位

这样ID位0x002 0x003的可以收到,其它的不能接受。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则