w25x16系列FLASH读写问题
请问下,我按下面步骤为什么不能烧写、读取数据时?
烧写过程:
等待芯片从BUSY状态复恢(等status register bit0变为0),
用chip erase指令擦除整个FLASH并等待芯片从BUSY状态复恢,
用SPI写入write enable 指令(0x06),
用page program指令给FLASH烧写数据(0x02+3字节地址+N字节数据,其中N>=1)
读数过程:
等待芯片从BUSY状态复恢(等status register bit0变为0),
用read data指令从FLASH读取数据(0x03+3字节地址+8N个CLOCK,其中N>=1)
我确信SPI对芯片发出了指令,但读出的数据始终是FF。。。
另外我能正确写入或读出status register中的内容.
[解决办法]
这个芯片有个硬件防写功能,不能使能;有个片选,访问的时候需要选中;在一次访问中,需要送出地址、命令、数据等,否则会有问题。
最后一点很重要,很多主机的SPI控制器缺省的工作模式下一次只传输一个字节,然后/CS线就无效了,所以要正确设置SPI控制器的工作模式保证在一次会话中片选线一直有效。
[解决办法]
注意nWP(写保护)和nHOLD(保持、暂停)信号的电平状态。
能读出ID吗?先判断SPI通道是否正确、稳定。