天已黑,想问C8051F040 CAN发送问题!!!很多人似乎都有疑问#########【【论C8051F040 CAN

2020-01-27 11:18发布

我的CAN发送数据错误了!!于是到网上搜索了,发现有不少人有相同的疑问。用的是C8051F040单片机。
---------------------------------------------------------------------------------------
有个帖子http://xhl.com.cn/bbs/print.asp?id=8039

CAN通讯测试

单片机040_1

ID 1 发送数据 1111 1111 1111 1111

ID 2 发送数据 2222 2222 2222 2222

单片机040_2

ID 3 发送数据 3333 3333 3333 3333

ID 4 发送数据 4444 4444 4444 4444

单片机1每10毫秒发送ID1和ID2的数据

单片机2每10毫秒发送ID3和ID4的数据

接收端(周立功的CAN分析仪)发现ID1的数据和ID2的数据会串,

如收到的ID 1的数据可能是11 11 11 11 22 22 22 22

ID3的数据和ID4的数据也会串


----------------------------------------------------------------------

http://www.vihome.com.cn/bbs/forum.php?mod=viewthread&tid=19700

碰到个很郁闷的问题,程序调用zlg-usbcan的dll程序收发can数据。
采用队列收发数据
测试时发现个奇怪的问题,接收到的id是对的,数据长度也是对的,但是内容是错的。

发送图中是实际发的内容
接收图中是接收到的内容(ID对,数据错误)
程序图中加了两个探针,1是实际发送的内容,2是查看是有有成功发送(1表示成功发送)

调了好几天了,饿的神啊!

=================================================
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3929337&bbs_page_no=1&search_mode=1&search_text=CAN&bbs_id=1006
第11楼说:
故障现象搞清楚了 接收到的数据中第六位和第八位是同一个数 始终都是第八位的数
比如发送端我发12345678 接收端收到就是12345878 发别的数也是一样现象
但故障原因还没找到····
数组定位是为了排除故障 刚刚改回来了 呵呵
=================================================
http://www.vihome.com.cn/bbs/forum.php?mod=viewthread&tid=19700
===============================================================================================


我自己出现的问题也应该是上面所描述的。如果仅仅是发送不会有问题。但是既接收又发送,就会出问题。我现在的方法是发送前禁止CAN中断。当然能解决问题。但是这个方法太野蛮了 ,也不太好。

有人认为原因是
--------
最好是试试单节点通讯,再加上双节点,而定时10ms发送两帧报文会出现问题,我猜测是你没有判断是否ID1发送成功就马上发送ID2的报文了,这样会造成错误,正确的方法是执行完ID1发送的函数后判断发送成功,如果成功再发送ID2的报文;或者在两帧发送之间加1ms的延时。
-------------------

我在发送前已经加上延时了但还存在问题。



+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

等我有时间贴上代码!!!!

希望大家能找出原因啊  说不准你们的代码里面也有这样的问题啊
0条回答

一周热门 更多>