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.