Important: Veuillez noter que cette page a été traduite avec la traduction automatique de notre article en anglais. Nous nous excusons pour la qualité de la traduction. Vous êtes invités à contribuer avec des corrections.
Merci

Regardez le Tutoriel vidéo: Connexion

Cartes mémoire

Une carte mémoire (également appelée une carte mémoire flash) est un dispositif de stockage de données électroniques à l’ état solide utilisé pour stocker des informations numériques. Ils sont couramment utilisés dans de nombreux appareils électroniques, y compris les appareils photo numériques, téléphones portables, ordinateurs portables, lecteurs MP3 , etc.
Ils sont petits, réinscriptible et sont en mesure de conserver les données sans pouvoir.
Cette capacité de conserver les données et la possibilité de ré-écrire plusieurs fois est la clé pour les applications de carte mémoire flash, par exemple, dans les appareils photo numériques, où les images enregistrées ne sont pas perdues après la carte mémoire est retirée de l’appareil. Il y a beaucoup de différents types de cartes mémoire disponibles sur le marché aujourd’hui. Certaines des cartes mémoire les plus connus sont:

  • carte Smart Media (SM)
  • carte multimédia (MMC)
  • carte Compact Flash (CF)
  • Memory Stick carte (MS)
  • Microdrive
  • carte xD
  • Carte Secure Digital (SD): Les cartes SD sont les cartes mémoire les plus utilisées aujourd’hui. Ils sont basés sur MMC et en termes de fonctionnalités, ils sont les mêmes (sauf que la SD dispose d’une fonction de cryptage en option). Le SD sont physiquement plus épais que RHM et ne rentrait pas dans les fentes de MMC. Le MMC, d’autre part, peut être facilement inséré dans les fentes de carte SD.

Les cartes SD sont disponibles en trois tailles différentes: normale SD, miniSD et microSD comme indiqué sur la figure 1 ci-dessous:

Cartes SD                      

Carte SD MiniSD MicroSD
Figure 1: Cartes SD

Tableau 1: Propriétés techniques des cartes mémoire

Note:  les nouvelles cartes SDXC ont la capacité jusqu’à 2 To.

La plupart des cartes SD et MMC en particulier ceux de taille inférieure à 2 gigaoctets (Go), utilisez la norme FAT16.
La norme FAT32 peut être utilisée pour répondre à la mémoire de taille entre 2 gigaoctets et 2 téraoctets.

Carte SD Pin Configuration
La carte dispose de neuf broches, comme le montre la figure 2 ci – dessous, et un commutateur de protection en écriture pour activer / désactiver l’ écriture sur la carte.

broches de la carte SD

Figure 2: broches de la carte SD

Une carte SD standard peut fonctionner en deux modes: le mode de bus SD et le SPI en mode Bus.
En mode Bus SD, toutes les broches de la carte sont utilisées, les données sont transférées à l’ aide de quatre broches (D0-D3), une broche d’horloge (CLK), et une ligne de commande (CMD).
En  SPI mode de bus en  utilisant une sélection de puce (CS) et une ligne de CLK. Les broches suivantes sont utilisées dans le mode SPI Bus:

  • Chip sélectionnez: Pin 1
  • Données: Pin 2
  • Horloge: Pin 5
  • Les données sur: Pin 7
  • Positif: Pin 4
  • Sol: Pin 3 et 6

La carte fonctionne avec une tension d’alimentation de 3,3 V , et ce sont les niveaux logiques: la
logique maximum 0 tension de sortie, VOL = 0,4125 V
logique minimum une tension d’entrée, VIH = 2,0625 V
logique maximum une tension d’entrée = 3,6 V
logique requise maximum 0 tension d’entrée , VIL = 0,825 V
Lorsqu’il est connecté à un microcontrôleur PIC, la tension de sortie (2,475 V) de la carte SD pour le PIC est suffisant pour entraîner le circuit d’entrée du microcontrôleur, mais la logique typique une tension de sortie d’une broche de microcontrôleur PIC est 4,3 V, ce qui est trop pour appliquer à la carte, où la tension maximale ne doit pas dépasser 3,6 V. en raison de cela, il est nécessaire d’utiliser des résistances aux entrées de la carte SD pour abaisser la tension d’entrée.

Les cartes SD peuvent être interfacés à l’ aide de microcontrôleurs deux protocoles différents: Le protocole de carte SD et le protocole SPI. Le protocole SPI est le protocole le plus utilisé pour le moment. Dans ce tutoriel, nous allons utiliser le protocole SPI.
La figure 3 ci – dessous montre une interface typique de la carte SD à un microcontrôleur PIC en mode SPI. Sur cette figure, 2.2K 3.3K et résistances sont utilisés comme un circuit de diviseur de tension pour abaisser la tension d’entrée de carte SD à environ 2,48 V, comme indiqué ci – dessous.

Tension d’entrée carte SD = 4,3 V × 3,3 K / (K + 2,2 3,3 K) = 2,48 V .

carte SD connecté en mode SPI à Port C de PIC Microcontroller

Figure 3: carte SD connecté en mode SPI à Port C de Microcontrôleurs PIC.

En savoir plus sur Compagnon étudiant:

Microcontrôleurs PIC Communication avec SPI Bus

Les cartes SD peuvent consommer jusqu’à 100-200 mA pendant la lecture ou l’ écriture sur la carte. Cela est généralement un courant élevé, et un régulateur de tension appropriée capable de fournir le courant nécessaire doit être utilisé dans la conception.
La carte consomme environ 150 pA dans le sommeil (la carte passe automatiquement en mode veille si elle ne reçoit aucune commande en 5ms). La figure 4 ci – dessous montre une carte SD connecté à PIC18F45K22

Interfacer carte SD à PIC18F45K22

Figure 4: Interfacing carte SD avec PIC18F45K22

FATFS Bibliothèque de Chan 

Lecture et écriture sur des cartes SD est très complexe et nécessite des fonctions et des procédures complexes pour gérer la carte d’ entrée / sortie correctement les opérations. Pour ceux qui ne veulent pas comprendre le fonctionnement interne des cartes SD, il existe de nombreuses bibliothèques de carte SD que l’ on peut utiliser. Microchip Bibliothèques pour les applications  File I / O (Memory Disk Drive) est plus pris en charge pour 8 bits microcontrôleurs PIC (PIC16F et PIC18F) à la version moment 1.02. Cette version est destinée aux microcontrôleurs PIC 16 bits (PIC24 & dsPIC33). La dernière version prise en charge 8 bits (v1.44 CDEM) a été dans les bibliothèques Microchip pour les applications v2013-06-15. Le problème de cette bibliothèque de fichiers ont été faites pour l’ancien compilateur MPLAB 8 et il est embêtant de les faire travailler avec le nouveau MPLAB X. Dans cet article, nous allons utiliser le populaire Système FATFS générique FAT Chan Fichier Module .

Regardez le Tutoriel vidéo: FATFS Library

Le FATFS est un système de fichiers FAT générique, est une implémentation FAT entièrement libre sous la forme d’un module d’ interface bibliothèque et d’application, destinée aux petits systèmes embarqués. Le module FATFS est écrite en conformité avec la norme ANSI C (C89) et complètement séparée de la couche d’E / S disque. Il est donc indépendant de la plate – forme. Il peut être incorporé dans de petits microcontrôleurs avec des ressources limitées, telles que 8051, PIC, AVR, ARM, Z80, 78K et etc. Il y a également le module Petit FATFS pour les petits microcontrôleurs (RAM: 44 octets zone de travail + certaine pile, la taille du code: 2K-4K octets).  FATFS FAT générique du système de fichiers Module de Chan  Site Web, A des ressources beaucoup qui peuvent vous aider à comprendre cette bibliothèque: Des exemples de micro-contrôleurs différents, les fichiers d’aide, etc. Description des fonctions

Description de certaines fonctions de FATFS

f_mount
Cette fonctioninscrire / désinscrire une zone de travail (support carte SD). Cette fonction doit toujours être appelée avant toute autre fonction de fichiersexception defonction f_fdisk
Paramètres: 
objet système de fichiers: pointeur vers l’objet du système de fichiers à enregistrer et effacé. Pointeur NULL désinscrit l’objet système de fichiers enregistré. exemple: FATFS FATFS
numéro d’unité logique : pointeur vers la chaînezéro terminal qui spécifie l’unité logique. La chaîne sans numéro de lecteurle lecteur par défaut. exemple: « » pourpilote par défaut.
Option d’initialisation: 0: Ne pas monter maintenant (à monter plus tard), 1: Force monté le volume pour vérifier si le volume FAT est prêt à fonctionner.
Valeurs de retour:Lorsqu’une fonction a réussi, il renvoie zéro, sinon retourne la valeur non-zéro qui indique le type d’erreur. FR_OK (0: la fonction a réussi.), FR_INVALID_DRIVE, FR_DISK_ERR, FR_NOT_READY, FR_NO_FILESYSTEM
Exemple:

f_open
Cette fonction Ouvrir / Créer un fichier.
Paramètres: 
structure de l’ objet du fichier: pointeur vers la structure deobjet fichier vide. Exemple: Fil FIL
Nom du fichier: pointeur sur la chaîne terminéezéro qui spécifie le nom du fichier à ouvrir oucréer. Exemple: « test.txt »
drapeaux du mode: spécifie le type d’accès et méthode ouverte pour le fichier. Il est précisé par une combinaison d’indicateurs suivants:

  • FA_OPEN_ALWAYS: Ouvre le fichier si elle est existante. Dans le cas contraire, un nouveau fichier sera créé.
  • FA_READ: Les données peuvent être lues à partir du fichier.
  • FA_WRITE: Les données peuvent être écrites dans le fichier. Combiner avec FA_READ pour un accès en lecture-écriture.
  • FA_CREATE_NEW: Crée un nouveau fichier. La fonction échoue si le fichier est existant.
  • FA_CREATE_ALWAYS: Crée un nouveau fichier. Si le fichier est existant, il sera tronqué et écrasé.
  • FA_OPEN_EXISTING: Ouvre le fichier. La fonction échoue si le fichier est existant. (Défaut)

Valeurs de retour : Lorsqu’une fonction a réussi, il renvoie zéro, sinon retourne la valeur non nulle qui indique le type d’erreur. FR_OK (0: la fonction a réussi.)
Exemple:

f_read
Cette fonction lit les données à partir d’ un fichier de
paramètres:  fResult f_read (* fp FIL, void * buff, UINT BTR, UINT * br);
Objet fichier: pointeur vers l’objet fichier ouvert.
tampon: pointeur vers la mémoire tampon pour stocker des données lu.
BTR: Nombre d’octets à lire dans la gamme de type UINT.
br: pointeur vers la variable UINT pour revenir nombre d’octets lus. La valeur est toujours valide après l’appel de fonction quel que soit le résultat.
Valeurs de retour: Lorsqu’une fonction a réussi, il renvoie zéro, sinon retourne la valeur non nulle qui indique le type d’erreur. FR_OK (0:. La fonction a réussi)
f_write
Cette fonction écrit des données dans un fichier.
Paramètres: FResult f_write (FIL * fp, chamois const void *, UINT BTW, UINT * pc);
fp: pointeur vers la structure de l’ objet fichier ouvert.
buff: pointeur sur les données à écrire.
BTW: Indique le nombre d’octets à écrire dans la gamme de type UINT.
pc: pointeur vers la variable UINT pour retourner le nombre d’octets écrits. La valeur est toujours valide après l’appel de fonction quel que soit le résultat.
Exemple:

f_lseek
Cette fonction déplace le fichier pointeur de lecture / écriture d’un objet fichier ouvert. Il peut également être utilisé pour augmenter la taille du fichier (pré-allocation cluster).
Paramètres: fResult f_lseek (* fp, PIF ofs DWORD);
fp: pointeur vers l’objet fichier ouvert.
ofs: Décalage d’ octet du haut du fichier.
f_gets
Cette fonction lit une chaînepartir du fichier.
TCHAR * f_gets (
TCHAR * buff, / * [OUT] Lire tampon * /
int len, / * [IN] Taille de la mémoire tampon de lecture * /
FIL * fp / * [IN] objet File * /
);
f_putc
Ce funciton met un personnage au fichier.
int f_putc (
TCHAR chr, / * [IN] Un personnage à mettre * /
FIL * fp / * [IN] objet File * /
);
f_puts
Cette fonction écrit une chaîne dans le fichier.
int f_puts (
const TCHAR * str, / * [IN] String * /
FIL * fp / * [IN] objet de fichier * /
);
f_printf
Cette fonction écrit chaîne formatée dans le fichier.
int f_printf (
FIL * fp, / * [IN] objet fichier * /
const TCHAR * fmt, / * [IN] Format stirng * /

);
f_size
Cette fonction obtient la taille d’un fichier.
F_size DWORD (
FIL * fp / * [IN] objet File * /
);
f_close
Cette fonction ferme un fichier ouvert.
FResult f_close (
FIL * fp / * [IN] pointeur vers l’objet de fichier * /
);
Plus de détails peuvent être obtenus à partir du populaire système de fichiers FAT FATFS générique de Chan Module . site Internet.

L’interface du disque entrée / sortie

Etant donné que le module FATFS est complètement séparé de la couche d’entrée/sortie du disque, il faut au moins les suivantes 
fonctions pour accéder au support physique: 
• disk_initialize – Initialiser disque dur 
• disk_status – Obtenir l’ état disque 
• disk_read – secteur Lire (s) 
• disk_write – secteur d’écriture (s) 
• disk_ioctl – caractéristiques dépendant du dispositif de commande 
• get_fattime – Retourne l’ heure actuelle 
Le module disque faible niveau d’ E / s ne fait pas partie du module FATFS afin qu’il doit être fournie par l’utilisateur ce sont les routines de communication de bus SPI . Ceux – ci sont configurés dans le fichier Diskio.h en utilisant les fonctions SPI générées par MPLAB code Configurator.

MPLAB code Configurator

Le code ci-dessous est le fichier Diskio.h modifié:

Il existe de nombreuses options pour configurer les fonctions de FATFS pour chaque projet. Les options de configuration sont définies dans le ffconf.h.

Regardez le tutoriel vidéo: Code

Le code ci-dessous est un fichier main.c. Dans cet exemple, un fichier « test.txt » est créé, puis ouvrez et un message texte est écrit dans ce: « Bonjour tout le monde! Ceci est un message de texte écrit à la carte SD ».

Vous pouvez télécharger les fichiers de projet complet (code source MPLAB XC8 et Proteus conception schématique) ci – dessous ici. Tous les fichiers sont compressés, vous aurez besoin de les dézipper ( Télécharger une version gratuite de l’utilitaire Winzip pour décompresser les fichiers ).

Télécharger MPLAB X Project:  SD_Card_FatFs