OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4239|回复: 0

用f103做can双机通讯时碰到的一个问题。。。

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
25
金钱
25
注册时间
2013-10-23
在线时间
0 小时
发表于 2013-10-23 15:14:10 | 显示全部楼层 |阅读模式

             先传几个效果图 

图片1:can主机1

图片2 can从机1

图片3:can主机2


 

图片4:can从机2


 

图片5:can主机3


 

图片6:can从机3


问题出现在主机发送命令0,让从机打印接收到的数据,这个时候从机接收到的第二个数据就会变成0,这里的0就是发送的cmd0里面的0,LZ验证过,其他的数据都是正确的

下面是从机的代码

主函数部分(后面的注释部分大家选择性无视掉吧)


中断部分


LZ用屏蔽的方式验证过,数据出错在中断部分,接收帧的RxMesage.Data[0]跟我定义的缓冲区ReceiveData[1]重合了。。。所以每次接收到命令数据后ReceiveData[1]就会出错。。。

更令LZ费解的是,这个重合是会移位的,LZ试过把ReceiveData[1]赋给另外一个变量,然后在打印前再赋值回去给ReceiveData[1],这个时候ReceiveData[2]的数据就出错了。。。而且这个问题不是第一次出现了,LZ刚开始的时候会让从机接收到数据以后再返回给主机,然后主机打印数据,这里在主机开了一个中断来实现,这个时候主机的发送数据第一帧的最后一位也就是data[7]跟第二帧第一位也就是Data[8]又重合了。。。而且其他数据都是正确的。。。LZ同样是用屏蔽代码检查出来导致问题的原因是开了那个接收中断,后来就把这部分删掉了

求各位大神指点一下。。。。


 

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-10 09:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表