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.

[参考译文] TMD280X375:无法使中断驱动的 CAN 正常工作

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/568674/tmdxdock28075-unableto-get-interrupt-driven-can-to-work

器件型号:TMD2880X75

我已经编写了一个小型程序来接收 CAN 消息、并将其发送到 USB.using 使用 CAN 库的 TMS320F28075开发板。  我遇到的问题是、当处理器收到时  

CAN 报文产生一个状态中断、表示已经接收到报文、但并未将传入报文与报文对象相关联。  现在了解详情:

-系统运行在一个20Mhz 晶振上,对于实际时钟(时间12除以2),乘以120MHz。

CAN 以500kbps 的速率运行。  在示波器上、我可以看到传入的消息和看到消息的确认。

-同时我得到一个中断。  CANIntStatus (CANA_base、CAN_INT_STS_Cause)返回0x8000而不是4 (预期的消息目标索引)

-除索引4之外的所有消息对象都被禁用。

-在中断 CANStatusGet (CANA_base、CAN_STS_CONTROL)上、返回 RxOK 位设置。

-消息对象通过 CANMessageSet (CANA_base、Receive_message_object、&sRXCANMessage、MSG_OBJ_TYPE_RX)进行初始化。  唯一设置的两个标志是接收中断和扩展寻址。

当调用 CANMessageGet 时、它会清除消息长度并保持其他字段不变、因为没有为消息对象设置 NEWDAT。

如果有任何关于下一步内容的建议,将不胜感激

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

    您可以检查 CAN_IPEN_21寄存器以查看哪些消息对象有中断挂起。 您的状态中断会使您无法在中断原因寄存器中看到消息对象编号。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Adam、

     

    感谢您的建议。  

    CAN_IPEN_21寄存器在进入中断时为零、NEWDAT 也是如此。

    就好像 CAN 控制器识别到已经接收到一个格式良好的消息、但是该消息与任何活动的消息对象都不匹配。  当我读取 MSGVAL 寄存器时、返回值8、对应于唯一有效的报文对象4。  报文对象4的 ID 掩码为零、且程序打开的唯一标志为

    MSG_OBJ_RX_INT_ENABLE | MSG_OBJ_EXDED_ID | MSG_OBJ_FIFO

    我已经使用 FIFO 标志和不使用 FIFO 标志来尝试它。

     

     

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

    如果要使用 ID 掩码、还需要设置 MSG_OBJ_USE_ID_FILTER 标志。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Adam、

    我希望接受所有消息(即、不对消息 ID 进行过滤)。 我认为、如果标志为零、这就是将发生的情况。 显然不是。 当我打开带有零掩码的标志时、事情开始工作。

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

    我很高兴您的代码现在可以正常工作。 我同意船旗的名称有点不清楚。 我将向我们的软件团队发送一份报告。