OpenEdv-开源电子网

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

can多机通讯的接收问题

[复制链接]

23

主题

46

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
231
金钱
231
注册时间
2014-9-30
在线时间
49 小时
发表于 2018-4-3 15:28:14 来自手机 | 显示全部楼层 |阅读模式
第一次写can多机通讯程序,请教大家了。当can接收中断来临,怎么判断是哪个节点发来的,难道需要在数据中加入帧头?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2018-4-3 22:24:59 | 显示全部楼层
can不是有节点id仲裁吗?
回复 支持 反对

使用道具 举报

23

主题

46

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
231
金钱
231
注册时间
2014-9-30
在线时间
49 小时
 楼主| 发表于 2018-4-4 10:02:21 来自手机 | 显示全部楼层
275891381 发表于 2018-4-3 22:24
can不是有节点id仲裁吗?

我想要的是一主多从模式,就是所有从机信息都要接收并区分处理,仲裁不是只放目的地ID吗?源ID放在哪呢?我用的是c8051f系列,参考的是C_CAN User's Manual资料,里面只有目的地ID,没得源地址的存放地方啊,难道人为把扩展ID分为两部分,一半放目的地ID,一半放源ID?
回复 支持 反对

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2018-4-4 10:34:32 | 显示全部楼层
本帖最后由 275891381 于 2018-4-4 10:38 编辑
31兔子 发表于 2018-4-4 10:02
我想要的是一主多从模式,就是所有从机信息都要接收并区分处理,仲裁不是只放目的地ID吗?源ID放在哪呢? ...

下面是我自己的理解,有错误还希望指正
1.首先can节点是不分主从的,都是广播发送的,大家都可以接收,只是每个节点可以过滤屏蔽,接收了自己想要的数据并做出响应就可以了。
2.非要理解成一主多从,假如从机响应主机命令,那你就自己定义个协议,主机发送数据里面定义好是发给哪个从机的,每个从机收到数据后判断是不是给自己的,再做出相应就可以了
3.还有can的id只是用来仲裁的,并不区分目的地id和源id,但是我觉得把can id理解成是自己的id更容易理解点
4.一个发多个收很多人会疑问can ack位怎么能保证所有节点都正常收到数据,因为只要有一个节点正确接收数据ack就会填入显性电平。can里面是靠错误帧来处理的,没有正常接收数据的节点会发送错误帧,所有节点都会收到错误帧,就都会舍弃这个数据,等待发送节点重新发送。这是can控制器自己处理的,编程不需要管。



回复 支持 反对

使用道具 举报

23

主题

46

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
231
金钱
231
注册时间
2014-9-30
在线时间
49 小时
 楼主| 发表于 2018-4-10 12:48:09 来自手机 | 显示全部楼层
275891381 发表于 2018-4-4 10:34
下面是我自己的理解,有错误还希望指正
1.首先can节点是不分主从的,都是广播发送的,大家都可以接收, ...

一直没理解can的id,这下清楚了,非常感谢
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-1 12:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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