Utilizando a Flash do QY4 como EEprom em C...

Software e Hardware para uC da Qualcomm, NXP, FreeScale e Motorola

Moderadores: 51, guest2003

Utilizando a Flash do QY4 como EEprom em C...

Mensagempor mega.rod » 07 Dez 2006 09:35

Pessual, abri este tópico pq estou com algumas dificuldades em relação a utilização da Flash para armazenar epenas alguns Bytes, E como literaturas para programação dos HCs são muito poucas, vem até aqui recorrer a VCs...
Fiz algums pesquisas, e encontrei no livro do Fabio Pereira alguns detalhes, concegui apenas me achar dentro deste contexto, mas tudo muito superficial, e alguns detalhes la descritos estão em Assembler...

Segue abaixo...

Apagamento...
1.Configura os Bits ERASE=1 e MASS=0 no registrador FLCR. //FLCR=0b00000010; ok
2.Efetue a leitura do registrador FLBPR. O valor lido não sera nescessariamente utilizado. Este procedimento é nescessario somente para que o controlador da Flash permita a oporeção de apagamento. //??, como se faz isso em C ?
3.Escreva um valor qualquer num endereço da pagina de memória que deseja apagar. No exemplo, teriamos de escrever um valor qualquer em um endereço entre $EE00 e $EE3F.// ?? também não sei como escrever um valor em um determinado valor me memória...
4.Aguarde um tempo de 10us (Conforme o parametro Tnvs especificado pelo fabricante). //delay_us(10); ok..
5.Configure o bit HVEN=1 no registrador FLCR. //FLCR=0b00001010; ok..
6.Aguarde o tempo de apagamento desejado (Conforme o parametro Terase, entre 1 e 4 ms). //delay_ms(4); ok..
7.Configure o bit ERASE=0 no registrador FLCR. //FLCR=0b00001000; ok
8.Aguarde um tempo minimo de 10us (Conforme o parametro Tnvh especificado pelo fabricante). //delay_us(10); ok..
9.Configure o bit HVEN=0 no registrador FLCR, desativando a tensão de programação interna. //FLCR=0b00000000; ok..
10.Apos um tempo de 1us, a regiao de memória pode ser acessada novamente. //delay_us(1); ok..


Para Programação...

1.Configure o bit PGM=1 no registrador FLCR. //FLCR=0b00000001; ok..
2.Efetue a leitura do registrador FLBPR. Lembre-se de que para poder programar um bloco, ele não pode estar protegido contra gravação. // ??
3.Escreva um dado qualquer em alguma posição de memória do bloco escolhido. No exemplo, deveriamos escrever uma informação em qualquer endereço entre $EE00 e $EE1F. // ??
4.Aguarde por um tempo minimo de 10us (Parametro Tnvs). //delay_us(10); ok..
5.Configure o bit HVEN=1 no registrador FLCR. //FLCR=0b00001001; ok..
6.Aguarde um tempo minimo de 5us (parametro Tpgs). //delay_us(5); ok..
7.Escreva o primeiro dado no endereço inicial do bloco. no exemplo, seria realizada a escrita no endereço $EE00. // ??
8.Aguarde um tempo minimo de 30us (parametro Tprog). //delay_us(30); ok..
9.Ascreva o próximo dado no endereço seguinte da memória Flash. // ??
10.Aguarde um tempo minimo de 30us (Parametro Tprog). //delay_us(30); ok..
11.Repita os passos 9 e 10 até que todos os 32 bytes do boco tenham sido escritos. //...
12.Configure o bit PGM=0 no registrador FLCR. //FLCR=0b00001000; ok..
13.Aguarde um periodo de 5us (Parametro Tnvh). //delay_us(5); ok..
14.Configure o bit HVEN=0 no registrador FLCR. //FLCR=0b00000000; ok..
15.Apos um tempo tipicamente de 1us, a memória flash pode ser acessada normalmente. //delay_us(1); ok..`

Pessual, estas são as especificações mais uteis que encontrei no livro, quem puder me ajudar a decifrar este ??, eu agardeço de coração...

Valew, abraços...
Avatar do usuário
mega.rod
Nibble
 
Mensagens: 83
Registrado em: 17 Out 2006 09:52

Mensagempor Fábio Pereira » 07 Dez 2006 10:04

Não se esqueça de que para gravação na FLASH, o programa deve estar rodando a partir de ROM ou RAM.

Até +
Fábio Pereira
embeddedsystems.io
Avatar do usuário
Fábio Pereira
Word
 
Mensagens: 674
Registrado em: 16 Out 2006 09:07
Localização: Kitchener, ON

...

Mensagempor mega.rod » 07 Dez 2006 10:09

E como faço para ler algo em um determinado endereço da Flash ? é possivel fazer isso em C ?

Obrigado
Avatar do usuário
mega.rod
Nibble
 
Mensagens: 83
Registrado em: 17 Out 2006 09:52

Mensagempor ddkks » 07 Dez 2006 10:43

Tudo em C, prontinho para o uso:
http://asm51.eng.br/phpBB/viewtopic.php?t=170

O texto está bagunçado por causa da migração do fórum, copie e tabule no editor... funcionamento garantido...

Muito esperto esse tal de 001... :shock:
;)
ddkks
Bit
 
Mensagens: 14
Registrado em: 26 Out 2006 12:50
Localização: Sao Paulo

Mensagempor Emerson » 07 Dez 2006 13:58

Rodrigo,

Outro ponto importantíssimo para manipulação de dados na FLASH é desabilitar todas as interrupções antes de se iniciar o apagamento ou gravação dados na mesma e apenas após realizadas essas operações é que se pode habilitar as interrupções novamente.

Até mais,

Emerson
Emerson
Nibble
 
Mensagens: 68
Registrado em: 22 Nov 2006 21:24
Localização: Santa Rita do Sapucaí - MG


Voltar para NXP (ex-FreeScale (ex-Motorola))

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x