Vitesse 24LC512

Bonjour,

Pour un projet je me sert de puces d'EEPROM 24LC512, j'y écrit et lit l'intégralité de la mémoire à chaque fois que je l'utilise.

(j'ai une puce de SRAM pour servir de buffer, et je stock des clés de sécurités qui prennent toute la mémoire).

Je ne fait au final que peut d'écriture, mais pas mal de lecture, et je cherche un moyen d'accélérer ce processus.

Voici mes fonctions qui permettent d'écrire et de lire le contenue :

// Fonction pour Ecrire l'EEPROM (Argument : Addr_de_EEPROM, Adresse_Memoire, Donnée(en char de 8Bit))
void writeEEPROM(int deviceaddress, unsigned long eeaddress, byte data ) 
{
  Wire.beginTransmission(deviceaddress);
  Wire.write((int)(eeaddress >> 8));   // MSB
  Wire.write((int)(eeaddress & 0xFF)); // LSB
  Wire.write(data);
  Wire.endTransmission();
  delay(5);
}
// Fonction pour Lire l'EEPROM (Argument : Addr_de_EEPROM, Adresse_Memoire)(Ressort en char de 8Bit)
byte readEEPROM(int deviceaddress, unsigned long eeaddress ) 
{
  byte rdata = 0xFF;
  Wire.beginTransmission(deviceaddress);
  Wire.write((int)(eeaddress >> 8));   // MSB
  Wire.write((int)(eeaddress & 0xFF)); // LSB
  Wire.endTransmission();
  Wire.requestFrom(deviceaddress,1);
  if (Wire.available()) rdata = Wire.read();
  return rdata;
}

Je sait que le delay(5); ralentie tout mon code, mais si je le retire je me retrouve avec des données corrompu.
Existe-il un moyen d'accélérer l'EEPROM (et je baisse cette valeur) ou d'écrire directement des blocs entier de donnée ? (genre des block de 32 ou 64 octet, voir plus).

En vous remerciant d'avance,
Cordialement,
Thomas

La lecture de la datasheet t'aurait donné la réponse à tes questions.
L'écriture peut se faire par page de 128 octets. Attention à la gestion des adresses. On ne doit pas franchir la limite d'une page lors de l'écriture sinon on écrase des données au début de la page courante.
On peut faire des lectures multiples, voire lire toute la mémoire en une fois.
En ce qui concerne la durée d'écriture la datasheet décrit une procédure qui permet de vérifier si le cycle d'écriture est terminé afin d'optimiser l'attente.

Bonjour,

Merci pour cette réponse rapide, seulement je suis vraiment nouveau dans ce domaine et je ne sait pas comment coder ça...
Je vais voir si je peut trouver des exemple sur le web, mais effectivement lire et écrire par lot de 128 octet me permettrais d'aller... 128 fois plus vite ^^

Merci pour la piste en tout cas, si jamais quelqu'un à un boue de code qui peut m'aider je serais preneur, je l'adapterais selon mon usage :slight_smile:

Cordialement,
Thomas