zynq板卡上原来用的是256M的Winbond(W25Q256JVEQ),因为内存需求,换成512Mb的该芯片试试。看看256Mb以上地址的读写是否成功。
网上关于该芯片的资料较少,只能自己看数据手册学习了。
https://file.elecfans.com/web2/M00/27/BB/poYBAGHCyfSAW_JbABn8uygwSwM856.pdf
ZD25Q512AYIGY -PDF数据手册-参考资料-立创商城
查看数据手册:(在立创商城官网搜索该芯片即可)
1 Extended Address Register
该芯片有Status Registers,也有Extended Address Register(和之前用的winbond一样)。
但是只支持3字节模式下使用。即4字节模式下,EAR无效。
该寄存器有A31:A24,一共8位。该8位,与3字节读写的24位地址,共同组成为首地址(Start Address)。
当A24 = 0:是低128Mb 0xh - 0xFF_FFFFh
当A24 = 1:是高128Mb 0x100_0000h - 0x1FF_FFFFh
-----也就是说,A24控制的是256M中的低128M和高128M。
那谁在控制512M中的低256M和高256M呢?
所以我们需要做到:
3字节地址模式;
写入Write Extended Address Register(0/1)
2 Die #
该芯片有两个Die:Die #0和Die #1.
同一时间,只能有一个Die是active。
默认Die #0 是active。
发送C2H指令后,可以选择Die。
当内部Program / Erase操作在进行时,可以切换Die。
切换Die的时序:/CS为low,发送C2H,发送Die ID,/CS为high。
3 ID
和Winbond一样,该芯片也有:JEDEC ID和Unique ID number
4 3-byte
5 总结
zd25q512芯片是2×256M,理解为两片256M。
目前关注到的几个寄存器,都和Winbond的地址位一致。ZD25Q256只多了Software Die Select。
只有在3字节读写(ADS=0)的情况下,才能根据地址进行低128Mb和高128Mb的读写(0xh - 0xff_ffffh,0x100_0000 - 0x1ff_ffff)(扩展的地址为bit24)。
要写入扩展地址寄存器位时,必须先执行写使能(06H)。然后再发送C5H,写入扩展地址注册表数据字节来输入指令。
流程:
Die #0 --> Die #1.
Die #0 :
低128M --> 高128M
注意:四个部分写入的数据不相同。擦除后再写不同的数据(证明擦除和读写正常)
读 --> 写1 --> 读 --> 擦除 --> 写2
切换Die: C2H发送0或1即可
256M中的低128M和高128M读写:尝试了C5H写0或1,但是发现是同一块内存
所有的读写都是3字节模式