请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS570LC4357 大家好、
我正在寻找一种可能的方法来检查在通信期间是否有 CAN.message 丢失。 为了测试这种情况、
我发送4条具有相同消息 ID 的消息、并且我只配置一个与四个 TX-messagebox 具有相同消息 ID 的 MessageBox。
我配置了消息框、如下所示:
-messagebox[1-4]是具有相同 messageID 1的 Tx-messagebox
-messagebox[33-36]是包含相应 messageID 1 - 4的 rx-messagebox
我观察 到 IF2MCTL 寄存器中的 MsgLst 位来检查是否发生了任何变化。 但没有任何变化。 它始终保持为0。
有人知道、我如何才能发现丢失的消息。
低于我的代码
字符数据[8]="Hello";
char Data2[8]="世界!";
uint8 msgid = 1、a = 0;
uint8数据阵列[4][8];
uint32 i;
canInit();
canEnabableeloopback (canREG1、Internal_LBK);
memcpy (&DataArray[0]、Data、8);
memcpy (&DataArray[1][0]、Data2、8);
memcpy (&DataArray[2][0]、Data、8);
memcpy (&DataArray[3][0]、Data2、8);
对于(i = 1;i<= 4;i++){
canUpdateID (canREG1、I、0x40000000U | 0x20000000U |(msgid & 0x1FFFFFFFU));
ResultOfTransmission = canTransmit (canREG1、I、DataArray[I-1]);
canUpdateID (canREG1、I + 32、0x40000000U |(I & 0x1FFFFFFFU));
}
while (1){
静态 uint32 j = 33;
uint8 i;
uint32 ValueOfMsgLst=0、ValueOfNewdata=0;
printf("****圆 nr %d***** ",j);
ValueOfMsgLst=(uint32)(canREG1->IF2MCTL &(1 << 14));
ValueOfNewdata =(uint32)(canREG1->IF2MCTL &(1 << 15));
如果(A < 4){
ResultOfTransmission = canGetData (canREG1、j、&data[a][0]);
}
A++;
}