Je travaille sur un appareil qui utilise la bibliothèque Microchip MDDFS pour stocker des données sur une carte SD. L'enregistreur enregistrera les données à un taux maximum de 1 entrée (56 octets) chaque minute. Le problème est que le périphérique peut perdre de l'énergie à tout moment, potentiellement au milieu d'une séquence d'écriture. Je me demande quelle est la meilleure façon de protéger mes données contre la corruption. J'ai constaté que si le fichier est ouvert lorsque l'alimentation est coupée, toutes les données qui ont été écrites dans le fichier après la dernière fermeture de fichier sont perdues. Je ne sais pas s'il en va de même en cas de perte de puissance au milieu de la séquence d'écriture.
Étant donné que la procédure d'écriture ne se produit pas très fréquemment, je pourrais ouvrir le fichier, écrire les données, puis fermer le fichier, chaque fois que les données sont enregistrées. Cette approche endommagerait-elle la carte SD au fil du temps?
Une autre approche pourrait être de garder le fichier ouvert, mais après chaque 10 ou 50 écritures, je pourrais fermer le fichier, puis le rouvrir.
Je pourrais également mettre les données en mémoire tampon, puis vider les données de temps en temps, peut-être après un kilo-octet.
La dernière idée que j'ai eue était, dans mon circuit, je pouvais ajouter un grand condensateur qui alimenterait ma carte pic / sd assez longtemps après la coupure de l'alimentation pour fermer rapidement le fichier. Le problème avec cette approche est que le temps nécessaire pour fermer le fichier et / ou enregistrer les données est très incohérent. D'après ma compréhension, cette fois peut très dépendre de la place actuelle dans une page flash dans laquelle se trouve le fichier.
Quoi qu'il en soit, que suggéreriez-vous?