大家好、
我的系统中有多个 PCB,它们通过 CANBUS 相互连接,每个人都有不同的 ID、
因此、我的问题是、该 PCB 中的一个是主器件、从 CANBUS 读取所有数据、并且必须做出决定
CAN 设置包括:
CANEnable (CANA_base);
*(unsigned long *) ucTXMsgData = 0;
sTXCANMessage.ui32MsgID = 0x0338;
sTXCANMessage.ui32MsgIDMask = 0;
sTXCANMessage.ui32Flags = MSG_OBJ_TX_INT_ENABLE;
sTXCANMessage.ui32MsgLen = sizeof (ucTXMsgData);
sTXCANMessage.pucMsgData = ucTXMsgData;
*(unsigned long *) ucRXMsgData358 = 0;
sRXCANMessage358.ui32MsgID = 0x0358;
sRXCANMessage358.ui32MsgIDMask = 0x0;
sRXCANMessage358.ui32Flags = MSG_OBJ_NO_FLAGS;
sRXCANMessage358.ui32MsgLen = sizeof (ucRXMsgData358);
sRXCANMessage358.pucMsgData = ucRXMsgData358;
*(unsigned long *) ucRXMsgData328 = 0;
sRXCANMessage328.ui32MsgID = 0x0328;
sRXCANMessage328.ui32MsgIDMask = 0;
sRXCANMessage328.ui32Flags = MSG_OBJ_NO_FLAGS;
sRXCANMessage328.ui32MsgLen = sizeof (ucRXMsgData328);
sRXCANMessage328.pucMsgData = ucRXMsgData328;
*(unsigned long *) ucRXMsgData329 = 0;
sRXCANMessage329.ui32MsgID = 0x0329;
sRXCANMessage329.ui32MsgIDMask = 0;
sRXCANMessage329.ui32Flags = MSG_OBJ_NO_FLAGS;
sRXCANMessage329.ui32MsgLen = sizeof (ucRXMsgData329);
sRXCANMessage329.pucMsgData = ucRXMsgData329;
在我的代码中、我每10ms 读取一次仅接收到一个数据、它将一个 ID 变为另一个 ID ...
第一个10ms
CANMessageSet (CANA_base、0x0358、&sRXCANMessage358、MSG_OBJ_TYPE_RX);
CANMessageGet (CANA_base、0x0358、&sRXCANMessage358、true);
mode =ucRXMsgData358[0];
SET_CURRENT_1 =ucRXMsgData358[1]+((ucRXMsgData358[2]&0x00FF)<8);
SET_CURRENT_2 =ucRXMsgData358[3]+(((ucRXMsgData358[4]和0x00FF)<<8);
另一个10ms
CANMessageSet (CANA_base、0x0328、&sRXCANMessage328、MSG_OBJ_TYPE_RX);
CANMessageGet (CANA_base、0x0328、&sRXCANMessage328、TRUE);
TEMP_HEAT_SINK_1 =ucRXMsgData328[0];
temp_Transformer_1 =ucRXMsgData328[1];
primary_curry_1 =ucRXMsgData328[2];
。
。
。
问题是、我是如何在同一周期中读取所有这些内容的?