Bem, eu estou preso nisso por um tempo, talvez 2-3 semanas neste momento. Só não tenho certeza do que estou fazendo de errado. Estou tentando escrever nesta parte do spi flash , e agora estou apenas executando rotinas para apagar, escrever e ler para tentar isolá-lo, mas até agora sem sorte. Claro que resolvi vários bugs ao longo do caminho ...
De qualquer forma, tenho minha linha WP empatada no tabuleiro e reduzi o tempo para 200khz, depois corro minha rotina de apagamento e fica assim:
Primeiro, verifico o ID apenas para depuração, esse é o comando 9F, depois defino WREN com o comando 06, C7 é a eliminação completa do chip e depois verifico o bit de status com 05 e está claro. O tempo de apagamento desse chip é de apenas 35ms.
Agora recarrego meu código e tento escrever:
Primeiro, defino WREN com 06, verifique o status para ver se WREN está definido com 05, e envie o comando de programa da página 02 para o endereço 0x000000. Você pode ver que estou escrevendo deadcafe como os primeiros bits. Também não ilustrado aqui, após a gravação ser concluída (uma página ou 256 bytes), envio o comando 0x04 para desativar o WREN. Eu observei isso e configurei os últimos quatro bytes do buffer da minha página como 0xAA, 0x55, 0xAA, 0x55 e os vi logo antes do CS ficar alto.
Agora pare de recarregar o código e tente executar um ciclo de leitura: envie 0x03 como comando de leitura e 0x000000 como endereço e ... todos os 0xFF de volta do dispositivo.
Consigo ver o dispositivo respondendo ao meu ID de leitura e definir comandos WREN para que eu saiba que ele me ouve e possa responder. Não sei o que estou fazendo de errado neste momento. Acho que voltarei a ler a folha de dados e a tentar algumas coisas, mas se alguém tiver alguma ideia, agradeceria a ajuda. Está se preparando para ser outro fim de semana frustrante trabalhando nessa coisa.
Respostas:
Eu odeio que isso ainda esteja no topo da lista 'sem resposta', então vou responder.
Conforme declarado nos comentários por 'confuso', existe um comando chamado 'Desbloqueio global' que deve ser executado antes de gravar na parte do flash.
fonte