ajuda mutua.Serial EEPROM.

Circuitos eletrônicos, topologias, diagramas elétricos, etc...

Moderadores: 51, Renie, gpenga

ajuda mutua.Serial EEPROM.

Mensagempor fabim » 25 Jan 2008 07:49

amigos eu e o frank um outro amigo.
Estamos fazendo um sisteminha de gravação de eeprom´s seriais, passei a bola pra ele do usb hid ele acoplou no software feito em delphi.

consistencia do sistema.
Pic18f4455/2455 "tanto faz"
1 soquete zif com ligações para as eeprom´s seriais.
software do pc.

o problema!!
conforme eu pesquisei das eeprom´s seriais existe muitas com mesmoa nomenclatura e marcação diferente, por exemplo: 24C,24L,24LC,24F,24S,24CS etc..

Meu pedido de ajuda!!
Gostaria que os amigos que tivessem alguma experiência nessa área de eeprom´s seriais, fossem postando referênte ao modelo X, e dizendo como funfa o protocolo.

EX:950XX////250XX
SPI em Low state, clock em midle low to high, Cs de 1 para zero.!
3 bytes de comunicação.
Sendo 1° config´s, 2° endereçamento,3° dado a ser gravado.

Byte config.
bit0 - comando
bit1 - comando
bit2 - comando
bit3 - 9° bit de endereçamento para 512 bytes
bit4 - n/e
bit5 - n/e
bit6 - n/e
bit7 - n/e

todos bytes "MSB>>>LSB"

agradeço a quem puder me ajudar, além de adicionar as informações ao nosso projetinho, como a muito eu tenho vontade quero fazer um tutorial explicando as diferenças entre as dita cuja, e como comunicar com elas!!

Abraços

Fabim
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Re: ajuda mutua.Serial EEPROM.

Mensagempor andre_luis » 25 Jan 2008 08:27

Fabim,

Já fiz um gravador de EEPROM SPI pela paralela ( 25C640, se nao me engano ) . Essas 24Cxxx sao I2C; nao sei se irá ajudar.
Se algum dia precisar do circuito, posso procurar o CD com o projeto em casa.


+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor fabim » 25 Jan 2008 08:30

o Andre.. toca o pau.. meu interesse maior é o maledito do protocolo, as memo da uchipes ainda vai, mais tem uns fabricante que da até dor no zói de tentar ler e interpretar o protocolo, nem carta de tempo os caras colocam.!

fabim
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Re: ajuda mutua.Serial EEPROM.

Mensagempor andre_luis » 28 Jan 2008 07:41

Acho que entendi melhor o problema.
Na verdade, a unica diferença de protocolo dessas memorias é o fato de serem 8, 16 ou 24 bit´s de endereçamento.

A manipulação dos bits é a mesma ( start condition, stop condition, send byte, get byte, etc... ). O que muda é o tamanho do endereço. Segue abaixo um trecho de um programa que já fiz, onde usava a mesma função para memorias diferentes ( montava 24c64 -> 16bit´s, ou 24c16 -> 8bits ).

Código: Selecionar todos
/*--------------------------get_byte-------------------------------*/
unsigned char I2CGetByte( uchar Chip , uchar address )
{
   unsigned char data_value   ;
    I2C_stop_condition();
    Delay(DELAY_PADRAO*10);
    if ( Chip == SELECT_AD7417 ){}
    else
       {   
       I2C_start_condition();                          /* START CONDITION        */
       I2C_send( Chip | ESCRITA ) ;                    /* SLAVE ADDRESS -> WRITE */
       if ( Chip == SELECT_24C64 )   
          I2C_send( PonteiroDaMemoria >> 1 ) ;         /* WORD ADDRESS           */
       I2C_send( address );                            /* WORD ADDRESS           */
       Delay( DELAY_PADRAO*2 );
       }
    I2C_start_condition();                          /* SATRT CONDITION        */
   I2C_send( Chip | LEITURA );                     /* SLAVE ADDRESS -> READ  */
   if ( Chip == SELECT_AD7417 )
       {
//     I2C_send( address );                            /* WORD ADDRESS           */
       data_value = I2C_receive_com_ACK()      ;        /* READ DATA              */
       I2C_receive();                     /* READ DATA              */
       }
    else
       data_value = I2C_receive();                     /* READ DATA              */
   I2C_stop_condition();                           /* STOP CONDITION         */
    Delay( DELAY_PADRAO*75 );                       /* Solucao Empirica       */
   return( data_value );
}


Observa que no caso do 24c64, era enviado 1 byte de endereço a mais.

+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ


Voltar para Circuitos Diversos

Quem está online

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

x