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.

[参考译文] LP-AM261:LaunchPad IO 扩展器在 POR 时未复位

Guru**** 2614265 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1459871/lp-am261-launchpad-io-expanders-not-resetting-on-por

器件型号:LP-AM261

工具与软件:

你好

板载 IO 扩展器不会在 POR 时复位、这会导致 POR 后出现异常行为。 我正在尝试对闪存进行复位、但在执行上电复位后、闪存仍处于复位状态。 请推荐解决方案

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

    尊敬的 Dheeraj:

    是、IO 扩展器复位未连接到 PORz。 但对于 OSPI 闪存进行复位、U27和 U50 与门通过 OSPIx_RESET_OUT0网和 PORz 进行驱动。 因此、应针对每个 PORz 复位 OSPI 闪存、而与 IO 扩展器无关。

    此外、IO 扩展器的复位线路故意不连接到 PORz、以便在 BoosterPack 连接到 LaunchPad 时保持多路复用器的相同状态。 用户必须通过设置 IO 扩展器的新 GPIO 值来特意更改多路复用器的状态。

    谢谢!
    Tejas Kulakarni

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

    你好、Tejas  


    执行 POR 后、我的定制 SBL 未运行。 我检查了 OSPI0_RSTN 网络、它是0V。 在反向跟踪时、我发现 OSPI0_RESET_OUT0网络设置为1V (为逻辑0)。 在进一步反向跟踪中、我发现启用了 U25电平传输(因为 BP_BO_MUX_EN 是高电平、因为 IoExpander 未复位)、并且 AM261_OSPI0_RESET_OUT0为0V、使闪存在 POR 时保持复位状态。
    我不知道为什么 POR 后这个引脚为0。  


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

    尊敬的 Dheeraj:

    很抱歉响应出现延迟。

    如果引脚  AM261_OSPI0_RESET_OUT0 (K5-GPIO61)被您的代码的任何部分拉低、您可以在代码或定制 SBL 中检查一次吗?

    谢谢!

    Tejas Kulakarni

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

    否、我们不会在自定义 SBL 中的闪存复位序列之外的任何其他位置访问此引脚。 以下代码来自 SDK  

    void flashFixUpOspiBoot(OSPI_Handle oHandle)
    {
        gpio_flash_reset();
        OSPI_enableSDR(oHandle);
        OSPI_clearDualOpCodeMode(oHandle);
        OSPI_setProtocol(oHandle, OSPI_NOR_PROTOCOL(1,1,1,0));
    }
    
    void gpio_flash_reset(void)
    {
        uint32_t    gpioBaseAddr, pinNum;
        enableLevelTranslator();
    
        /* Get address after translation translate */
        gpioBaseAddr = (uint32_t) AddrTranslateP_getLocalAddr(GPIO_OSPI_RST_BASE_ADDR);
        pinNum       = GPIO_OSPI_RST_PIN;
        GPIO_setDirMode(gpioBaseAddr, pinNum, GPIO_OSPI_RST_DIR);
        GPIO_pinWriteLow(gpioBaseAddr, pinNum);
        GPIO_pinWriteHigh(gpioBaseAddr, pinNum);
    
    }

    我通过擦除闪存、然后检查引脚  AM261_OSPI0_RESET_OUT0的状态进行了检查。 它是低电平。 下面是在擦除闪存并按下 POR 时捕获的波形


    下面是松开按钮时的另一个视图

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

    尊敬的 Dheeraj:

    抱歉、我不确定我是否理解正确、如果以下任何内容有误、请进行更正。 根据您的观察结果、"AM261_OSPI0_RESET_OUT0"网络始终为低电平、如第一个图所示、只要 PORz 被释放、引脚就始终为低电平。 但第一张图像是一个非常缩小(时间)的视图。

    如第二个图所示、在 PORz 释放后、"AM261_OSPI0_RESET_OUT0"网络会在大约4ms 后变为低电平。 那么、电路板上是否连接了任何其他东西(或者导线/探针可能误地短接到了另一个引脚?) 该网络处于低电平状态吗? 您能检查一次吗?

    此外、如果 "AM261_OSPI0_RESET_OUT0"网络在大约4ms 后变为低电平、我认为不是 AM261器件将其驱动为低电平、因为它在4ms 内无法完全启动。 另一种情况是、如果启用了电平转换器 U25、U25便会转换电压、永远不会将电压驱动至特定的电压。

    谢谢!
    Tejas Kulakarni