打印
[STM32]

对于Can 标识符中ID设置的困惑,

[复制链接]
4559|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hzocce|  楼主 | 2017-1-5 15:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

如果2个一模一样的CAN接口的板子,里面程序也一模一样,是不是ID就一样了?
想硬件里面加个拨码开关来配置地址?或者用串口来配置地址?
然后仲裁问题,优先级,是之前每一个CAN设备都是固定好了的?哪个优先级,是么?

CAN中不能挂接一模一样的CAN设备?

我想做好多个CAN通信的传感器,麻烦大神指导!

相关帖子

沙发
dalarang| | 2017-1-5 20:56 | 只看该作者
理解得没错,所以挂多个相同设备的情况下都会有其它方式设置不同ID,例如拨码开关等。

使用特权

评论回复
板凳
hzocce|  楼主 | 2017-1-5 21:40 | 只看该作者
本帖最后由 hzocce 于 2017-1-5 21:45 编辑

1.  本身ID要用拨码开关来设置,也就是要挂100个CAN设备就要挂7位拨码开关。2. 另外优先级呢,是搞一样,还是也搞N个优先级?

使用特权

评论回复
地板
dalarang| | 2017-1-5 22:50 | 只看该作者
发送的优先级是由ID决定的,记得是数值小的先优先级高。

优先级仲裁的原理就是:如果有多个终端同时发送数据帧,大家都先发SOF,然后发ID,一位一位发,都发显性电平时先不管,直到有哪一个终端发到隐性电平时,侦测到总线上还时处于显性电平状态,就知道总线上有其它优先级更高的终端正在发送,就把总线让出来让别人先发,最后剩下的一个就是优先级最高的。
如果ID相同,发送仲裁就失效了,所以总线内不要有相同的ID。

使用特权

评论回复
5
杨爱林林| | 2017-1-6 10:27 | 只看该作者
每个设备有个独有的地址,同时地址设好后,标识符越小,其优先级也越高。
在saej1939中,就有规定29位标识符其低16位可以配置为目的地址和源地址。
同样的硬件板子的话,一般选择拨码开关来配置标识符。

使用特权

评论回复
6
hzocce|  楼主 | 2017-1-7 09:23 | 只看该作者
杨爱林林 发表于 2017-1-6 10:27
每个设备有个独有的地址,同时地址设好后,标识符越小,其优先级也越高。
在saej1939中,就有规定29位标识 ...

就是在板子初始化 里面,,软件设置后,读取这几个拨码开关的状态,来配置自己的地址,对么?

使用特权

评论回复
7
ningling_21| | 2017-1-7 12:24 | 只看该作者
hzocce 发表于 2017-1-7 09:23
就是在板子初始化 里面,,软件设置后,读取这几个拨码开关的状态,来配置自己的地址,对么? ...

可以这样配置地址

使用特权

评论回复
8
hzocce|  楼主 | 2017-1-7 14:02 | 只看该作者
ningling_21 发表于 2017-1-7 12:24
可以这样配置地址

也就是还有其他的方式?

求指导!

使用特权

评论回复
9
ningling_21| | 2017-1-7 14:05 | 只看该作者
hzocce 发表于 2017-1-7 14:02
也就是还有其他的方式?

求指导!

可以像电脑的动态IP地址分配那样分配地址ID

使用特权

评论回复
10
疯子8972| | 2017-1-8 08:31 | 只看该作者
3楼没讲全,如果同id的报文真的不巧同时在网络出现,仲裁失败,两个节点同时发送数据,两个节点的数据和校验不同,会导致发送失败,失败后两节点重发,重发时间因为异步通讯,无标准clk,时基误差导致可能不会再凑巧同时发送,于是发送成功^_^

使用特权

评论回复
11
疯子8972| | 2017-1-8 08:45 | 只看该作者
可以做到自动分配,首先每个设备都有一个独立的设备号,还要有个分配id的主机,规定一对专门用于请求分配id的报文,从机上电就定时用同样的请求通道向主机发送请求,数据中是自己的设备号,主机收到请求,用回应通道发送,数据是设备号和分配给他的id,可以根据从设备类型分配不同的id号段,灵活编写主机分配策略,这算是比较高级的应用了^_^

使用特权

评论回复
12
hzocce|  楼主 | 2017-1-13 21:41 | 只看该作者
还是不懂哎,一样的硬件,一样的程序。
自动分配?
如何使他们那么智能?
也不同如何用主机来每个一模一样的板子来分配ID, 我是菜鸟,求扫盲!

使用特权

评论回复
13
JerryWu75| | 2017-1-15 12:04 | 只看该作者
自动分配的协议就是首先你的每一块板在出厂前需要分别一个不同的编号。
在板上电后,先通过这个编号和地址分配服务器通信,从服务器处获得自己的通信ID。

这个相当于以太网的DHCP功能,每一块网卡在出厂时都会有一个全球唯一的MAC ID, 通过这个MAC ID从DHCP服务器获得IP,然后使用这个IP进行通信。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

127

主题

561

帖子

4

粉丝