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.

[参考译文] RTOS/TMS320F28377S:SYSBIOS HWI 和 CAN 中断

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/648721/rtos-tms320f28377s-sysbios-hwi-and-can-interrupts

器件型号:TMS320F28377S
Thread 中讨论的其他器件:SYSBIOS

工具/软件:TI-RTOS

我使用中断来接收 CAN 消息。 如果我不使用 SYS/BIOS、CAN 中断工作正常。 如果我使用 SYS/BIOS、我只接收一个中断来处理传入的消息。 然后该控件转到 Hwi_unPluggedInterrupt()。

看起来我缺少一些配置。 我阅读了 TI-RTOS 文档、其中讨论了如何创建 HWI、SWI 和闪烁 LED。 但是、它不讨论 HWI 和 CAN 中断。  

(例如:CAN_enableInterrupt (CANA_base、CAN_INT_IE0 | CAN_INT_ERROR | CAN_INT_STATUS)、 CAN_enableGlobalInterrupt (CANA_base、CAN_GLOBAL_INT_CANINT0);)

如果我获得了任何有关如何将 SYS/BIOS 和 driverlib 与中断一起使用的参考文档、那将会很好。

谢谢

AJ

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

    很抱歉耽误你的时间。 休假期间处理论坛主题的移交工作进展不顺利。

    这仍然是个问题吗?

    您将需要使用 Hwi 模块来插入 CAN 中断、而不是 driverlib 调用。

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

    您好 Todd、

    没问题。  

    是的、我仍然有这个问题。

    我有一个 CAN HWI 中断 hwiCANA0()来接收所有传入的 CAN 消息(中断号100)。 够了吗?

    如何将 CAN_INT_IE0、CAN_INT_ERROR 和 CAN_INT_STATUS 添加到上述 Hwi 中断调用中?

    谢谢

    AJ

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否正在使用 Interrupt_register? 如果是、则需要改用 Hwi_create。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、我已经在使用 Hwi.create。
    但是、我需要针对 driverlib 和 SYS/BIOS 的清晰集成详细信息。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    哪个中断表示它已拔出?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我无法单步执行 Hwi_unPluggedInterrupt()。 intNum 显示为1024。
    我不知道这是多少。 调试控制只在"{"处停止。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在第一个中断触发之前、但在创建之后、您能否查看 Tools->ROV->Hwi 以查看中断的状态。 还要确保系统堆栈足够大(在 Hwi->Module 视图下)。 在 CAN 中断触发后、您能否检查中断和堆栈的状态?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我检查了中断和堆栈状态。 以下是我的调查结果、

    触发中断后、IRP 从0x0更改为0x89e86
    堆栈峰值变为102、堆栈大小为256。
    if (status =CAN_INT_INT0ID_STATUS)

    //
    //读取控制器状态。
    //
    状态= CAN_getStatus (CANA_base);

    //
    //检查是否发生错误。
    //
    if (((status &~(CAN_STATUS_RXOK))!= CAN_STATUS_LEC_MSK)&&
    ((STATUS &μ~(CAN_STATUS_RXOK))!= CAN_STATUS_LEC_NONE))

    //
    //设置一个标志来指示可能发生的某些错误。
    //
    errorFlag = 1;



    上述代码已执行、在关闭"}"结束时、控制转到
    派单$:

    ;保存 xar4
    movl * sp++、xar4

    ; Hwi_depatchCore (intNum)
    MOvl ACC、xar5
    LCR #_ti_SysBIOS_family_c28_Hwi_dis派 单 Core__I

    ;恢复 xar4.
    mvl xar4、*- sp

    并执行该派单。

    之后、控制器不会移动到任何位置。

    -AJ
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉耽误你的时间。 这是否得到了解决?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    目前、我们计划使用非 BIOS 版本、它正在工作。