This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/F28M35M52C:M3 CAN 远程帧调试问题

Guru**** 1807890 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/651448/ccs-f28m35m52c-m3-can-remote-frame-debugging-problem

器件型号:F28M35M52C

工具/软件:Code Composer Studio

这是:ID / MASK / FLAG / DLC / buffer array 下面使用的结构的初始值

#define ACUReqMsg1_Default{0x1、0、MSG_OBJ_RX_INT_ENABLE、8、ACUReqID1.Msg_Data_Buffer}
#define ACUReqMsg2_Default{0x2、0、MSG_OBJ_RX_INT_ENABLE、8、ACUReqID2.Msg_Data_Buffer}
#define ACUReqMsg3_Default{0x3、0、MSG_OBJ_RX_INT_ENABLE、8、ACUReqID3.Msg_Data_Buffer}
#define ACUReqMsg4_Default{0x4、0、MSG_OBJ_RX_INT_ENABLE、8、ACUReqID4.Msg_Data_Buffer}
#define ACUReqMsg5_Default{0x5、0、MSG_OBJ_RX_INT_ENABLE、8、ACUReqID5.Msg_Data_Buffer}
#define ACUReqMsg6_Default{0x6、0、MSG_OBJ_RX_INT_ENABLE、8、ACUReqID6.Msg_Data_Buffer}

#define ACUPubMsg1_Default{0x7、0、MSG_OBJ_NO_FLAGS、8、ACUPubID7.Msg_Data_Buffer}
#define ACUPubMsg2_Default{0x8、0、MSG_OBJ_NO_FLAGS、8、ACUPubID8.Msg_Data_Buffer}
#define ACUPubMsg3_Default{0x9、0、MSG_OBJ_NO_FLAGS、8、ACUPubID9.Msg_Data_Buffer}
#define ACUPubMsg4_Default{0xA、0、MSG_OBJ_NO_FLAGS、8、ACUPubIDA.Msg_Data_Buffer}

 

函数配置、邮箱7/8/9/10设置远程帧自动应答:

空 配置 CAN_CR250 (空)

   SysCtlPeripheralEnable (SYSCTL_Periph_GPIOE);// GPIOE 上的 CAN0
   GPIOPinConfigure (GPIO_PE6_CAN0RX);//CANRXA
   GPIOPinConfigure (GPIO_PE7_CAN0TX);//CANTXA
   GPIOPinTypeCAN (GPIO_Porte _BASE、GPIO_PIN_6 | GPIO_PIN_7);
   SysCtlPeripheralEnable (SYSCTL_Periph_CAN0);
   CANInit (CAN0_BASE);

//正常操作模式,初始化,软件复位,复位所有报文对象,清除中断挂起位
   CANClkSourceSelect (CAN0_BASE、CAN_CLK_M3);//使用 M3系统时钟
   CANBitRateSet (CAN0_BASE、SysCtlClockGet (system_clock_speed)、50000);
   //控制消息
   CANMessageSet (CAN0_BASE、1、&ACUReqMsg1_CR250、MSG_OBJ_TYPE_RX);
   CANMessageSet (CAN0_BASE、2、&ACUReqMsg2_CR250、MSG_OBJ_TYPE_RX);
   CANMessageSet (CAN0_BASE、3、&ACUReqMsg3_CR250、MSG_OBJ_TYPE_RX);
   CANMessageSet (CAN0_BASE、4、&ACUReqMsg4_CR250、MSG_OBJ_TYPE_RX);
   CANMessageSet (CAN0_BASE、5、&ACUReqMsg5_CR250、MSG_OBJ_TYPE_RX);
   CANMessageSet (CAN0_BASE、6、&ACUReqMsg6_CR250、MSG_OBJ_TYPE_RX);
   //状态消息
   CANMessageSet (CAN0_BASE、7、&AUPubMsg1_CR250、MSG_OBJ_TYPE_RxTxREMOTE);
   CANMessageSet (CAN0_BASE、8、&AUPubMsg2_CR250、MSG_OBJ_TYPE_RxTxREMOTE);
   CANMessageSet (CAN0_BASE、9、&AUPubMsg3_CR250、MSG_OBJ_TYPE_RxTxREMOTE);
   CANMessageSet (CAN0_BASE、10、&AUPubMsg4_CR250、MSG_OBJ_TYPE_RxTxREMOTE);

 

CANIntEnable (CAN0_BASE、CAN_INT_MASTER | CAN_INT_ERROR | CAN_INT_STATUS);
   //在中断线路 CANOINT/CAN1INT 上启用错误和状态中断以及中断    

IntRegister (INT_CAN0INT0、CANIntHandler0);//设置 NVIC 上的中断处理程序
   IntEnable (INT_CAN0INT0);//使能可在 NVIC 上中断

CANEnable (CAN0_BASE);//未初始化以启用 CAN

 

3、测试数据如下:发送0xA 远程帧后、返回的数据帧为0x8


黄色表示发送

绿色表示接收


  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Emma:

    感谢您的提问。 此主题已分配给 C2000专家、应尽快回复。

    此致、
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Emma

    是否可以提供其他详细信息? 它始终如一地做到了这一点? 仅0xA ID? 大于0xA?
    RxTx 遥控器启用消息 ID 上的 UMASK 过滤器。 可能希望尝试显式筛选要返回的 ID。
    也可以尝试使用 RxTx 遥控器上的方向滤波器- MSG_OBJ_USE_DIR_FILTER。

    此致
    Chris