QSPI N25Q256 读取 ID ??
本帖最后由 hpdell 于 2016-11-5 15:34 编辑QSPI N25Q256 读取 ID 貌似跟资料介绍的不一致??
资料介绍
实际读取到的 ID
对 这个芯片的 数据读写,4k擦除 完全正常,但是还有芯片擦除 还是不行
/* Identification Operations */
#define QSPI_READ_ID_CMD 0x9E
#define QSPI_READ_ID_CMD2 0x9F
#define QSPI_MULTIPLE_IO_READ_ID_CMD 0xAF
#define QSPI_READ_SERIAL_FLASH_DISCO_PARAM_CMD 0x5A
读取函数如下:
QSPI_StaticTypeDef QSPI_Read_ID(uint8_t ReadID, uint8_t * _pIdBuf, uint8_t ReadIdNum)
{
QSPI_CommandTypeDef sCommand;
__IO uint32_t cc;
//Initialize the read command
sCommand.InstructionMode = QSPI_INSTRUCTION_1_LINE; //指令模式
sCommand.AddressSize = QSPI_ADDRESS_24_BITS; //地址长度
sCommand.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE; //无交替字节
sCommand.DdrMode = QSPI_DDR_MODE_DISABLE; //关闭DDR模式
sCommand.DdrHoldHalfCycle= QSPI_DDR_HHC_ANALOG_DELAY;
sCommand.SIOOMode = QSPI_SIOO_INST_EVERY_CMD;
sCommand.Instruction = ReadID; //指令
sCommand.DummyCycles = 1; //设置空指令周期数
// sCommand.Address = address; //地址
sCommand.NbData = ReadIdNum; // 需要读取的字节数
if(ReadID == QSPI_MULTIPLE_IO_READ_ID_CMD)
{
sCommand.AddressMode = QSPI_ADDRESS_4_LINES; //地址模式
sCommand.DataMode = QSPI_DATA_4_LINES; //数据模式
}
else
{
sCommand.AddressMode = QSPI_ADDRESS_1_LINE; //地址模式
sCommand.DataMode = QSPI_DATA_1_LINE; //数据模式
}
if (HAL_QSPI_Command(&hqspi, &sCommand, HAL_QPSI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
{
return QSPI_ERROR;
}
RxCplt = 0; // 接收标志清0
if (HAL_QSPI_Receive_IT(&hqspi, _pIdBuf) != HAL_OK)
{
return QSPI_ERROR;
}
cc = 0;
do{
cc ++;
} while( (RxCplt == 0) && (cc < QSPI_WAIT_MAX_TIME));
if(cc >= (QSPI_WAIT_MAX_TIME - 1 ))
return QSPI_ERROR;
return QSPI_OK;
}
main{
.........................
QSPI_Read_ID( QSPI_READ_ID_CMD2, (uint8_t*) &uart_rx_buff, 20);
uart_rx_buff = 0xff; // 特意赋值为 0xff
for(cc=0;cc<20;cc++)
printf("ID = %#x, %d\r\n", uart_rx_buff, cc);
}
首先,你的这样贴代码,谁看谁累。
然后,“对 这个芯片的 数据读写,4k擦除 完全正常,但是还有芯片擦除 还是不行”,你的ID都读不对,你怎么确定4K擦除和读写完全正常?
还有,你的命令码,手册上的没有贴上来,自己确认一下没错。 还有初始化的代码,都没贴,净贴些没用的。 衔胆栖冰 发表于 2016-11-5 17:18
首先,你的这样贴代码,谁看谁累。
然后,“对 这个芯片的 数据读写,4k擦除 完全正常,但是还有芯片擦除...
我使用 4k 扇区擦除,写入,再读出,最后数据对比都完全正确,
现在 就是ID 读取不正确,还有 擦除整个芯片不正常, 衔胆栖冰 发表于 2016-11-5 17:18
首先,你的这样贴代码,谁看谁累。
然后,“对 这个芯片的 数据读写,4k擦除 完全正常,但是还有芯片擦除...
同意二楼的说法 hpdell 发表于 2016-11-5 17:29
我使用 4k 扇区擦除,写入,再读出,最后数据对比都完全正确,
现在 就是ID 读取不正确,还有 擦除整个 ...
你的flash是不是有4K的缓冲区?你的数据并没有写进flash里,只是写到了缓存区,然后再从缓冲区读出来,然后对比都一样;P 断电重新上电,校验一下数据写入对不 :):):):):):):):):):):) 本帖最后由 hpdell 于 2016-11-6 13:05 编辑
衔胆栖冰 发表于 2016-11-5 22:37
你的flash是不是有4K的缓冲区?你的数据并没有写进flash里,只是写到了缓存区,然后再从缓冲区读出来,然 ...
哟一次写入的是 8192 字节啊,读出也是8192 进行对比的,
还有我整片擦除,写入,后再整片读出,数据对比也是对的
还有初始化的代码,都没贴,净贴些没用的。
页:
[1]
2