J'ai besoin d'une solution de mémoire qui va être utilisée pour garder une trace du nombre accumulé sur un projet basé sur un microcontrôleur.
Par comptage accumulé, je veux dire que le microcontrôleur utilise cet emplacement de mémoire pour compter le nombre d'occurrences d'un événement. Le comptage doit être conservé pendant les coupures de courant, d'où la nécessité d'une mémoire NON VOLATILE.
De plus, l'occurrence de l'événement d'incrémentation de comptage est fréquente, d'où de nombreuses écritures dans la mémoire, d'où mon hésitation à utiliser l'EEPROM.
L'interface de communication préférée sera I2C, mais d'autres alternatives sont les bienvenues.
Du haut de ma tête, j'imagine un circuit intégré de mémoire volatile à faible puissance SRAM avec la possibilité d'être alimenté par une batterie de secours comme une pile bouton lors des coupures de courant.
Réponses:
Trois types de mémoire non volatile correspondent à vos besoins, par ordre de taille disponible:
En termes de coût, FRAM est le meilleur. Tout ce dont vous avez besoin est à l'intérieur de la puce, y compris des condensateurs de sauvegarde pour terminer l'écriture. Cependant, les tailles disponibles sont faibles.
La batterie de secours SRAM est volumineuse et coûteuse en matériaux.
L'EEPROM avec niveau d'usure nécessite un micrologiciel pour gérer le niveau d'usure.
la source
Voici ce que j'ai fait sur un produit encore en production de masse.
Il s'est avéré qu'il y avait environ 10 à 20 ms de temps entre le déclencheur à basse tension et le moment où le circuit intégré de gestion de l'alimentation s'est déclenché et a tout arrêté (de manière ordonnée). Que cela fonctionne ou non dépend du stockage d'énergie dans votre alimentation électrique, mais même une petite alimentation peut ralentir suffisamment cela pour que vous puissiez écrire un petit ensemble de données de manière fiable.
la source
Toggle MRAM (RAM magnétorésistive) aurait une endurance d'écriture effectivement infinie (ils ne sont au courant d'aucun mécanisme qui entraînerait l'usure de l'écriture). Je ne connais pas de telles puces qui parlent I2C, cependant, vous devriez donc vous contenter de SPI. En voici une partie: https://www.digikey.com/product-detail/en/everspin-technologies-inc/MR25H256ACDF/819-1064-ND/8286370
la source
On dirait que vous pouvez simplement utiliser une puce ou un module d'horloge RTC. Ceux-ci ont une batterie de secours, une SRAM supplémentaire pour les données utilisateur et sont livrés avec une interface I2C.
Ou utilisez simplement un MCU avec SRAM alimenté par batterie, donc aucun composant externe n'est nécessaire.
la source
Cypress fait ce qu'ils appellent SRAM non volatile . Il s'agit d'une mémoire SRAM standard qui sauvegarde automatiquement en cas de panne de courant. Puisqu'il n'écrit que dans la mémoire non volatile en cas de panne de courant, sa durabilité est potentiellement beaucoup plus élevée. Il est disponible en versions série et parallèle. Cela peut être un peu exagéré, car le plus petit fait 64 Ko.
la source
Pour une seule variable de 4 octets, l'EEPROM conviendrait parfaitement.
Disons que vous y écrivez une fois par seconde et que vous avez une EEPROM typique de 32 Ko et que nous allons avec une endurance conservatrice de 100 000 cycles d'écriture.
Vous pouvez écrire vos 4 octets 8000 fois avant de devoir effacer. Cela devrait donc être 800 millions de fois que vous pouvez l'écrire même en utilisant une estimation prudente.
Maintenant, il n'y a que 31,5 millions de secondes par an, donc à une écriture par seconde, il faudrait 25 ans pour atteindre l'estimation bas de gamme de l'endurance EEPROM.
la source
Il y a beaucoup d'options ici, mais le vrai problème est d'empêcher les données d'être corrompues. Une perte de puissance pendant une écriture pourrait corrompre les données. I2C est une bonne option pour éviter cela, car par exemple avec SPI, vous pouvez constater qu'une écriture apparaît (du point de vue de la mémoire) pour terminer à mi-chemin de la mise à jour, disons 4 octets d'un mot de 32 bits. I2C est un peu plus robuste, mais seulement un peu.
Mon conseil serait de stocker 4 copies de la valeur. De cette façon, même si l'écriture est interrompue, deux correspondront toujours.
FRAM ou similaire est probablement la meilleure option.
la source