OpenEdv-开源电子网

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

求助求助!!连接CAN总线的各设备ID怎么确定?还有标准帧和扩展帧是怎么确定的?

[复制链接]

1

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2018-4-8
在线时间
9 小时
发表于 2018-4-14 17:09:15 | 显示全部楼层 |阅读模式
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

425

帖子

0

精华

高级会员

Rank: 4

积分
999
金钱
999
注册时间
2016-12-9
在线时间
174 小时
发表于 2018-4-16 08:34:09 | 显示全部楼层
回复 支持 1 反对 0

使用道具 举报

0

主题

96

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
297
金钱
297
注册时间
2017-10-12
在线时间
83 小时
发表于 2018-4-16 15:44:43 | 显示全部楼层
看实际情况,一般自己开发的CAN网络都是自定义ID,扩展ID29位有效,你可以自己截取一部分(如8-13位)作为设备地址。然后发送时自己的设备地址+(目的设备地址<<16)形成实际ID。当然也可以把MASK寄存器全清零当成485网络使用。
下图是一个我自己的一个设计例子:
未命名.GIF
回复 支持 1 反对 0

使用道具 举报

1

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2018-4-8
在线时间
9 小时
 楼主| 发表于 2018-4-14 17:09:57 | 显示全部楼层
我自己顶顶,求大神来围观
回复 支持 反对

使用道具 举报

1

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2018-4-8
在线时间
9 小时
 楼主| 发表于 2018-4-14 17:17:41 | 显示全部楼层
本来如果连接的设备有CAN源程序的话,可以通过CAN分析仪来确定,可惜没有连接设备的源程序。。。。。。。后来又听说可以利用modbus协议来确定设备的标识符ID以及是否是标准帧还是扩展帧,有些人又说CAN和MODBUS本身没有任何联系,但我好像发现了什么?如图,只是不知道怎么用。。。。有谁知道吗
QQ图片20180414171715.jpg
回复 支持 反对

使用道具 举报

0

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2018-4-4
在线时间
17 小时
发表于 2018-4-16 08:29:17 | 显示全部楼层
你先要搞清楚这个代码里面CAN总线使用了什么通讯协议,然后再去找这个通讯协议的文档。
回复 支持 反对

使用道具 举报

1

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2018-4-8
在线时间
9 小时
 楼主| 发表于 2018-4-16 09:15:27 | 显示全部楼层
queelys 发表于 2018-4-16 08:29
你先要搞清楚这个代码里面CAN总线使用了什么通讯协议,然后再去找这个通讯协议的文档。

好的,谢谢,那我先去看一下通讯协议
回复 支持 反对

使用道具 举报

1

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2018-4-8
在线时间
9 小时
 楼主| 发表于 2018-4-16 09:17:16 | 显示全部楼层
WYS666 发表于 2018-4-16 08:34
http://www.openedv.com/forum.php?mod=viewthread&tid=10328

谢谢,我先了解下
回复 支持 反对

使用道具 举报

1

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2018-4-8
在线时间
9 小时
 楼主| 发表于 2018-4-16 09:25:48 | 显示全部楼层
WYS666 发表于 2018-4-16 08:34
http://www.openedv.com/forum.php?mod=viewthread&tid=10328

老哥,它那里面也只是说根据实际情况自己设置
回复 支持 反对

使用道具 举报

1

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2018-4-8
在线时间
9 小时
 楼主| 发表于 2018-4-16 09:26:42 | 显示全部楼层
老哥,它那里面也只是说根据实际情况自己设置
ZB9C40Y]{H2[%1(ZR}6IN[R.png
回复 支持 反对

使用道具 举报

1

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2018-4-8
在线时间
9 小时
 楼主| 发表于 2018-4-16 17:04:46 | 显示全部楼层
cxf0153 发表于 2018-4-16 15:44
看实际情况,一般自己开发的CAN网络都是自定义ID,扩展ID29位有效,你可以自己截取一部分(如8-13位)作为 ...

首先非常谢谢,但我想问一下自己定义ID的话,怎么把自己定义的节点ID跟节点联系起来,打个例子,我把节点ID设置为0X24,是不是我这样设置就可以了吗TxMessage.StdId=0x24;不需要在寄存器操作吗?
回复 支持 反对

使用道具 举报

1

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2018-4-8
在线时间
9 小时
 楼主| 发表于 2018-4-16 17:15:22 | 显示全部楼层
cxf0153 发表于 2018-4-16 15:44
看实际情况,一般自己开发的CAN网络都是自定义ID,扩展ID29位有效,你可以自己截取一部分(如8-13位)作为 ...

扩展ID29位有效,你可以自己截取一部分(如8-13位)作为设备地址。然后发送时自己的设备地址+(目的设备地址<<16)形成实际ID。
老哥,我对这句话不是很理解,扩展ID29位有效,但你这里不是只有26位吗?而且扩展ID的范围是寄存器的CAN_TIxR位31~位3,位2~位0是根据需要自己设置,所以对你图片上的例子看的不是很懂,麻烦老哥能解释一下吗?本人刚了解不久,能说浅显的麻烦讲解的尽量浅显点
回复 支持 反对

使用道具 举报

1

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2018-4-8
在线时间
9 小时
 楼主| 发表于 2018-4-17 19:45:17 | 显示全部楼层
求大神。。。。。。
回复 支持 反对

使用道具 举报

0

主题

425

帖子

0

精华

高级会员

Rank: 4

积分
999
金钱
999
注册时间
2016-12-9
在线时间
174 小时
发表于 2018-5-16 10:02:17 | 显示全部楼层
楼主,你需要先看看CAN协议。ID使用是非常灵活的,都是根据自己的实际需要而设置的。比如你有10个节点想连在一起。那么可以用4位ID来标识这10个设备。4位ID有16种组合,最多可以代表16个节点。
回复 支持 反对

使用道具 举报

1

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2018-4-8
在线时间
9 小时
 楼主| 发表于 2018-5-24 11:49:36 | 显示全部楼层
WYS666 发表于 2018-5-16 10:02
楼主,你需要先看看CAN协议。ID使用是非常灵活的,都是根据自己的实际需要而设置的。比如你有10个节点想连 ...

好的,谢谢,我还以为是从节点设备获取的
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-11 17:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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