请教个问题,我现在是通过can读取其它设备信息。 如果被读取的设备由于人为原因搞成了相同的id,我想通过判断单片机id的方式来判断出这种错误。 现在遇到的问题是,我发送出去读取帧后,两个设备比如A和B是同时接收到的,然后他们会返回信息,但经常是A设备能正常返回,B设备可能是竞争失败无法返回。偶尔能返回一次。 理想的状态是A和B轮流返回信息,这样就能稳定的判断了。
我正在做CAN系统的项目,目前无法判断出来。
比如说我控制CAN地址是02的子设备,如果有2个子设备的CAN地址是02,则这2个子设备都会收到并执行。
不会是只有其中一个收到。
为了避免重复,必须进行额外的管理分配机制。
评分
查看全部评分
不过CAN总线有仲裁机制,也有各种错误标志。没有成功发送出去数据的CAN接点,会产生发送出错标志,需要程序做异常处理。
不过也不能保证,CAN接点已经发送出去数据了,但是别的CAN接点没有收到数据这种情况的发生。因为CAN是会监听自己发送出去的数据的,自己监听到是正确的,但是总线冲突,在其它接点处的CAN电平不正常也是有可能的。
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
是担心实际应用过程中,人为错误造成的同一总线上有相同ID这种情况。
这种情况可以考虑读取总线模块的主控芯片序号来区分不同节点。节点号可以存在Flash或EEPROM中
评分
查看全部评分
评分
查看全部评分
现在就是想通过判断芯片序列号的方式来检查这个错误。
但现在的问题是,如果是两个设备交替发过来信息倒也可以,但现在我这里有时候只能接收到其中的一个发过来的信息。
监控了总线上的信息,两个设备好像都发送过来了,可能是我这里接收处理的问题。
倒是个思路,谢谢。