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.
您好!
我正在尝试使用 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 文件中找到)
static inline uint32_t CAN_getNewDataFlags(uint32_t base)
因此、要成功读取标志、代码应如所示
CAN_NewD_Flg = CAN_getNewDataFlags(CANA_base);
希望这会有所帮助。
谢谢萨希尔,我应该知道这一点,感觉有点尴尬。 来解决它。
感谢您的耐心、
Dave