|
楼主 |
发表于 2017-3-22 19:30:50
|
显示全部楼层
本帖最后由 hpdell 于 2017-3-22 21:11 编辑
你好,现在初始化可以读出芯片 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 = 1ms res = 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 芯片资料:
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|