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.

[参考译文] TM4C129ENCPDT:TIRTOS 下有哪些可用的欠压设置

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1400247/tm4c129encpdt-what-are-available-brown-out-settings-under-tirtos

器件型号:TM4C129ENCPDT

工具与软件:

TM4C129ENCPDT TIRTOS 文件夹中的 sysctl.h 文件具有声明的函数"SysCtlBrownOutConfigSet"、但是没有针对这个函数的原型、数据表似乎表明这个功能是不可能的。

 SysCtlBrownOutConfigSet 甚至可以与 TM4C129ENCPDT 相关吗?

如果是、在哪里可以找到函数定义和使用示例。

如果没有、是否有一个示例说明我可以如何更改欠压、以便它为我提供中断而不是将处理器复位、最好是 TI-RTOS 下具有典型中断功能的示例、以便我可以看到它是如何处理 BOR 的。

我的项目是使用 tirtos_tivac_2_16_01_14构建的、我想了解一些可以轻松停止欠压触发的选项以及可以将我的 PCB 复位以实现电源电压瞬间降至2.9V 的选项。

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

    巴里、您好!

     我做了一些调查。 不再有  SysCtlBrownOutConfigSet API。  错误之处在于 sysctl.h 头文件中。  SysCtlBrownOutConfigSet 是一个 API、为早期的 MCU (LM3S)配置欠压电路。  

     唯一与 TM4C MCU 欠压相关的寄存器是 PTBOCTL 寄存器、在该寄存器中、您唯一可以更改的是检测到欠压时的事件操作类型(例如 NMI、复位或中断)。 数据表的"电气规格"中记录了检测欠压的阈值电压。 阈值电压不可编程。  

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

    谢谢

    这证实了我所认为的情况。

    您能告诉我、有关我如何启用 BOR 中断并在 TIRTOS 下处理它的示例吗?

    这是我认为需要的

    // ----------------------------------------------------------------------------------------
    // TM4C129ENCPDT has BOR (Brown Out Reset) and POR (Power On Reset)
    // BOR triggers at 2.86V (2.77 - 2.95), POR triggers at 2.20V (1.84 - 2.56),
    // It is possible to have BOR just generate an interrupt and not a reset.
    // By default BOR will generate a Reset of the CPU.
    // It is not possible to change POR operation, it will always reset the CPU.
    // SysCtlBrownOutConfigSet does not exist for TM4C129ENCPTD -
    // It is for older family of processors.
    //
    // Enable Interrupt for brown out
    SysCtlVoltageEventConfig(SYSCTL_VEVENT_VDDABO_NONE | SYSCTL_VEVENT_VDDBO_INT);
    SysCtlIntRegister(sysCtlInterruptFn);
    // ----------------------------------------------------------------------------------------
    

    我创建了这个函数、只是弄清楚如何确定中断源

    /////////////////////////////////////////////////////////////////////////////
    /// System Control Interrupt handler.
    /// \brief handler for system interrupt.
    /// \return None.
    void sysCtlInterruptFn(void)
    {
    //
    }

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="90348" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1400247/tm4c129encpdt-what-are-available-brown-out-settings-under-tirtos/5361229 #5361229"]

    您能告诉我、有关我如何启用 BOR 中断并在 TIRTOS 下处理它的示例吗?

    [报价]

    您好!

     本身没有 BOR 事件的示例。 您需要创建一个 Hwi 并让 TI-RTOS 来处理中断 、而不是使用 SysCtlIntRegister。 当您使用 SysCtlIntRegister (sysCtlInterruptFn)时、这将破坏由 TI-TRTOS 管理的中断表。 请参阅这篇文章 https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/849627/faq-can-i-update-the-vector-table-with-intregister-when-using-ti-rtos?tisearch=e2e-sitesearch&keymatch=ti-rtos%20vector%20table#

     如果您查看中断向量表、会发现系统控制被映射到向量编号44。  

    您可以使用以下示例为矢量44创建 Hwi。  

    Hwi_Params hwiParams;
    Hwi_Handle myHwi;
    Error_Block eb;
    /* Initialize error block and hwiParams to default values */
    Error_init(&eb);
    Hwi_Params_init(&hwiParams);
    hwiParams.enableInt = FALSE;
    myHwi = Hwi_create(44, (Hwi_FuncPtr)sysCtlInterruptFn, &hwiParams, &eb);
    if (myHwi == NULL) {
    System_abort("Hwi create failed");
    }
    Hwi_enableInterrupt(44);

    有缺口…

    void sysCtlInterruptFn(void)
    {
    uint32_t ui32VoltageEvents;
    //
    // Read the current voltage event status.
    //
    ui32VoltageEvents = SysCtlVoltageEventStatus();
    //
    // Clear all the current voltage events.
    //
    SysCtlVoltageEventClear(ui32VoltageEvents);

    //

    // Add your user code on how to handle BOR event

    }

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

    感谢您的澄清。