Device ID
读取命令(0x90)
W25Q80的芯片ID为:0XEF13
W25Q16 的芯片ID为:0XEF14
W25Q32 的芯片ID为:0XEF15
W25Q64 的芯片ID为:0XEF16
W25Q128的芯片ID为:0XEF17
W25Q256的芯片ID为:0XEF18
W25Q512的芯片ID为:0XEF19
数据读写
W25Q64存储容量共64M-bit/ 8M-byte,32768页(pages)、每页256-bytes。最大一次可编程256-bytes。W25Q128JV存储容量共128M-bit/ 16M-byte
一次擦除大小可以为16页(4KB)、128页(32KB)、256页(64KB)或者全擦除。
W25Q64JV有2048个可擦除扇区(sectors),或者可以说有128个可擦除块(blocks)。关系 1 Block = 16 sectors;1 sector = 4KB,所以算起来能达到8M-byte。
问题
上电之后第一次读取Device ID失败(0x00A6),第二次以及之后读取都是正常的(0XEF16)。上网查资料发现:
1.W25QXX芯片片选脚在上电时是拉低的,而W25所需要的片选脚有效电平就是低电平,之后将默认电平改为高电平,完美解决问题。
按照上述操作,我的问题并未解决。
2.通过查找资源以及原来F1芯片上的代码,发现通过在初始化完成后,进行1字节的读取操作,之后每次的读写操作就都是正确的了,虽然问题解决了,但是还不清楚原理???
按照第二种方式,上电后读取一个字节,之后再读取数据正常。(初次读写的时序异常?)
3.设备使用存储芯片来存储历史记录,设备关机或者低电量自动关机时,如果执行完存储语句后立即断电,会导致存储过程出问题,在存储语句之后加一个1秒的延时(延时时间根据自己测试,我在这里随便延时一下),存储正常。
4.W25Qxx读取数据时,首地址必须是页的首地址