在实际使用过程中,这种用法基本上是没有的,一条总线上,使用一种速率,高速率的降为低速率的,统一使用低速率的通讯速度。由于CAN中没有主从之分,不同的速率,可能会使其他的设备收到不正常的数据。
但你说的分时修改速率也是可行的,只是所有的总线上的设备最好有一个约定好的协议,防止数据误传。
CAN总线会有识别总线的,总线错误会发错误帧,速率不同的节点识别相互发送的报文都视为错误,会发送大量错误帧在总线上,总线无法稳定工作
不过又不是完全不行 ,加一个CAN中继器,祝你成功。
同一CAN总线上如果有不同速率的节点存在,在数据传输时会有大量的错误帧产生,这些错误帧会影响到正常的通讯。
如果非非要在同一总线上挂接多种速率设备,可以考虑物理连线的切换,比如控制两个单刀双掷信号继电器把不同速率的设备在不同时间接入总线。
不过最好还是同一总线速率相同,可以使用多CAN口的MCU,不同速率的设备使用不同CAN口就可以了。
这个思路很清奇
如果您在设计主机程序,并且您3个外设通讯方式都是召唤方式的话——就是主机先发询问,从机再应答。倒是可行。虽然频率不同的外设会收到错误帧,好在CAN总线这点健壮性还是有的。
不过,CAN总线的特点本就是多主通讯。也就是说,应该允许每个外设随时发起通讯。这样的话,您的主机在分时的方式用不同频率监听时,可能错过信息。
绝对不允许这样做,这种做法会导致CAN总线上面出现严重干扰,一般的CAN设备,累计错误达到255,就会关闭CAN总线的
因为你的CAN上面挂了不止一个设备,就算STM32那里可以正常工作,别的设备也有可能收到干扰而异常