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.

[参考译文] TMS320F28377D:CAN 新数据标志

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1058955/tms320f28377d-can-new-data-flag

器件型号:TMS320F28377D
主题中讨论的其他器件:C2000WARE

您好!

我正在尝试使用 CAN_getNewDataFlags 函数调用。 尽管我正在成功发送和接收、但它始终返回0。 我怀疑我可能错过了设置中的某些内容、但似乎找不到任何信息。 我有 CCS 11.0和 C2000Ware_4_00

       感谢您的帮助、

         Dave

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

    Dave、

      这是用于发送对象还是用于接收对象? 您能否提供代码片段? (不是整个代码;只是使用函数的代码片段)

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

    Hareesh、

    我读取整个寄存器、当我在调试器的"Expressions"窗口中显示其内容时、它始终为0。 邮箱(对象) 1-16为发送(wrt 28377D)、17-32为接收。 我包含了接收器件、这正是我真正感兴趣的部分。 我可以通过 CAN 发送数据、数据到达并被放入相应的变量中、但永远不会看到 CAN_NewD_Flg 始终处于设置状态。

           感谢您的帮助、

                            Dave

    空   CANA_RX (空)

       CAN_getNewDataFlags (CAN_NewD_Flg);
       如果(CAN_NewD_Flg && 0xFFFFFF0000) missing_cnt = 0;//如果 MB 17-32有新数据、则清除错过的计数
       否则为 missed_cnt ++;//如果没有新数据,则增加错过的计数
       CAN_readMessage (CANA_base、17、rxMsgData); /MB 17
       MODE_REQ = rxMsgData[0]; //模式请求是 LS 字节
       RESET_R =  rxMsgData[1];  //复位请求为 LS+1字节
       CAN_readMessage (CANA_base、18、rxMsgData);  //MB 18被忽略
       CAN_readMessage (CANA_base、19、rxMsgData); //MB 19
       MB_HIGH_TO_FLOAT32 (rxMsgData、HV_SET);
       MB_LOW_TO_float32 (rxMsgData、LV_set);
       CAN_readMessage (CANA_base、20、rxMsgData); //MB 20
       MB_HIGH_TO_FLOAT32 (rxMsgData、HV_I_SET);
       CAN_readMessage (CANA_base、21、rxMsgData); //MB 21
       MB_HIGH_TO_FLOAT32 (rxMsgData、LV_I_set);

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

    Dave、

      我已要求 S/W 团队的人员对此进行研究。 应该是星期一或星期二、然后您才能收到回复。  

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

    您好、Dave、  

    该函数已定义如下:(定义可在 driverlib 中的 can.h 文件中找到)

    Fullscreen
    1
    2
    static inline uint32_t
    CAN_getNewDataFlags(uint32_t base)
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    因此、要成功读取标志、代码应如所示

    Fullscreen
    1
    CAN_NewD_Flg = CAN_getNewDataFlags(CANA_base);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    希望这会有所帮助。

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

    谢谢萨希尔,我应该知道这一点,感觉有点尴尬。 来解决它。

              感谢您的耐心、

                          Dave