hpdell 发表于 2017-3-23 15:18:29

qspi 芯片在quad模式下,擦除一个扇区正常,另外一个错误?

现在初始化可以读出芯片 ID,基本设置也都正常,但是在擦除时不对



上面那个是初始化输出的信息,貌似跟设置的结果一样

输出的信息解释如下:
QSPI N25Q512A13xx ID      ==    0x20BA20 ... ...                  芯片id
QSPI N25Q512A13xx Extended Address Enable OK   = 0x3      扩展地址寄存器设置为 0x3,表示可以寻址 0x3ffffff的地址存储空间,也就是 64MByte的整个存储空间了
QSPI N25Q512A13xx Enter 4 Byte Addr Mode OK   =0x81      使能了4字节地址模式
QSPI N25Q512A13xx Dummy Cycles Cfg = 171                         虚拟时钟配置10
READ_VOL_CFG_REG_CMD 0x65 reg=0xF                            quad 设置 这个设置为 0x1f, 0x0f 结果都是一样的 读寄存器为 0x65, 写为 0x61
QSPI N25Q512A13xx Work Mode QUAD= 1                            工作在 quad 模式 职位
QSPI EraseSector(0),          Time = 237ms   res = 0                  第一扇区擦除的时间基本是对的
QSPI EraseSector(1),          Time = 0ms   res = 0                     第二扇区擦除的时间不对了
QSPI Write End DataSize = 256, Time = 1msres = 0
QSPI Read End DataSize = 256, Time = 0ms   res = 0
QSPI Data Read Write Relatively DataSize = 256Byte ... Error         错误了


0x65, 0x61 读写寄存器 bit 定义如下:



扩展地址寄存器:






不知道是我还有哪些没有设置对或者是没有设置啊 ??

擦除函数如下:
QSPI_StaticTypeDef QSPI_EraseSector(uint32_t Sector_address)
{

//Sector_address *= 4096;
Sector_address <<= 12;
        if (QSPI_WriteEnable(&QSPIHandle) != QSPI_OK)
        {
                return QSPI_ERROR;
        }

    if(QSPI_SendCmdData(SUBSECTOR_ERASE_CMD,      // _Instruction,      发送指令 这个指令为0x20
                        QSPI_INSTRUCTION_4_LINES,         // _InstructionMode,指令模式
                        QSPI_ADDRESS_4_LINES,                // _AddressMode,      地址模式
                        QSPI_ADDRESS_32_BITS,               // _AddressSize,      地址长度
                        QSPI_DATA_NONE,                        // _DataMode,         数据模式
                        0,                                             // _NbData,         数据读写字节数
                        0,                                              // _DummyCycles,      设置空指令周期数
                        Sector_address,                           // _Address,          发送到的目的地址
                        NULL,                                        //*_pBuf,         待发送的数据
                        QSPI_SEND_CMD                        // __SEND_CMD_DATA_T_SendCmdDat
                     ) != QSPI_OK )
    {
      return QSPI_ERROR;
    }
}

N25Q512芯片资料:








页: [1]
查看完整版本: qspi 芯片在quad模式下,擦除一个扇区正常,另外一个错误?