Tenho um kit que veio com um DATAFlash AT45DBXX e quando testo o exemplo que veio com o kit, percebo que sempre que desconecto a alimentação do mesmo os dados são perdidos.
Tinha em mente que Flash é uma memoria não volátil.
Pensei errado ? Alguém pode me dizer uma aplicação pra ela.
Segue o código do exemplo, ele grava e depois lê, tudo ok,
Mas se eu desligo a alimentação do mesmo e mudo o código só pra ler resultado em dados errados.
- Código: Selecionar todos
printf("\r\nFALSH AT45DBXX Write Test: \r\n");
for(num=0;num<255;num++) /*Written to the flash*/
{
write_buffer((u16)num,num);
printf("%3d ",num);
}
printf("\r\nFALSH AT45DBXX Read Test: \r\n");
for(num=0;num<255;num++) /*Read the flash*/
{
tmp=read_buffer((u16)num);
printf("%3d ",tmp);
}
void write_buffer(u16 BufferOffset,u8 Data)
{
AT45DBXX_Enable;
SPI_Send_byte(0x84);
SPI_Send_byte(0xff);
SPI_Send_byte((u8)BufferOffset>>8);
SPI_Send_byte((u8)BufferOffset);
SPI_Send_byte(Data);
AT45DBXX_Disable;
}
u8 read_buffer(u16 BufferOffset)
{
u8 temp=0;
AT45DBXX_Enable;
SPI_Send_byte(0xd4);
SPI_Send_byte(0xff);
SPI_Send_byte((u8)BufferOffset>>8);
SPI_Send_byte((u8)BufferOffset);
//SPI_Send_byte(0xff);
SPI_Send_byte(0xff);
temp=SPI_Receive_byte();
AT45DBXX_Disable;
return temp;
}