W25Q128JVSQ
可以读读取到ID,读出0地址的16个字节全是0xFF。
然后写0~16地址.写完读出来还是0xFF。用的原子的驱动程序和板子
以下是串口输出:
Flash ID:0XEF17
JEDEC ID:0XEF4018
Status all:0X600200
SPI_FLASH data addr=0~16
//代码如下
//SPI FLASH
SPI_Flash_Init();
print_hex("Flash ID:",SPI_Flash_ReadID());
print_hex("JEDEC ID:",flash_read_jedec_id());
print_hex("Status all:",flash_read_state_all());
for(temp=0;temp<16;temp++)
{
send.buf[temp]= temp;
}
flash_page_write(send.buf,0x0,0x0,16);
//flash驱动代码
void flash_page_write(uint8 *pBuffer,uint16 page,uint8 addr,uint8 NumByteToWrite)
{
u8 i;
SPI_FLASH_Write_Enable(); //SET WEL
SPI_FLASH_CS=0; //使能器件
SPI1_ReadWriteByte(W25X_PageProgram); //发送写页命令
SPI1_ReadWriteByte(page>>8); //发送24bit地址
SPI1_ReadWriteByte(page);
SPI1_ReadWriteByte(addr);
for(i=0;i<NumByteToWrite;i++)SPI1_ReadWriteByte(pBuffer[ i]);//循环写数
SPI_FLASH_CS=1; //取消片选
SPI1_ReadWriteByte(0xff); //延时8个时钟
SPI_Flash_Wait_Busy(); //等待写入结束
}
网上搜索代码大多是这样。特意在每个CS拉高后延时8个CLK。还是没有效果。
|