8161|6

72

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

CAN通讯接收发送共同29位码,通讯阻塞 [复制链接]

两块板子做can通讯测试,两个代码都是一样的,发送的CAN数据也是一样的,并且都同时接受,也同时发送,运行一段时间后,发现两个板子不通讯了,复位一个板子能同时通讯上。
     我修改一个板子上 CAN_TxMessage.ExtId数据,就是两个板子上的29码不同,运行一夜,通讯一直能成功。
    进一步分析问题,如果两个板子都发送同样的ID码( 29位码),CAN通讯会出错,我仿真过了,程序是正常的,在发送数据的时候temp = CAN_Transmit(&CAN_TxMessage);返回数据是temp = CAN_NO_MB,也就是说发送邮箱满了,不能发送了。
    我的问题是,CAN节点都发送同样的ID码,CAN总线会阻塞吗?是什么原因造成阻塞的?
此帖出自stm32/stm8论坛

最新回复

                                 把两个邮箱的ID设成一致,确实没有什么实在的意义,CAN通信之所以能够广播式发送,就是通过ID来区分的  详情 回复 发表于 2009-9-14 15:30
点赞 关注
 

回复
举报

78

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
                                 关注,
此帖出自stm32/stm8论坛
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
                                 LZ  相同ID怎么判断优先级????????????怎么进行传输??????
此帖出自stm32/stm8论坛
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

4
 
                                 两个板之发同样的数据,在实际应用没意义。29位码可以一样,后面8个字节不一样就可以总线总裁了。
此帖出自stm32/stm8论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

5
 
29位码一样?

29位码一样?这怎么行?如果没有记错,CAN的总线仲裁是根据ID(11位或29位)、帧的类型(远程帧、数据帧),29位码如果相同,可能很快就会出错。
此帖出自stm32/stm8论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

6
 
不知道顶楼的是否知道CAN Bus的仲裁方式?

在同一总线上出现了,扩展帧的29为ID全部相同,意味什么?不解释你也知道。

1、当存在仲裁是,报文退出发送状态,邮箱中数据发不出去,等待下一次的发送;

2、邮箱出不去,发送错误计数器(Transmit Error Counter (TEC))+8,加到127进入“错误被动(Error Passive)”模式,如果还不处理,TEC加到+255,节点自动退出总线;

3、如有数据发送成功,TEC会-1的,发送和接收都是一样。

你所说的“通讯阻塞”大概就是这个原因吧,换个说法:你做好了错误管理吗?发送是TEC,接收是REC,看STM32的CAN Bus模块的“CAN错误状态寄存器 (CAN_ESR)”
此帖出自stm32/stm8论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

7
 
                                 把两个邮箱的ID设成一致,确实没有什么实在的意义,CAN通信之所以能够广播式发送,就是通过ID来区分的
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表