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.

[参考译文] F29H850TU:寄存器软件复位

Guru**** 2406250 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1544802/f29h850tu-register-software-reset

器件型号:F29H850TU


工具/软件:

您好 TI 专家、

请向我提供一些关于 sysctl_resetPeripheral() 的说明:

  1. 该外设的所有寄存器位是否会独立于其复位类型(例如 SYSRSn、XRSn、PORESETn)进行复位?
  2. 可以在禁用外设时钟的情况下进行此调用吗?
  3. 该调用是否会影响外设时钟的启用/禁用?
  4. 在该调用后访问寄存器之前、哪里可以找到必须应用的延迟持续时间?

非常感谢、

节拍

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

    嗨、 Beat、

    请查看以下答案、如果您在想了解任何特定外设、请告诉我:

    该外设的所有寄存器位是否会独立于其复位类型(例如 SYSRSn、XRSn、PORESETn)进行复位?

    调用此函数来设置各自的 SOFTPRES 寄存器字段时、无论外设寄存器字段的复位类型如何、这些字段都将复位。 否则、模块复位由正常的器件复位结构确定。

    是否可以在禁用外设时钟的情况下进行此调用?

       在调用复位函数时、应启用外设时钟、也应打开外设。  

    此调用是否会影响外设时钟的启用/禁用?

    SOFTPRES 不应仅在外设特定寄存器中启用/禁用任何与外设时钟相关的配置。

    在此调用后、在访问寄存器之前、我在哪里可以找到必须应用的延迟持续时间?

    SysCtl_resetPeripheral()  函数中、该位设置为 1(复位外设寄存器位)和 0(返回正常复位结构)。 调用函数后不应延迟。

    此致、

    Aishwarya

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

    您好 Aishwarya、

    非常感谢您的答复。

    关于问题 4、我想知道以下示例中是否需要“XX"和“和“YY"延迟“延迟、如果需要、如何确定适当的延迟时间。

    此致、

    节拍

    SysCtl_enablePeripheral(SYSCTL_PERIPH_CLK_EPWM1);
    SysCtl_delay(XX)
    SysCtl_resetPeripheral(SYSCTL_PERIPH_RES_EPWM1);
    SysCtl_delay(YY)
    // first EPWM1 register access here

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

    节拍、

    我还附上了我的原始答复、但不应拖延。  对于上述的具体情况、我 假设复位实际上不是在启用外设后立即进行、而是在应用期间进行、这也可以。  

    此致、

    Aishwarya

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

    您好 Aishwarya、

    好的。 因此、我可以假设该 TI 代码(来自“f29h85x-sdk_1_01_00_00")“)实际上不需要这样的 20 周期延迟?

    谢谢、

    节拍

    uint32_t uartBootInit(uint32_t bootMode)
    {
        uint32_t status = BROM_STATUS_OK;
    
        //
        // Enable Sysclk and wait for 20U cycles
        //
        SysCtl_resetPeripheral(SYSCTL_PERIPH_RES_UART_A);
        CPU_BROM_delay_cycles(20U);

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

    节拍、

    是的、是这样。 您能否重新安装 SDK、因为您使用的是旧版本的 SDK? 该示例实际上已重命名为以下示例、并删除了延迟。

    此致、

    Aishwarya

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

    您好 Aishwarya、

    此代码片段取自仍在我的 SDK 1.01 副本中的“uart_flash_kernel"。“。

    但现在一切都是明确和确认的。

    再次感谢您发送编修

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

    节拍、

    感谢您的确认。 我们讨论的是两个类似的示例。 如果原始回答回答回答了您的问题、请将其标记为已解决、以供将来参考。

    此致、

    Aishwarya