请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:TMS320F2.8377万S 工具/软件:Code Composer Studio
大家好。
我们目前正在使用2.8377万S构建一个系统。
由于CAN通信,2.8335万和2.8377万S的区别很大。
2.8377万S在CAN通信的情况下,如果同时传输多个ID,则稍后传输的ID可能变为忽略。
要解决此问题,请使用delay_us ()来延迟代码,如下所示。
使用延迟是可以的,但它似乎在系统上不稳定,所以我正在寻找另一种方法。
我想接收CAN通信当前状态的状态值,并等待传输,然后传输下一个ID。 您还有其他命令吗?
我们正在创建和使用ECanaMbox,以便与2.8335万系统类似使用。
感谢您的回复。
Void Cana_Transmit_Func (void) { 无符号字符I =0; 对于(i=0;i<=32;i++) { IF (ECanaRegs.CANTRS[I].bit.TRS == 1) { ECanaRegs.CANTRS[I].bit.TRS = 0; Cana_sTXCANMessage.ui32MsgID = ECanaMboxes.MBOX[I].MSGID.ALL; Cana_sTXCANMessage.ui32MsgIDMask = 0; Cana_sTXCANMessage.ui32Flags = 0; Cana_sTXCANMessage.ui32MsgLen = 8; Cana_txMsgData[0]= ECanaMboxes.MBOX[I].MDL.byte.BYTE0; Cana_txMsgData[1]= ECanaMboxes.MBOX[I].MDL.byte.BYTE1; Cana_txMsgData[2]= ECanaMboxes.MBOX[I].MDL.byte.BYTE2; Cana_txMsgData[3]= ECanaMboxes.MBOX[I].MDL.byte.BYTE3; Cana_txMsgData[4]= ECanaMboxes.MBOX [I].MDH.byte.BYTE4; Cana_txMsgData[5]= ECanaMboxes.MBOX[I].MDH.byte.BYTE5; Cana_txMsgData[6]= ECanaMboxes.MBOX [I].MDH.byte.BYTE6; Cana_txMsgData[7]= ECanaMboxes.MBOX[I].MDH.byte.BYTE7; Cana_sTXCANMessage.pucMsgData = Cana_txMsgData; CANMessageSet (Cana_base,TX_MSG_OBJ_ID,&Cana_sTXCANMessage,MSG_OBJ_TYPE_TX); Cana_status = CANIntStatus (Cana_base,CAN_INT_STS_Cause); DELAY _US(300); } } }