TI论坛
直播中

周润艺

7年用户 200经验值
私信 关注
[问答]

LM3S9B92 can总线应用有哪些?

原来多台设备之间是通过UART用RS485进行通讯,每台设备通过拨码开关设一个地址。然后主设备通过轮讯的方式查询下游设备的信息。
有些客户认为设置拨码开关不方便,希望取消拨码开关,主设备能够自动的获取下游设备的信息。
另外所有的设备都是同种类型的设备,每台设备软硬件上完全一样。
现在想通过can总线进行设备之间的信息交互。对这个不太熟悉,不知各位达人能够提供一个方案或者解决问题的思路。
重新描述一下问题:
设备a,b,c,d完全一样,通过can总线联结,假设a为主设备,则a可以自动的获取到b,c,d的信息。而且需要支持热插拔:c设备移出后,a设备能够知道现在一共有3台设备。当e设备接入后,a设备能够知道,并且能够自动的获取e设备的信息。
主设备需要和上位机进行通讯,也就是将它自身以及其他设备的信息全部汇总上报给上位机。所以每台机器都可能作为主设备。

回帖(3)

李响

2020-4-23 10:06:24
就算你不使用拨码,你的节点可能也需要某种唯一的号码来对应位置/设备。至于你想实现的这些组网功能,看起来更加类似一个CAN OPEN网络,可以实现组网和节点检测地址分配等问题。当然你也可以自己实现某种形式的CAN 高层协议,以达到你的目的。
举报

张静

2020-4-23 10:20:58
1.首先按Stephen所说,你的每个设备应该有一个unique ID,然后用它做为本机ID标识(只取29位,扩展帧)(如果你有应用中有Flash的话,你可以找到一个)。
2.CAN主机节点维护一个unique ID池(主机复位时为空),并把一个特殊的ID作为一个广播ID。
3.主机间隔一段时间发送广播ID报文,没有被分配置地址的CAN设备都允许接收该广播ID报文。
4.跟据报文优先级,可以确定ID最低的CAN设备报文将被主机收到,此时主机注册该CAN设备ID到unique ID池。并在后续使用该ID与设备通信。
5.任何设备收到与自己ID匹配的报文后将进入正常收发模式,停止响应广播报文。
6.网络完整建立的时间取决于广播ID的发送间隔,网络建立后广播ID的发送是个负担,可以跟据条件选择性终止(不过你要支持热插拔的话是不能够停止广播ID的)。
7.此时网络已经建立,可以运行你自己的CAN上层协议。
网络动态维护
1.当主机与一个ID通信失败时需从ID池中注消该ID,若该设备被再次插入,通过前面的机制仍然能够自动识别。
举报

周润艺

2020-4-23 10:35:03
引用: YOYOOO 发表于 2020-4-23 12:41
1.首先按Stephen所说,你的每个设备应该有一个unique ID,然后用它做为本机ID标识(只取29位,扩展帧)(如果你有应用中有Flash的话,你可以找到一个)。
2.CAN主机节点维护一个unique ID池(主机复位时为空),并把一个特殊的ID作为一个广播ID。
3.主机间隔一段时间发送广播ID报文,没有被分配置地址的CAN设备都允许接收该广播 ...

非常感谢~!
给了我很多启发
举报

更多回帖

发帖
×
20
完善资料,
赚取积分