现需要通过CAN总线(扩展帧)实现如下功能:(主控设备为stm32(移植UAVCAN);8个从设备MCU为28069。)
一个主控设备通过CAN总线发送给8个从设备,8个从设备同时接收主控设备数据的8个字节数据,每个从设备在根据提前定义好的数据格式,从8个字节中选择使用属于自己的有效数据。这样可以保证八个从设备接收数据的实时性(同时性),即可以保证8个从设备同时接收到属于同一帧的数据。
主控设备中使用的是一种自定义的CAN(UAVCAN),他对标准CAN的消息标志寄存器做如下自定义:
当需要实现主控设备发送数据时,多个从设备同时接收时(一点对多点且同时接收,各自数据在八个字节中自己查找),UAVCAN中将该种定义为广播模式,
要求主控设备和8个从设备具有唯一的source node id。例如:当主控设备的ID为 05040701时,8个从设备的1号设备需要将
ECanaMboxes.MBOX15.MSGID.all = 0x85040701;//扩展帧模式
这样单一点对点(主控设备与从设备的1号)是完全可以实现的。
但若要实现UAVCAN广播模式的发送(一点(主控设备)对多点(从设备)且同时接收,各自数据在八个字节中自己查找),
要求8个从设备具有不同的node id(消息标志寄存器的bit0-6位),主控设备有唯一的ID为 05040701。
这样DSP-28069扩展帧下的标识符id(28:0)就是完全与主控设备不同,
这样在28069中该如何实现这样的CAN数据接收?
希望得到TI工程师的回复~
谢谢~