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

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.
工具与软件:
你好
板载 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。
否、我们不会在自定义 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