[SDIO] Resumo da análise do protocolo SD2.0 (dois) - Identificação do cartão SD e processo de transmissão de dados

Artigos relacionados

"[SDIO] Índice de artigos relacionados a SDIO, cartão SD, sistema de arquivos FatFs"

1. Modo de operação do cartão SD

Sistema de cartão SD(Incluindo o host e o cartão SD) define dois modos de operação: o modo de identificação do cartão e o modo de transferência de dados . Após a reinicialização do sistema, o host entra em modo de reconhecimento de cartão, procurando dispositivos SDIO disponíveis no barramento; ao mesmo tempo, o cartão SD também está em modo de reconhecimento de cartão até que seja reconhecido pelo host, ou seja, quando o O cartão SD recebe o comando SEND_RCA (CMD3) , o cartão SD entrará no modo de transmissão de dados e o host também entrará no modo de transmissão de dados depois que todos os cartões no barramento forem identificados . Em cada modo de operação, o cartão SD possui vários estados, conforme mostrado na figura abaixo, o estado do cartão pode ser alterado através do controle de comando.

Modo de operação Status do cartão SD
Modo inativo (inativo) Estado inativo
Modo de identificação do cartão Estado inativo
Estado pronto
Estado de Identificação
Modo de transferência de dados Estado de espera
Estado de transferência
Estado de envio de dados
Estado de recebimento de dados
Estado de Programação
Estado de desconexão

2. Modo de reconhecimento de cartão SD

Quando no modo de reconhecimento de cartão, o host reinicia todos os cartões no modo de reconhecimento de cartão, verifica a faixa de voltagem operacional, reconhece os cartões e pergunta o que eles emitiram Relative Card Address(RCA). Esta operação é executada separadamente na linha de comando CMD de cada cartão. No modo de reconhecimento de cartão, toda comunicação de dados usa apenas a linha de comando CMD.

No cartão SDProcesso de ReconhecimentoEm, a frequência do relógio SD funciona na faixa de 100 KHz a 400 KHz .

2.1 Reinicialização do cartão SD

O comando GO_IDLE_STATE (CMD0) é um comando de reinicialização do software, não importa em que estado a placa atual esteja, ele definirá cada placa para o estado Ocioso . Os cartões no estado Inativo não são afetados por este comando. Depois que o host é ligado, todos os cartões ficam no estado Ocioso , incluindo os cartões que estavam anteriormente no estado Inativo .

CMD0Depois de ligar ou , as linhas de dados CMD de todos os cartões estão no modo de entrada, esperando para receber o próximo comando. Esses cartões são inicializados com um endereço relativo do cartão SD padrão ( RCA=0x0000) e configuram o registro do nível do driver do cartão SD ( DSR) para o padrão com a velocidade mais baixa e a capacidade do drive mais alta.

2.2 Confirmação das condições de operação do cartão SD

Quando o host e o cartão SD começam a se comunicar, o host pode não saber a voltagem suportada pelo cartão SD e o cartão SD pode não saber se suporta a voltagem fornecida atualmente. O host envia um comando de reinicialização ( CMD0) e assume que sua voltagem pode ser suportada pelo cartão SD. Para verificar a tensão, os seguintes novos comandos ( ) são definidos no documento "Physical Layer Specification Version 2.00"CMD8 .

SEND_IF_COND( CMD8) Usado para verificar as condições de operação da interface do cartão SD. No cartão SD, analisando a CMD8eficácia do parâmetro de condição de operação detectado, o host analisa CMD8a resposta para verificar a validade das condições de operação. A tensão fornecida é especificada CMD8pelo campo do parâmetro VHS do comando. O cartão SD usa a tensão especificada em VHS como a tensão atual fornecida. deCRCcomVerificar padrão('10101010b') para verificar a validade da comunicação entre o host e o cartão SD.

  • Se o cartão SD suportar operação na tensão fornecida, a tensão fornecida e o padrão de verificação ('10101010b') serão incluídos nos parâmetros de comando de resposta .
  • Se o cartão SD não suportar o funcionamento com a tensão fornecida, ele retornará sem qualquer resposta e permanecerá no estado Ocioso . Para inicializar o cartão de memória SD de grande capacidade, ele deve ser ACMD41enviado antes do primeiro CMD8(consulte a Figura 4-1 abaixo). O recebimento CMD8pode ser reconhecido pelo cartão SD e o host precisa oferecer suporte a "Physical Layer Specification Version 2.00" e o cartão SD para oferecer suporte a esta nova função.

SD_SEND_OP_COND( ACMD41) É projetado para fornecer um mecanismo para o host identificar e rejeitar cartões que não correspondam ao intervalo de V DD fornecido pelo host . Se o cartão SD não puder transmitir dados dentro da faixa especificada, ele deve abandonar a operação do barramento e entrar no estado Inativo . O registro OCR define o nível de tensão relevante.

Nota: É ACMD41um comando específico do aplicativo, portanto APP_CMD (CMD55) deve ser sempre enviado antes de ACMD41. O RCA usado para CMD55 em idle_state será o valor padrão do cartão SD (RCA = 0x0000).

Insira a descrição da imagem aqui
Definindo-o como 0 no ACMD41parâmetro do comando ,OCRHospedeiroVocê pode consultar cada cartão e determinarFaixa de tensão comum, Em seguida, envie o cartão fora de alcance para o estado Inativo . ACMD41Enviado apenas como uma consulta, o cartão SD não começa a inicializar. Depois disso, o host pode selecionar uma tensão de trabalho e, neste caso, reenviar o ACMD41 para enviar o cartão incompatível para o estado Inativo . Durante o processo de inicialização, o host não tem permissão para alterar a faixa de tensão operacional.

2.3 Processo de inicialização e reconhecimento do cartão SD

Depois que o barramento é ativado, o host inicia o processo de inicialização e identificação do cartão SD (consulte a Figura 4-2 abaixo). A partir do processo de inicialização SD_SEND_OP_COND() ACMD41começa definindo as condições de operação, e OCR( Operation Conditions Register) em HCS( Host Capacity Support) bits.

O bit HCS (Host Capacity Support) é definido como:

  • 1: indica que o host oferece suporte a cartões de memória SD de grande capacidade .
  • 0: indica que o host não oferece suporte a cartões de memória SD de grande capacidade .

Use a função CMD8expandida ACMD41do comando; o ACMD41parâmetro HCS será enviado quando o comando for enviado , e o ACMD41correspondenterespostaPara R3 (o Registro OCR) , compreendendo: Faixa de tensão V DD , o estado de capacidade do cartão SD do CCS (a capacidade do cartão de status) . Se o cartão SD não tiver um CMD8 correspondente, o parâmetro ACMD41 HCS será ignorado pelo cartão SD. No entanto, se o cartão não retornar uma resposta ao CMD8, o host deve definir o HCS como 0 . Os cartões SD de capacidade padrão ignorarão o HCS . Se HCS for definido como 0 , o cartão SD de grande capacidade nunca retornará ao estado pronto (mantenha o bit ocupado como 0). O Busy Bit no OCR é usado pelo cartão SD para informar ao host se a inicialização do ACMD41 foi concluída.

O bit ocupado no OCR é definido como:

  • 0: indica que o cartão SD ainda está no estado de inicialização .
  • 1: Indica que a inicialização do cartão SD foi concluída .

O host envia repetidamente ACMD41 até que o Bit Ocupado seja definido como 1 .cartão SDVerifique apenas as condições operacionais e os bits HCS no OCR no primeiro ACMD41 . Ao repetir ACMD41, o host não deve emitir outros comandos, exceto CMD0.

Quando o cartão responde a CMD8, a resposta de ACMD41 contém informações de campo CCS. Quando o cartão SD retorna ao estado Pronto ( Busy Bit está definido como 1), o CCS entra em vigor.

CCS (Status de capacidade do cartão) é definido como:

  • 0: Indica que o cartão é um cartão de memória SD de capacidade padrão
  • 1: indica que o cartão é um cartão de memória SD de alta capacidade

O host executa a mesma sequência de inicialização para todos os novos cartões no sistema e os cartões incompatíveis serão enviados para o estado Inativo . Em seguida, o host envia um comando ALL_SEND_CID(CMD2) a cada cartão para obter seu número de identificação de cartão exclusivo (CID). O cartão não reconhecido (ou seja, o cartão no estado pronto) envia seu número CID como uma resposta (na linha CMD). Depois que o cartão envia o CID, ele entra no estado de reconhecimento. Em seguida, o host envia CMD3 (SEND_RELATIVE_ADDR) para solicitar que o cartão emita um novo endereço de cartão relativo (RCA), que é mais curto do que o CID e será usado para endereçar o cartão em modos de transmissão de dados futuros. Assim que o RCA for recebido, o estado do cartão SD mudará para o estado de espera . Nesse momento, se o host quiser atribuir outro número RCA, ele pode solicitar que o cartão emita um novo número enviando outro comando CMD3 ao cartão. O último RCA lançado é o número RCA real do cartão SD.

Insira a descrição da imagem aqui

3. Modo de transferência de dados do cartão SD

Antes do final do modo de reconhecimento do cartão SD , o host deve manter a frequência f OD (400kHz) , porque durante o modo de reconhecimento do cartão SD , alguns cartões SD podem ter restrições de frequência operacional. No modo de transferência de dados , o host pode operar a placa na faixa de frequência f PP (25 MHz) . O host envia SEND_CSD(CMD9) para obter dados relacionados ao cartão SD (registro CSD), como comprimento do bloco, capacidade de armazenamento do cartão, etc.

O comando broadcast SET_DSR(CMD4) configura o Driver Stage Register de todos os cartões de identificação . É programado de acordo com o layout (comprimento) do barramento do aplicativo , o número de cartões no barramento e a frequência de transmissão de dadosRegistro DSR. A taxa de clock também é alterada de f OD para f PP . SET_DSRO comando é uma opção (não necessária) para o cartão SD e o host .

CMD7 usado para selecionar um cartão SD e colocá-lo no estado de transmissão , ao mesmo tempo, pode haver apenas um cartão no estado de transmissão . Se a placa selecionada anteriormente estiver no estado de transmissão , sua conexão com o host será liberada e ele retornará ao estado de espera. Quando CMD7 é enviado com o endereço da placa relativa reservado "0x0000", todos os cartões são devolvidos ao Stand-by estado.

Nota: O host reserva RCA = 0x0000 para a seleção de saída.

Insira a descrição da imagem aqui
Isso pode ser usado antes que o novo cartão seja reconhecido, sem redefinir outros cartões registrados. Depois que o cartão SD neste estado tiver um RCA, ele não responderá aos comandos de identificação (por exemplo: ACMD41, CMD2).

Nota: Se o cartão SD confirmado obtiver um RCA que não corresponda ao CMD7, o cartão será desmarcado.

O seguinte resume a relação entre os vários modos de transmissão de dados:

  • Todos os comandos de leitura de dados podem ser abortados a qualquer momento pelo comando de parada (CMD12). A transferência de dados será encerrada e o cartão SD retornará ao estado de transferência . Os comandos de leitura incluem: leitura de bloco (CMD17), leitura de vários blocos (CMD18), proteção de envio de gravação (CMD30), envio de scr (ACMD51) e comandos gerais para modo de leitura (CMD56).
  • Todos os comandos de gravação de dados podem ser abortados a qualquer momento pelo comando de parada (CMD12). Antes que o CMD7 cancele a seleção do cartão, ele deve parar de escrever comandos. Os comandos de gravação incluem: gravação de bloco (CMD24 e CMD25), programa CSD (CMD27), comando de bloqueio / desbloqueio (CMD42) e comando regular no modo de gravação (CMD56).
  • Assim que a transferência de dados for concluída, o cartão SD sairá do estado de gravação de dados e passará para o estado de Programação (Transmitido com sucesso) Ou status de transferência (A transmissão falhou)。
  • Se uma operação de escrita de bloco for interrompida e o comprimento do bloco e CRC do último bloco forem válidos, os dados serão programados.
  • O cartão SD pode fornecer buffer para gravações em bloco. Isso significa que enquanto o bloco anterior é programado, o próximo bloco pode ser enviado para o cartão SD. Se todos os buffers de gravação estiverem cheios, enquanto o cartão SD estiver no estado de Programação (consulte o diagrama de estado do cartão SD na Figura 4-3), a linha DAT0 permanecerá baixa (OCUPADA) .
  • Não há opções de buffer para gravação CSD, proteção contra gravação e apagamento. Isso significa que quando o cartão SD está ocupado processando qualquer um desses comandos, outros comandos de transmissão de dados não serão aceitos. Enquanto a placa estiver ocupada e no estado de Programação , a linha DAT0 permanecerá baixa .
  • Quando a placa está em programação, o comando de configuração de parâmetros não é permitido. Os comandos de configuração de parâmetros incluem: definir o comprimento do bloco (CMD16), apagar o início do bloco (CMD32) e apagar o fim do bloco (CMD33).
  • Quando o cartão está programando, não é permitido ler comandos.
  • Movendo um outro cartão do stand-by estado para a transferência de estado (utilizando CMD7) não vai terminar as operações de apagamento e de programa. O cartão mudará para o estado Desconectado e a linha DAT será liberada.
  • No estado Desconectado , você pode usar o CMD7 para selecionar novamente o cartão. Neste caso, o cartão passará para o estado de Programação e reativará a indicação de ocupado.
  • Reinicializar o cartão SD (usando CMD0 ou CMD15) encerrará todas as operações de programação pendentes ou em andamento. Isso pode destruir o conteúdo dos dados no cartão. É responsabilidade do hospedeiro evitar que isso aconteça.
  • CMD34-37, CMD50, CMD57 são reservados para expansão do sistema de comando SD. As transições de estado desses comandos são definidas em cada especificação do sistema de comando.

4. Referências

As informações referenciadas por SDIO são as seguintes: O
Insira a descrição da imagem aqui
endereço de download é o seguinte:
https://download.csdn.net/download/ZHONGCAI0901/14975835

Acho que você gosta

Origin blog.csdn.net/ZHONGCAI0901/article/details/113485583
Recomendado
Clasificación