zrl 发表于 2025-1-29 00:21:41

QSPI如何直接进入数据阶段

改了一下例程,发现没波形
void QSPI_READ_QINSTR_QDATA(BYTE cmd, BYTE *pdat, WORD datalen)
{
    while (QSPI_CheckBusy());       //检测忙状态

    QSPI_SetReadMode();             //读模式
    QSPI_SetDataLength(datalen-1);//设置数据长度
    QSPI_SetDummyCycles(0);         //设置DUMMY时钟
//    QSPI_InstructionQuadMode();   //设置指令为四线模式
    QSPI_NoInstruction();         //无指令
    QSPI_NoAddress();               //无地址字节
    QSPI_NoAlternate();             //无间隔字节
    QSPI_DataQuadMode();            //设置数据为四线模式
    QSPI_SetInstruction(cmd);       //设置指令

    while (!QSPI_CheckTransfer());//等到数据传输完成
    QSPI_ClearTransfer();         //清除传输完成标志

    while (datalen)
    {
      *pdat = QSPI_ReadData();    //从FIFO中读取数据
      pdat++;
      datalen--;
    }

    while (QSPI_CheckFIFOLevel())   //清空FIFO
      QSPI_ReadData();
}

void QSPI_WRITE_INSTR_SADDR32_QDATA(BYTE cmd, DWORD addr, BYTE *pdat, WORD datalen)
{
    while (QSPI_CheckBusy());       //检测忙状态

    QSPI_SetWriteMode();            //写模式
    QSPI_SetDataLength(datalen-1);//设置数据长度
//    QSPI_SetAddressSize(3);         //设置地址宽度为32位(3+1字节)
    QSPI_SetDummyCycles(0);         //设置DUMMY时钟
//    QSPI_InstructionSingMode();   //设置指令为单线模式
//    QSPI_AddressSingMode();         //设置地址为单线模式
    QSPI_NoInstruction();            //无指令
    QSPI_NoAddress();                  //无地址
    QSPI_NoAlternate();               //无间隔字节
    QSPI_DataQuadMode();            //设置数据为四线模式
    QSPI_SetInstruction(cmd);       //设置指令
    QSPI_SetAddress(addr);          //设置地址
    while (datalen)
    {
      QSPI_WriteData(*pdat);      //写数据到FIFO中
      pdat++;
      datalen--;
    }

    while (!QSPI_CheckTransfer());//等到数据传输完成
    QSPI_ClearTransfer();         //清除传输完成标志
}




神农鼎 发表于 2025-1-30 20:10:18



SPI / QSPI 编程外部串行Flash | 配合ISP软件中 工具 | 串行Flash编程器 软件 - QSPI/3组SPI/I2S/I2C,一线制温湿度传感器 国芯技术交流网站 - AI32位8051交流社区
页: [1]
查看完整版本: QSPI如何直接进入数据阶段