这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 行业应用 » 汽车电子 » 【S32K3学习整理】QSPI LUT 使用配置

共1条 1/1 1 跳转至

【S32K3学习整理】QSPI LUT 使用配置

高工
2026-08-28 17:22:50     打赏

【简介】

S32K3 的QSPI 的使用的核心配置就是LUT,LUT负责将用户配置的指令转换成QSPI 的控制信号,从而完成QSPI 接口和外设芯片的数据交互。以下是QSPI 的框图中LUT 的说明。

image.png

每个LUT的大小为2字节,对应编码结构如下:

image.png

LUT 的配置需要根据芯片手册的定义的数据获取的方式来通过LUT进行信息交互。我们以QSPI中的状态获取的配置为例来了解下S32DS中的LUT相关配置。本地使用的芯片为S25FL512S,以下是芯片手册中状态寄存器的定义说明。

image.png

以下是S32D中的对应的配置,状态寄存器读取的状态配置。

image.png

上述配置中描述了对对应状态寄存器的大小为1B,busy位为bit0,1为busy状态。以下是对应ReadSR的LUT 配置即为读取0x05 的状态寄存器。

image.png

添加如下测试代码读取寄存器状态。

static Qspi_Ip_StatusType Qspi_Ip_S25fl512s_Flash_WaitReady(void) {
    Qspi_Ip_StatusType st;
    uint32_t timeout = S25FL512S_BUSY_POLL_TIMEOUT;

    do {
        st = Qspi_Ip_GetMemoryStatus(0);
        timeout--;
    } while ((STATUS_QSPI_IP_BUSY == st) && (timeout > 0U));

    return (0U == timeout) ? STATUS_QSPI_IP_TIMEOUT : st;
}

运行时抓取对应的波发现QSPI发送05 命令来读取状态信息。

image.png

image.png

添加如下代码在擦除后读取对应的状态信息,会读取到当前为busy状态。

/**
 * @brief  Erase one 256 KB sector and wait until the device is ready
 * @param  addr  Byte address of the 256 KB sector to erase
 * @return QSPI status
 */
Qspi_Ip_StatusType Qspi_Ip_S25fl512s_Flash_EraseSector(uint32_t addr)
{
    Qspi_Ip_StatusType st;
    st = Qspi_Ip_EraseBlock(S25FL512S_QSPI_MEM_INST, addr, S25FL512S_SECTOR_SIZE);
    if (STATUS_QSPI_IP_SUCCESS != st) {
        return st;
    }
    return Qspi_Ip_S25fl512s_Flash_WaitReady();
}

image.png

   测试发现擦测256KB 的sector 需要耗时400ms.

其他的命令的配置过程也是类似,本地的LUT 的都配置如下,跟flash 手册中定义的命令也是一致的。

image.png

image.png

逻辑分析仪抓取的数据跟上述保持一致。

image.png

其他 LUT 的配置基本也都是类似的,再此就不再赘述了。




           


共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]