Casa > C > Como É Feita A Transferência De Dados Via Usb?

Como é feita a transferência de dados via USB?

Quando o software requer que a transferência de dados ocorra entre si e o USB, ele envia um bloco de dados chamado I/O Request Packet (IRP) para o tubo apropriado, e o software é notificado posteriormente quando este pedido é concluído com sucesso ou terminado por erro. Além da presença de um pedido de IRP, a tubulação não tem interação com o USB. No caso de um erro após três tentativas de nova tentativa, o PIA é cancelado e todos os PIA adicionais e pendentes a esse tubo são ignorados até que o software responda ao sinal de erro que é gerado pelo envio de uma chamada apropriada para o USB. Como exatamente isso é tratado depende do tipo de dispositivo e do software.

Como sugerido pelo nome Universal Serial Bus, a transmissão de dados no barramento ocorre em forma serial. Bytes de dados são quebrados e enviados ao longo do barramento um bit de cada vez, com o bit menos significativo primeiro como ilustrado:

main-qimg-0d126bca4957787327e35b903a211ada.webp

Os dados reais são enviados ao longo do barramento em pacotes. Cada pacote é um pacote de dados juntamente com informações sobre a origem, destino e comprimento dos dados, e também informações de detecção de erros. Uma vez que cada terminal define, durante a configuração, um limite para o tamanho do pacote com o qual ele pode lidar, um IRP pode exigir o envio de vários pacotes. Cada um desses pacotes deve ter o tamanho máximo possível, exceto para o pacote final. O host USB tem um mecanismo embutido para que o software possa dizer quando esperar pacotes de tamanho completo.

No caso de um pacote de tamanho inferior ao máximo ser recebido mais cedo do que o esperado, um erro é assumido e o tubo é paralisado com todos os IRPs sendo cancelados até que o problema seja resolvido pelo software controlador. Se um ponto final estiver ocupado, mas nenhum erro tiver ocorrido, ele responde com um sinal especial com a etiqueta NAK (Negative AcKnlowedge), que diz à outra extremidade do pipe para esperar um pouco. Como estas condições são tratadas depende do tipo de dispositivo e do software.

Cada pacote é composto por um conjunto de componentes chamados campos incluindo os seguintes, resumidos na figura 4 :

  • Um campo de sincronização de oito bits "SYNC" utilizado pelas entradas para corrigir o seu tempo de aceitação dos dados. Parte deste campo é um símbolo especial usado para marcar o início de um pacote.
  • O PID (8 bit Packet Identifier) que usa 4 bits para determinar o tipo, e portanto o formato, dos dados do pacote. Os 4 bits restantes são um complemento de 1's deste, atuando como check bits. Parte deste campo determina a qual dos quatro grupos (token, data, handshake e especial) o pacote pertence, e também especifica uma instrução de entrada, saída ou configuração.
  • Um campo de endereço que dá o endereço da função no final do pipe a ser usadoli> O campo de 4 bits do endpoint, dando o endpoint apropriado que envia ou recebe o pacote.<
  • Um campo de dados composto de 0-1023 bytes
main-qimg-fc9ca48951fa684dc134b96ff9c19093.webp

Estes campos são colocados juntos e usados pelos vários tipos de pacotes (resumidos no Apêndice B) para uma comunicação significativa através do USB. Os erros são detectados pelo uso de uma Verificação de Redundância Cíclica (CRC) em todos os campos, exceto o PID, que tem seu próprio mecanismo de verificação. O CRC é considerado quase 100% preciso na detecção de erros.

Os dados são enviados em pacotes : →Software verifica se é válido → dados são recebidos .

Mais pessoas don't know about it.

Obrigado por A2A

~DC

De Weide

É assim tão difícil fazer um jogo Roblox? :: Os dispositivos podem carregar ou ser carregados via USB-C. O que decide a direção?