TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F28035做EV DRIVER,汽车过减速带时 CAN数据发生错误

您好,

有个问题需要咨询一下:

     TMS320F28035的芯片,应用在一款物流车上,在DSP发送状态的过程中,用了MBOX0邮箱,依次装3个不同的ID的帧:10ms定时发送ID=0x18FF0FEF 和ID=0x18FF10EF(与ID=0x18FF0FEF的帧间隔了3ms),以及隔100ms定时发送ID=0x18FF1EEF。

跑了有4000余公里都正常。

     异常情况:

     4500公里后,在车辆过减速带时,偶尔会出现一帧错误的帧到达应用层,附件截图中的序号为575516行(红色背景)的帧,数据完全错误,导致VCU做出了错误的危险动作。

     经过我们的数据分析,发现了575516行(红色背景)的帧的数据与前面的ID= ID=0x18FF10EF(黄色背景)的帧数据高度相似。    

     我们目前只能解释为过减速带时干扰过大导致,但客户不认可此说法,认为干扰的帧到不了CAN的应用层。 我们对此也很迷惑,请帮忙解释一下芯片的底层的收发机理,为什么会出现此帧,此帧为什么会到达应用层;以及可能的解决方式。

  附:

    我们的MBOX0的收发函数:

void SEND_MBOX0(U32 ID,U16 w1,U16 w2,U16 w3,U16 w4)

{

       if(ECanaRegs.CANTA.all == 0x0000001 )

       {           

              ECanaRegs.CANTA.all = 0x00000001;

       }

  

       ECanaRegs.CANME.bit.ME0 = 0;

       ECanaMboxes.MBOX0.MSGID.all = 0x80000000 | ID;    

       ECanaRegs.CANME.bit.ME0 = 1;

 

       ECanaMboxes.MBOX0.MDL.byte.BYTE0 = w1 & 0xff;

       ECanaMboxes.MBOX0.MDL.byte.BYTE1 = (w1 >> 8) & 0xff;

       ECanaMboxes.MBOX0.MDL.byte.BYTE2 = w2 & 0xff;

       ECanaMboxes.MBOX0.MDL.byte.BYTE3 = (w2 >> 8) & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE4 = w3 & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE5 = (w3 >> 8) & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE6 = w4 & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE7 = (w4 >> 8) & 0xff;

      

       ECanaRegs.CANTRS.all = 0x00000001;    

                    

}raw_err_data.rar

Young Hu:有可能是程序中出现偶发的变量被修改,还是要保证传输数据的完整性

您好,

有个问题需要咨询一下:

     TMS320F28035的芯片,应用在一款物流车上,在DSP发送状态的过程中,用了MBOX0邮箱,依次装3个不同的ID的帧:10ms定时发送ID=0x18FF0FEF 和ID=0x18FF10EF(与ID=0x18FF0FEF的帧间隔了3ms),以及隔100ms定时发送ID=0x18FF1EEF。

跑了有4000余公里都正常。

     异常情况:

     4500公里后,在车辆过减速带时,偶尔会出现一帧错误的帧到达应用层,附件截图中的序号为575516行(红色背景)的帧,数据完全错误,导致VCU做出了错误的危险动作。

     经过我们的数据分析,发现了575516行(红色背景)的帧的数据与前面的ID= ID=0x18FF10EF(黄色背景)的帧数据高度相似。    

     我们目前只能解释为过减速带时干扰过大导致,但客户不认可此说法,认为干扰的帧到不了CAN的应用层。 我们对此也很迷惑,请帮忙解释一下芯片的底层的收发机理,为什么会出现此帧,此帧为什么会到达应用层;以及可能的解决方式。

  附:

    我们的MBOX0的收发函数:

void SEND_MBOX0(U32 ID,U16 w1,U16 w2,U16 w3,U16 w4)

{

       if(ECanaRegs.CANTA.all == 0x0000001 )

       {           

              ECanaRegs.CANTA.all = 0x00000001;

       }

  

       ECanaRegs.CANME.bit.ME0 = 0;

       ECanaMboxes.MBOX0.MSGID.all = 0x80000000 | ID;    

       ECanaRegs.CANME.bit.ME0 = 1;

 

       ECanaMboxes.MBOX0.MDL.byte.BYTE0 = w1 & 0xff;

       ECanaMboxes.MBOX0.MDL.byte.BYTE1 = (w1 >> 8) & 0xff;

       ECanaMboxes.MBOX0.MDL.byte.BYTE2 = w2 & 0xff;

       ECanaMboxes.MBOX0.MDL.byte.BYTE3 = (w2 >> 8) & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE4 = w3 & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE5 = (w3 >> 8) & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE6 = w4 & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE7 = (w4 >> 8) & 0xff;

      

       ECanaRegs.CANTRS.all = 0x00000001;    

                    

}raw_err_data.rar

Young Hu:有可能是程序中出现偶发的变量被修改,还是要保证传输数据的完整性

您好,

有个问题需要咨询一下:

     TMS320F28035的芯片,应用在一款物流车上,在DSP发送状态的过程中,用了MBOX0邮箱,依次装3个不同的ID的帧:10ms定时发送ID=0x18FF0FEF 和ID=0x18FF10EF(与ID=0x18FF0FEF的帧间隔了3ms),以及隔100ms定时发送ID=0x18FF1EEF。

跑了有4000余公里都正常。

     异常情况:

     4500公里后,在车辆过减速带时,偶尔会出现一帧错误的帧到达应用层,附件截图中的序号为575516行(红色背景)的帧,数据完全错误,导致VCU做出了错误的危险动作。

     经过我们的数据分析,发现了575516行(红色背景)的帧的数据与前面的ID= ID=0x18FF10EF(黄色背景)的帧数据高度相似。    

     我们目前只能解释为过减速带时干扰过大导致,但客户不认可此说法,认为干扰的帧到不了CAN的应用层。 我们对此也很迷惑,请帮忙解释一下芯片的底层的收发机理,为什么会出现此帧,此帧为什么会到达应用层;以及可能的解决方式。

  附:

    我们的MBOX0的收发函数:

void SEND_MBOX0(U32 ID,U16 w1,U16 w2,U16 w3,U16 w4)

{

       if(ECanaRegs.CANTA.all == 0x0000001 )

       {           

              ECanaRegs.CANTA.all = 0x00000001;

       }

  

       ECanaRegs.CANME.bit.ME0 = 0;

       ECanaMboxes.MBOX0.MSGID.all = 0x80000000 | ID;    

       ECanaRegs.CANME.bit.ME0 = 1;

 

       ECanaMboxes.MBOX0.MDL.byte.BYTE0 = w1 & 0xff;

       ECanaMboxes.MBOX0.MDL.byte.BYTE1 = (w1 >> 8) & 0xff;

       ECanaMboxes.MBOX0.MDL.byte.BYTE2 = w2 & 0xff;

       ECanaMboxes.MBOX0.MDL.byte.BYTE3 = (w2 >> 8) & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE4 = w3 & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE5 = (w3 >> 8) & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE6 = w4 & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE7 = (w4 >> 8) & 0xff;

      

       ECanaRegs.CANTRS.all = 0x00000001;    

                    

}raw_err_data.rar

Young Hu:有可能是程序中出现偶发的变量被修改,还是要保证传输数据的完整性

您好,

有个问题需要咨询一下:

     TMS320F28035的芯片,应用在一款物流车上,在DSP发送状态的过程中,用了MBOX0邮箱,依次装3个不同的ID的帧:10ms定时发送ID=0x18FF0FEF 和ID=0x18FF10EF(与ID=0x18FF0FEF的帧间隔了3ms),以及隔100ms定时发送ID=0x18FF1EEF。

跑了有4000余公里都正常。

     异常情况:

     4500公里后,在车辆过减速带时,偶尔会出现一帧错误的帧到达应用层,附件截图中的序号为575516行(红色背景)的帧,数据完全错误,导致VCU做出了错误的危险动作。

     经过我们的数据分析,发现了575516行(红色背景)的帧的数据与前面的ID= ID=0x18FF10EF(黄色背景)的帧数据高度相似。    

     我们目前只能解释为过减速带时干扰过大导致,但客户不认可此说法,认为干扰的帧到不了CAN的应用层。 我们对此也很迷惑,请帮忙解释一下芯片的底层的收发机理,为什么会出现此帧,此帧为什么会到达应用层;以及可能的解决方式。

  附:

    我们的MBOX0的收发函数:

void SEND_MBOX0(U32 ID,U16 w1,U16 w2,U16 w3,U16 w4)

{

       if(ECanaRegs.CANTA.all == 0x0000001 )

       {           

              ECanaRegs.CANTA.all = 0x00000001;

       }

  

       ECanaRegs.CANME.bit.ME0 = 0;

       ECanaMboxes.MBOX0.MSGID.all = 0x80000000 | ID;    

       ECanaRegs.CANME.bit.ME0 = 1;

 

       ECanaMboxes.MBOX0.MDL.byte.BYTE0 = w1 & 0xff;

       ECanaMboxes.MBOX0.MDL.byte.BYTE1 = (w1 >> 8) & 0xff;

       ECanaMboxes.MBOX0.MDL.byte.BYTE2 = w2 & 0xff;

       ECanaMboxes.MBOX0.MDL.byte.BYTE3 = (w2 >> 8) & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE4 = w3 & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE5 = (w3 >> 8) & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE6 = w4 & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE7 = (w4 >> 8) & 0xff;

      

       ECanaRegs.CANTRS.all = 0x00000001;    

                    

}raw_err_data.rar

Young Hu:有可能是程序中出现偶发的变量被修改,还是要保证传输数据的完整性

您好,

有个问题需要咨询一下:

     TMS320F28035的芯片,应用在一款物流车上,在DSP发送状态的过程中,用了MBOX0邮箱,依次装3个不同的ID的帧:10ms定时发送ID=0x18FF0FEF 和ID=0x18FF10EF(与ID=0x18FF0FEF的帧间隔了3ms),以及隔100ms定时发送ID=0x18FF1EEF。

跑了有4000余公里都正常。

     异常情况:

     4500公里后,在车辆过减速带时,偶尔会出现一帧错误的帧到达应用层,附件截图中的序号为575516行(红色背景)的帧,数据完全错误,导致VCU做出了错误的危险动作。

     经过我们的数据分析,发现了575516行(红色背景)的帧的数据与前面的ID= ID=0x18FF10EF(黄色背景)的帧数据高度相似。    

     我们目前只能解释为过减速带时干扰过大导致,但客户不认可此说法,认为干扰的帧到不了CAN的应用层。 我们对此也很迷惑,请帮忙解释一下芯片的底层的收发机理,为什么会出现此帧,此帧为什么会到达应用层;以及可能的解决方式。

  附:

    我们的MBOX0的收发函数:

void SEND_MBOX0(U32 ID,U16 w1,U16 w2,U16 w3,U16 w4)

{

       if(ECanaRegs.CANTA.all == 0x0000001 )

       {           

              ECanaRegs.CANTA.all = 0x00000001;

       }

  

       ECanaRegs.CANME.bit.ME0 = 0;

       ECanaMboxes.MBOX0.MSGID.all = 0x80000000 | ID;    

       ECanaRegs.CANME.bit.ME0 = 1;

 

       ECanaMboxes.MBOX0.MDL.byte.BYTE0 = w1 & 0xff;

       ECanaMboxes.MBOX0.MDL.byte.BYTE1 = (w1 >> 8) & 0xff;

       ECanaMboxes.MBOX0.MDL.byte.BYTE2 = w2 & 0xff;

       ECanaMboxes.MBOX0.MDL.byte.BYTE3 = (w2 >> 8) & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE4 = w3 & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE5 = (w3 >> 8) & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE6 = w4 & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE7 = (w4 >> 8) & 0xff;

      

       ECanaRegs.CANTRS.all = 0x00000001;    

                    

}raw_err_data.rar

Young Hu:有可能是程序中出现偶发的变量被修改,还是要保证传输数据的完整性

您好,

有个问题需要咨询一下:

     TMS320F28035的芯片,应用在一款物流车上,在DSP发送状态的过程中,用了MBOX0邮箱,依次装3个不同的ID的帧:10ms定时发送ID=0x18FF0FEF 和ID=0x18FF10EF(与ID=0x18FF0FEF的帧间隔了3ms),以及隔100ms定时发送ID=0x18FF1EEF。

跑了有4000余公里都正常。

     异常情况:

     4500公里后,在车辆过减速带时,偶尔会出现一帧错误的帧到达应用层,附件截图中的序号为575516行(红色背景)的帧,数据完全错误,导致VCU做出了错误的危险动作。

     经过我们的数据分析,发现了575516行(红色背景)的帧的数据与前面的ID= ID=0x18FF10EF(黄色背景)的帧数据高度相似。    

     我们目前只能解释为过减速带时干扰过大导致,但客户不认可此说法,认为干扰的帧到不了CAN的应用层。 我们对此也很迷惑,请帮忙解释一下芯片的底层的收发机理,为什么会出现此帧,此帧为什么会到达应用层;以及可能的解决方式。

  附:

    我们的MBOX0的收发函数:

void SEND_MBOX0(U32 ID,U16 w1,U16 w2,U16 w3,U16 w4)

{

       if(ECanaRegs.CANTA.all == 0x0000001 )

       {           

              ECanaRegs.CANTA.all = 0x00000001;

       }

  

       ECanaRegs.CANME.bit.ME0 = 0;

       ECanaMboxes.MBOX0.MSGID.all = 0x80000000 | ID;    

       ECanaRegs.CANME.bit.ME0 = 1;

 

       ECanaMboxes.MBOX0.MDL.byte.BYTE0 = w1 & 0xff;

       ECanaMboxes.MBOX0.MDL.byte.BYTE1 = (w1 >> 8) & 0xff;

       ECanaMboxes.MBOX0.MDL.byte.BYTE2 = w2 & 0xff;

       ECanaMboxes.MBOX0.MDL.byte.BYTE3 = (w2 >> 8) & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE4 = w3 & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE5 = (w3 >> 8) & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE6 = w4 & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE7 = (w4 >> 8) & 0xff;

      

       ECanaRegs.CANTRS.all = 0x00000001;    

                    

}raw_err_data.rar

user4634058:

回复 Young Hu:

请解释得更详细一点么?  

您好,

有个问题需要咨询一下:

     TMS320F28035的芯片,应用在一款物流车上,在DSP发送状态的过程中,用了MBOX0邮箱,依次装3个不同的ID的帧:10ms定时发送ID=0x18FF0FEF 和ID=0x18FF10EF(与ID=0x18FF0FEF的帧间隔了3ms),以及隔100ms定时发送ID=0x18FF1EEF。

跑了有4000余公里都正常。

     异常情况:

     4500公里后,在车辆过减速带时,偶尔会出现一帧错误的帧到达应用层,附件截图中的序号为575516行(红色背景)的帧,数据完全错误,导致VCU做出了错误的危险动作。

     经过我们的数据分析,发现了575516行(红色背景)的帧的数据与前面的ID= ID=0x18FF10EF(黄色背景)的帧数据高度相似。    

     我们目前只能解释为过减速带时干扰过大导致,但客户不认可此说法,认为干扰的帧到不了CAN的应用层。 我们对此也很迷惑,请帮忙解释一下芯片的底层的收发机理,为什么会出现此帧,此帧为什么会到达应用层;以及可能的解决方式。

  附:

    我们的MBOX0的收发函数:

void SEND_MBOX0(U32 ID,U16 w1,U16 w2,U16 w3,U16 w4)

{

       if(ECanaRegs.CANTA.all == 0x0000001 )

       {           

              ECanaRegs.CANTA.all = 0x00000001;

       }

  

       ECanaRegs.CANME.bit.ME0 = 0;

       ECanaMboxes.MBOX0.MSGID.all = 0x80000000 | ID;    

       ECanaRegs.CANME.bit.ME0 = 1;

 

       ECanaMboxes.MBOX0.MDL.byte.BYTE0 = w1 & 0xff;

       ECanaMboxes.MBOX0.MDL.byte.BYTE1 = (w1 >> 8) & 0xff;

       ECanaMboxes.MBOX0.MDL.byte.BYTE2 = w2 & 0xff;

       ECanaMboxes.MBOX0.MDL.byte.BYTE3 = (w2 >> 8) & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE4 = w3 & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE5 = (w3 >> 8) & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE6 = w4 & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE7 = (w4 >> 8) & 0xff;

      

       ECanaRegs.CANTRS.all = 0x00000001;    

                    

}raw_err_data.rar

user4634058:

回复 Young Hu:

因为从应用层传递到ecan的驱动层(can协议实现层),用的是自定义的函数调用: void SEND_MBOX0(U32 ID,U16 w1,U16 w2,U16 w3,U16 w4),应不存在数据完整性的问题; 现在没高明白的是,为什么会在外部干扰的情况下,ecan的驱动层怎么会把数据发错(从采集的数据来看,是刚装了新的ID号(问题中的0x18FF1EEF),但数据 是还没装(保持了旧的上一次传输的数据,即 ID=0x18FF10EF的数据),ecan即把数据发送出去了—– 即如果是信号完整性问题,出现的地方应是在ecan的驱动层。
我想弄明白的问题是:1)ecan的驱动层发生这个的原因 ; 2)作为应用层,怎么做使得出现的概率变小; 3)万一发生了,应用层怎么检测。

您好,

有个问题需要咨询一下:

     TMS320F28035的芯片,应用在一款物流车上,在DSP发送状态的过程中,用了MBOX0邮箱,依次装3个不同的ID的帧:10ms定时发送ID=0x18FF0FEF 和ID=0x18FF10EF(与ID=0x18FF0FEF的帧间隔了3ms),以及隔100ms定时发送ID=0x18FF1EEF。

跑了有4000余公里都正常。

     异常情况:

     4500公里后,在车辆过减速带时,偶尔会出现一帧错误的帧到达应用层,附件截图中的序号为575516行(红色背景)的帧,数据完全错误,导致VCU做出了错误的危险动作。

     经过我们的数据分析,发现了575516行(红色背景)的帧的数据与前面的ID= ID=0x18FF10EF(黄色背景)的帧数据高度相似。    

     我们目前只能解释为过减速带时干扰过大导致,但客户不认可此说法,认为干扰的帧到不了CAN的应用层。 我们对此也很迷惑,请帮忙解释一下芯片的底层的收发机理,为什么会出现此帧,此帧为什么会到达应用层;以及可能的解决方式。

  附:

    我们的MBOX0的收发函数:

void SEND_MBOX0(U32 ID,U16 w1,U16 w2,U16 w3,U16 w4)

{

       if(ECanaRegs.CANTA.all == 0x0000001 )

       {           

              ECanaRegs.CANTA.all = 0x00000001;

       }

  

       ECanaRegs.CANME.bit.ME0 = 0;

       ECanaMboxes.MBOX0.MSGID.all = 0x80000000 | ID;    

       ECanaRegs.CANME.bit.ME0 = 1;

 

       ECanaMboxes.MBOX0.MDL.byte.BYTE0 = w1 & 0xff;

       ECanaMboxes.MBOX0.MDL.byte.BYTE1 = (w1 >> 8) & 0xff;

       ECanaMboxes.MBOX0.MDL.byte.BYTE2 = w2 & 0xff;

       ECanaMboxes.MBOX0.MDL.byte.BYTE3 = (w2 >> 8) & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE4 = w3 & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE5 = (w3 >> 8) & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE6 = w4 & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE7 = (w4 >> 8) & 0xff;

      

       ECanaRegs.CANTRS.all = 0x00000001;    

                    

}raw_err_data.rar

Young Hu:

回复 user4634058:

所以有可能是把ID写入了,然后来了中断把函数执行打断。我觉得(1)增加数据帧校验功能;(2)在执行关键数据操作的时候,将全局中断disable

您好,

有个问题需要咨询一下:

     TMS320F28035的芯片,应用在一款物流车上,在DSP发送状态的过程中,用了MBOX0邮箱,依次装3个不同的ID的帧:10ms定时发送ID=0x18FF0FEF 和ID=0x18FF10EF(与ID=0x18FF0FEF的帧间隔了3ms),以及隔100ms定时发送ID=0x18FF1EEF。

跑了有4000余公里都正常。

     异常情况:

     4500公里后,在车辆过减速带时,偶尔会出现一帧错误的帧到达应用层,附件截图中的序号为575516行(红色背景)的帧,数据完全错误,导致VCU做出了错误的危险动作。

     经过我们的数据分析,发现了575516行(红色背景)的帧的数据与前面的ID= ID=0x18FF10EF(黄色背景)的帧数据高度相似。    

     我们目前只能解释为过减速带时干扰过大导致,但客户不认可此说法,认为干扰的帧到不了CAN的应用层。 我们对此也很迷惑,请帮忙解释一下芯片的底层的收发机理,为什么会出现此帧,此帧为什么会到达应用层;以及可能的解决方式。

  附:

    我们的MBOX0的收发函数:

void SEND_MBOX0(U32 ID,U16 w1,U16 w2,U16 w3,U16 w4)

{

       if(ECanaRegs.CANTA.all == 0x0000001 )

       {           

              ECanaRegs.CANTA.all = 0x00000001;

       }

  

       ECanaRegs.CANME.bit.ME0 = 0;

       ECanaMboxes.MBOX0.MSGID.all = 0x80000000 | ID;    

       ECanaRegs.CANME.bit.ME0 = 1;

 

       ECanaMboxes.MBOX0.MDL.byte.BYTE0 = w1 & 0xff;

       ECanaMboxes.MBOX0.MDL.byte.BYTE1 = (w1 >> 8) & 0xff;

       ECanaMboxes.MBOX0.MDL.byte.BYTE2 = w2 & 0xff;

       ECanaMboxes.MBOX0.MDL.byte.BYTE3 = (w2 >> 8) & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE4 = w3 & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE5 = (w3 >> 8) & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE6 = w4 & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE7 = (w4 >> 8) & 0xff;

      

       ECanaRegs.CANTRS.all = 0x00000001;    

                    

}raw_err_data.rar

user4634058:

回复 Young Hu:

你的意思是说: 在调用SEND_MBOX0函数前要关中断,调用完再恢复?

您好,

有个问题需要咨询一下:

     TMS320F28035的芯片,应用在一款物流车上,在DSP发送状态的过程中,用了MBOX0邮箱,依次装3个不同的ID的帧:10ms定时发送ID=0x18FF0FEF 和ID=0x18FF10EF(与ID=0x18FF0FEF的帧间隔了3ms),以及隔100ms定时发送ID=0x18FF1EEF。

跑了有4000余公里都正常。

     异常情况:

     4500公里后,在车辆过减速带时,偶尔会出现一帧错误的帧到达应用层,附件截图中的序号为575516行(红色背景)的帧,数据完全错误,导致VCU做出了错误的危险动作。

     经过我们的数据分析,发现了575516行(红色背景)的帧的数据与前面的ID= ID=0x18FF10EF(黄色背景)的帧数据高度相似。    

     我们目前只能解释为过减速带时干扰过大导致,但客户不认可此说法,认为干扰的帧到不了CAN的应用层。 我们对此也很迷惑,请帮忙解释一下芯片的底层的收发机理,为什么会出现此帧,此帧为什么会到达应用层;以及可能的解决方式。

  附:

    我们的MBOX0的收发函数:

void SEND_MBOX0(U32 ID,U16 w1,U16 w2,U16 w3,U16 w4)

{

       if(ECanaRegs.CANTA.all == 0x0000001 )

       {           

              ECanaRegs.CANTA.all = 0x00000001;

       }

  

       ECanaRegs.CANME.bit.ME0 = 0;

       ECanaMboxes.MBOX0.MSGID.all = 0x80000000 | ID;    

       ECanaRegs.CANME.bit.ME0 = 1;

 

       ECanaMboxes.MBOX0.MDL.byte.BYTE0 = w1 & 0xff;

       ECanaMboxes.MBOX0.MDL.byte.BYTE1 = (w1 >> 8) & 0xff;

       ECanaMboxes.MBOX0.MDL.byte.BYTE2 = w2 & 0xff;

       ECanaMboxes.MBOX0.MDL.byte.BYTE3 = (w2 >> 8) & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE4 = w3 & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE5 = (w3 >> 8) & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE6 = w4 & 0xff;

       ECanaMboxes.MBOX0.MDH.byte.BYTE7 = (w4 >> 8) & 0xff;

      

       ECanaRegs.CANTRS.all = 0x00000001;    

                    

}raw_err_data.rar

user4634058:

回复 user4634058:

其它地方碰到过类似现象没有?有无其它方法解决的经验?

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28035做EV DRIVER,汽车过减速带时 CAN数据发生错误
分享到: 更多 (0)