[SDIO] Résumé de l'analyse du protocole SD2.0 (deux) - Processus d'identification de la carte SD et de transmission de données

Articles Liés

"[SDIO] Index des articles relatifs à SDIO, carte SD, système de fichiers FatFs"

1. Mode de fonctionnement de la carte SD

Système de carte SD(Y compris l'hôte et la carte SD) définit deux modes de fonctionnement: le mode d'identification de la carte et le mode de transfert de données . Une fois le système réinitialisé, l'hôte est en mode de reconnaissance de carte, à la recherche de périphériques SDIO disponibles sur le bus; en même temps, la carte SD est également en mode de reconnaissance de carte jusqu'à ce qu'elle soit reconnue par l'hôte, c'est-à-dire lorsque le La carte SD reçoit la commande SEND_RCA (CMD3) , la carte SD Elle entrera en mode de transmission de données et l'hôte entrera également en mode de transmission de données une fois que toutes les cartes sur le bus auront été identifiées . Dans chaque mode de fonctionnement, la carte SD a plusieurs états Comme le montre la figure ci-dessous, l'état de la carte peut être commuté via le contrôle de commande.

Mode de fonctionnement État de la carte SD
Mode inactif (inactif) État inactif
Mode d'identification de la carte État de repos
État prêt
État d'identification
Mode de transfert de données État de veille
État du transfert
État d'envoi des données
État de réception des données
État de programmation
État de déconnexion

2. Mode de reconnaissance de la carte SD

En mode de reconnaissance de carte, l'hôte réinitialise toutes les cartes en mode de reconnaissance de carte, vérifie la plage de tension de fonctionnement, reconnaît les cartes et demande ce qu'elles ont émis Relative Card Address(RCA). Cette opération est effectuée séparément sur la ligne de commande CMD de chaque carte. En mode de reconnaissance de carte, toutes les communications de données utilisent uniquement la ligne de commande CMD.

Sur la carte SDProcessus de reconnaissanceDans, la fréquence d'horloge SD fonctionne dans la plage de 100 KHz ~ 400 KHz .

2.1 Réinitialisation de la carte SD

La commande GO_IDLE_STATE (CMD0) est une commande de réinitialisation logicielle, quel que soit l'état dans lequel se trouve la carte actuelle, elle mettra chaque carte à l' état Idle . Les cartes à l' état Inactif ne sont pas affectées par cette commande. Une fois l'hôte mis sous tension, toutes les cartes sont à l' état inactif , y compris les cartes qui étaient auparavant à l' état inactif .

CMD0Après la mise sous tension ou , les lignes de données CMD de toutes les cartes sont en mode d'entrée, attendant de recevoir la commande suivante. Ces cartes sont initialisées avec une adresse relative de carte SD par défaut ( RCA=0x0000), et définissent le registre de niveau de pilote de carte SD ( DSR) par défaut sur la vitesse la plus basse et la capacité de lecteur la plus élevée.

2.2 Confirmation des conditions de fonctionnement de la carte SD

Lorsque l'hôte et la carte SD commencent à communiquer, l'hôte peut ne pas connaître la tension prise en charge par la carte SD et la carte SD peut ne pas savoir si elle prend en charge la tension actuellement fournie. L'hôte envoie une commande de réinitialisation ( CMD0) et suppose que sa tension peut être prise en charge par la carte SD. Afin de vérifier la tension, les nouvelles commandes suivantes ( ) sont définies dans le document "Physical Layer Specification Version 2.00"CMD8 .

SEND_IF_COND( CMD8) Utilisé pour vérifier les conditions de fonctionnement de l'interface de la carte SD. Carte SD en analysant l' CMD8efficacité du paramètre de condition de fonctionnement détecté, l'hôte analyse CMD8la réponse pour vérifier la validité des conditions de fonctionnement. La tension fournie est spécifiée CMD8par le champ de paramètre VHS de la commande. La carte SD utilise la tension spécifiée dans VHS comme tension actuelle fournie. parCRCavecVérifier le motif('10101010b') pour vérifier la validité de la communication entre l'hôte et la carte SD.

  • Si la carte SD prend en charge le fonctionnement sur la tension fournie, la tension fournie et le motif de vérification ('10101010b') seront inclus dans les paramètres de commande de réponse .
  • Si la carte SD ne prend pas en charge le fonctionnement à la tension fournie, elle reviendra sans aucune réponse et restera à l' état inactif . Pour initialiser la carte mémoire SD de grande capacité, elle doit être ACMD41envoyée avant la première CMD8(voir Figure 4-1 ci-dessous). La réception CMD8peut être reconnue par la carte SD, et l'hôte doit prendre en charge "Physical Layer Specification Version 2.00" et la carte SD pour prendre en charge cette nouvelle fonction.

SD_SEND_OP_COND( ACMD41) Est conçu pour fournir un mécanisme permettant à l'hôte d' identifier et de rejeter les cartes qui ne correspondent pas à la plage V DD fournie par l'hôte . Si la carte SD ne peut pas transmettre de données dans la plage spécifiée, elle doit abandonner le fonctionnement du bus et passer à l' état Inactif . Le registre OCR définit le niveau de tension pertinent.

Remarque: il ACMD41s'agit d'une commande spécifique à l'application, donc APP_CMD (CMD55) doit toujours être envoyée avant ACMD41. Le RCA utilisé pour CMD55 dans idle_state sera la valeur par défaut de la carte SD (RCA = 0x0000).

Insérez la description de l'image ici
En le mettant à 0 dans ACMD41le paramètre de la commande ,OCRHébergerVous pouvez interroger chaque carte et déterminerPlage de tension commune, Et puis envoyez la carte hors de portée à l' état Inactif . ACMD41Juste envoyée sous forme de requête, la carte SD ne commencera pas à s'initialiser. Après cela, l'hôte peut sélectionner une tension de fonctionnement et, dans ce cas, renvoyer ACMD41 pour envoyer la carte incompatible à l' état Inactif . Pendant le processus d'initialisation, l'hôte n'est pas autorisé à modifier la plage de tension de fonctionnement.

2.3 Processus d'initialisation et de reconnaissance de la carte SD

Une fois le bus activé, l'hôte démarre le processus d'initialisation et d'identification de la carte SD (reportez-vous à la Figure 4-2 ci-dessous). À partir du processus d'initialisation SD_SEND_OP_COND() ACMD41commence par définir les conditions de fonctionnement, et OCR( Operation Conditions Register) en HCS( Host Capacity Support) bits.

Le bit HCS (Host Capacity Support) est défini sur:

  • 1: indique que l'hôte prend en charge les cartes mémoire SD de grande capacité .
  • 0: indique que l'hôte ne prend pas en charge les cartes mémoire SD de grande capacité .

Utilisez la CMD8expansé ACMD41fonction de la commande, les ACMD41paramètres HCS seront envoyées lorsque la commande est envoyée , et le ACMD41correspondantréponseVers R3 (le registre OCR) , comprenant: la plage de tension V DD , l'état de la capacité de la carte SD du CCS (la capacité de la carte d'état) . Si la carte SD n'a pas de CMD8 correspondant, le paramètre ACMD41 HCS sera ignoré par la carte SD. Cependant, si la carte ne renvoie pas de réponse à CMD8, l'hôte doit mettre HCS à 0 . Les cartes SD de capacité standard ignoreront HCS . Si HCS est réglé sur 0 , la carte SD de grande capacité ne retournera jamais à l' état prêt (gardez le bit occupé à 0). Le bit occupé dans l' OCR est utilisé par la carte SD pour informer l'hôte si l'initialisation d'ACMD41 est terminée.

Le bit occupé dans l'OCR est défini sur:

  • 0: indique que la carte SD est toujours à l' état d'initialisation .
  • 1: indique que l' initialisation de la carte SD est terminée .

L'hôte envoie à plusieurs reprises ACMD41 jusqu'à ce que le bit occupé soit défini sur 1 .carte SDVérifiez uniquement les conditions de fonctionnement et les bits HCS dans l' OCR au premier ACMD41 . Lors de la répétition de ACMD41, l'hôte ne doit pas émettre d'autres commandes à l'exception de CMD0.

Lorsque la carte répond à CMD8, la réponse d'ACMD41 contient des informations de champ CCS. Lorsque la carte SD revient sur Prêt (le bit occupé est défini sur 1), CCS prend effet.

CCS (Card Capacity Status) est réglé sur:

  • 0: indique que la carte est une carte mémoire SD de capacité standard
  • 1: indique que la carte est une carte mémoire SD haute capacité

L'hôte exécute la même séquence d'initialisation pour toutes les nouvelles cartes du système et les cartes incompatibles seront envoyées à l' état Inactif . Ensuite, l'hôte envoie une commande ALL_SEND_CID(CMD2) à chaque carte pour obtenir son numéro d'identification de carte unique (CID). La carte non reconnue (c'est-à-dire la carte à l'état prêt) envoie son numéro CID en réponse (sur la ligne CMD). Une fois que la carte a envoyé le CID, elle entre dans l'état de reconnaissance. Ensuite, l'hôte envoie CMD3 (SEND_RELATIVE_ADDR) pour demander à la carte d'émettre une nouvelle adresse de carte relative (RCA), qui est plus courte que le CID et sera utilisée pour adresser la carte dans les futurs modes de transmission de données. Une fois le RCA reçu, l'état de la carte SD passera à l' état de veille . À ce stade, si l'hôte souhaite attribuer un autre numéro RCA, il peut demander à la carte d'émettre un nouveau numéro en envoyant une autre commande CMD3 à la carte. Le dernier RCA publié est le numéro RCA réel de la carte SD.

Insérez la description de l'image ici

3. Mode de transfert de données de la carte SD

Avant la fin du mode de reconnaissance de la carte SD , l'hôte doit maintenir la fréquence f OD (400 kHz) , car pendant le mode de reconnaissance de la carte SD , certaines cartes SD peuvent avoir des restrictions de fréquence de fonctionnement. En mode de transfert de données , l'hôte peut faire fonctionner la carte dans la plage de fréquences f PP (25 MHz) . L'hôte envoie SEND_CSD(CMD9) pour obtenir des données liées à la carte SD (registre CSD), telles que la longueur du bloc, la capacité de stockage de la carte, etc.

La commande de diffusion SET_DSR(CMD4) configure le registre d'étape du pilote de toutes les cartes d'identification . Il est programmé en fonction de la disposition (longueur) du bus d' application , du nombre de cartes sur le bus et de la fréquence de transmission des donnéesRegistre DSR. La fréquence d'horloge est également commutée de f OD à f PP . SET_DSRLa commande est une option (non nécessaire) pour la carte SD et l'hôte .

CMD7 permet de sélectionner une carte SD et de la placer dans l'état de transmission , en même temps, il ne peut y avoir qu'une seule carte en état de transmission . Si la carte précédemment sélectionnée est dans l' état de transmission , sa connexion avec l'hôte sera libérée et elle retournera à l' état de veille. Lorsque CMD7 est envoyé avec l'adresse de carte par rapport réservé « 0x0000 », toutes les cartes sont retournées au stand par l' État.

Remarque: l'hôte réserve RCA = 0x0000 pour la sélection de sortie.

Insérez la description de l'image ici
Cela peut être utilisé avant que la nouvelle carte ne soit reconnue, sans réinitialiser les autres cartes enregistrées. Une fois que la carte SD dans cet état a un RCA, elle ne répondra pas aux commandes d'identification (par exemple: ACMD41, CMD2).

Remarque: Si la carte SD confirmée obtient un RCA qui ne correspond pas au CMD7, la carte sera désélectionnée.

Ce qui suit résume la relation entre les différents modes de transmission de données:

  • Toutes les commandes de lecture de données peuvent être abandonnées à tout moment par la commande d'arrêt (CMD12). Le transfert de données sera interrompu et la carte SD retournera à l' état de transfert . Les commandes de lecture comprennent: la lecture de bloc (CMD17), la lecture de plusieurs blocs (CMD18), la protection contre l'écriture d'envoi (CMD30), l'envoi de scr (ACMD51) et les commandes générales pour le mode de lecture (CMD56).
  • Toutes les commandes d'écriture de données peuvent être abandonnées à tout moment par la commande d'arrêt (CMD12). Avant que CMD7 n'annule la sélection de la carte, il doit arrêter d'écrire des commandes. Les commandes d'écriture comprennent: l'écriture de bloc (CMD24 et CMD25), le programme CSD (CMD27), la commande de verrouillage / déverrouillage (CMD42) et la commande normale en mode d'écriture (CMD56).
  • Une fois le transfert de données terminé, la carte SD quittera l'état d'écriture des données et passera à l' état de programmation (Transmis avec succès) Ou statut de transfert (Échec de la transmission)。
  • Si une opération d'écriture de bloc est arrêtée et que la longueur de bloc et le CRC du dernier bloc sont valides, les données seront programmées.
  • La carte SD peut fournir une mise en mémoire tampon pour les écritures de bloc. Cela signifie que pendant que le bloc précédent est programmé, le bloc suivant peut être envoyé sur la carte SD. Si tous les tampons d'écriture sont pleins, tant que la carte SD est dans l' état de programmation (voir le diagramme d'état de la carte SD dans la Figure 4-3), la ligne DAT0 restera au niveau bas (BUSY) .
  • Il n'y a pas d'options de mise en mémoire tampon pour l'écriture CSD, la protection en écriture et l'effacement. Cela signifie que lorsque la carte SD est occupée à traiter l'une de ces commandes, les autres commandes de transmission de données ne seront pas acceptées. Tant que la carte est occupée et en état de programmation , la ligne DAT0 restera au niveau bas .
  • Lorsque la carte est en programmation, la commande de paramétrage n'est pas autorisée. Les commandes de paramétrage comprennent: définir la longueur du bloc (CMD16), effacer le début du bloc (CMD32) et effacer la fin du bloc (CMD33).
  • Lorsque la carte est en cours de programmation, elle n'est pas autorisée à lire les commandes.
  • Déplacement une autre carte du Stand-by Etat au transfert état ( à l' aide CMD7) ne sera pas fin aux opérations d'effacement et de programme. La carte passera à l' état Déconnecté et la ligne DAT sera libérée.
  • Dans l' état Déconnecté , vous pouvez utiliser CMD7 pour resélectionner la carte. Dans ce cas, la carte passera à l' état de programmation et réactivera l'indication d'occupation.
  • La réinitialisation de la carte SD (à l'aide de CMD0 ou CMD15) mettra fin à toutes les opérations de programmation en attente ou en cours. Cela peut détruire le contenu des données sur la carte. Il est de la responsabilité de l'hôte d'empêcher que cela se produise.
  • Les CMD34-37, CMD50, CMD57 sont réservés à l'extension du système de commande SD. Les transitions d'état de ces commandes sont définies dans chaque spécification de système de commande.

4. Références

Les informations référencées par SDIO sont les suivantes: L'
Insérez la description de l'image ici
adresse de téléchargement est la suivante:
https://download.csdn.net/download/ZHONGCAI0901/14975835

Je suppose que tu aimes

Origine blog.csdn.net/ZHONGCAI0901/article/details/113485583
conseillé
Classement