CAN双机通讯调试小结

CAN双机通讯调试小结,第1张

CAN双机通讯调试小结(SJA1000与MCP2515通讯)

2011-12-07 21:36:02、

效果图:

1,51的SJA1000自收自发测试完成,见上一篇小结。


2,SJA1000自测完成后,再自测MCP2515就非常容易。


主要是设置工作模式为回环模式即可。


测试ok。


3,开始SJA1000和MCP2515的双机通讯

先做最简单的实验。


SJA1000发送,MCP2515接收,并通过串口显示接收ID及接收数据


我把调试成功的结果写出来。


步骤1:(主要改波特率)

1)      设置波特率使2者一致。


2)      SJA1000及MCP2515由自测模式改成正常模式。


3)      MCP2515设置关闭屏蔽接收所有帧,RXB0CTRL.RXM。


CAN通讯成功。


证明我的双机硬件连线都正确。


步骤2:(主要改滤波)

步骤1的基础上

1)修改MCP2515的RXB0CTRL.RXM,使其只接收符合滤波器条件的带有扩展标识符的有效报文。


2)修改屏蔽寄存都为0,对应的标识符位将被自动接收而不进行滤波。


CAN通讯成功。


步骤3:(主要改滤波)

在步骤2的基础上

1)      修改SJA1000的ID,改成ID1=1.即

unsigned char Send_CAN_Info_ID[5]={0x88,0x00,0x00,0x0,0x11};地址20是0x11,就是设置ID1=1.

2)      修改MCP2515的ID,把滤波屏蔽全0改成全1,一定要接收ID与验收滤波一致才可通讯。


SPIByteWrite(RXF0EID0,0x02);就是设置ID1=1.

CAN通讯成功。


步骤4:(主要修改ID

在步骤3的基础上

1)修改SJA1000的ID,改成ID1=1.即

unsigned char Send_CAN_Info_ID[5]={0x88,0x00,0x40,0x0,0x11};地址20是0x11,就是设置ID19=1.

2)修改MCP2515的ID SPIByteWrite(RXF0SIDL,0x48);就是设置ID19=1. EXIDE要设置为1.

说明:ID一致才能接收。


步骤5:(配合滤波修改ID

在步骤4的基础上

1)修改MCP2515的ID SPIByteWrite(RXF0SIDL,0x68);就是设置ID19=1. EXIDE要设置为1.

由于ID通过滤波后是不同的,所以通讯应该失败。


验证ok。


2)修改滤波,使其对ID19,ID20,ID21忽略,设置SPIByteWrite(RXM0SIDL,0x0F);

CAN双机通讯成功。


打印时候显示接收的ID及数据,见最终效果图。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/589372.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-12
下一篇 2022-04-12

发表评论

登录后才能评论

评论列表(0条)

保存