Eu quero construir um osciloscópio USB. Eu estava lendo sobre diferentes tipos de transferência USB . Qual tipo de transferência é melhor para transferir as amostras ADC coletadas de um osciloscópio USB para um PC?
Abaixo estão algumas das minhas descobertas. Por favor, corrija-me e também seria bom se alguém pudesse sugerir um bom tipo de transferência.
- Transferência isócrona - Possível perda de dados. Não é bom para um osciloscópio, pois cada item de dados é valioso. Quantos dados podem ser perdidos?
- Modo de interrupção - não faço ideia se inundaria a conexão USB
- Modo em massa - Parece o melhor para mim, pois não há perda de dados
- Transferência de controle - não é adequado, pois não se destina à transferência de dados
usb
oscilloscope
Robomon
fonte
fonte
Respostas:
As transferências em massa não perdem dados, mas não têm largura de banda mínima garantida. (Por outro lado, eles podem atingir velocidades mais altas porque são capazes de usar toda a largura de banda que não realmente usada por outras transferências).
O que acontece quando as transferências de dados do seu osciloscópio estão atrasadas (devido a erros ou devido a outros dispositivos) e novos dados estão se acumulando? Você para o dispositivo até que os dados antigos sejam transmitidos ou joga fora os dados antigos para poder transmitir os dados atuais?
As transferências isócronas são projetadas para dados 'em tempo real'. Você não tem escolha sobre o tratamento de erros, mas sua largura de banda é reservada no barramento.
fonte
A questão é quase completamente independente do seu uso como osciloscópio e é completamente governada pelos tipos de comunicação que você está solicitando à USB. Por exemplo:
Depois de saber em que tipo de dados você está transmitindo e os termos de Qualidade de Serviço (QoS) em que os dados precisam chegar, você pode decidir qual mecanismo de transferência USB deve ser feito. Você saberá que está pronto para tomar essas decisões quando a palavra "osciloscópio" não for mais necessária para descrever os dados e a QoS de que você precisa. Então você sabe que é suficiente em palavras objetivas para começar a resolver esses problemas.
fonte
Para um osciloscópio, a largura de banda da transferência é o parâmetro que você deseja maximizar. A transferência em massa foi projetada especificamente para alta largura de banda, de modo que é a escolha correta. Embora as transferências isócronas e de interrupção coloquem limites na latência, elas destinam-se apenas a fluxos de dados de baixa a média largura de banda.
fonte
Basta usar transferências em massa. Um osciloscópio não é realmente um dispositivo de alta taxa de dados. A menos que você esteja planejando criar um projeto do tipo fósforo digital, um osciloscópio é realmente apenas uma janela para uma parte muito pequena de uma forma de onda. Por exemplo, digamos que você queira mostrar 1000 pixels horizontais e atualizar a exibição em torno de 30Hz. Se as amostras tiverem 8 bits cada (isso é típico) e houver dois canais, você estará visualizando apenas 60.000 bytes / segundo. O USB de velocidade total pode gerar cerca de 1.000.000 bytes / s, portanto, você está usando menos de 6% da capacidade de transferência de barramento. Isso dá tempo de sobra para permitir que o modo de transferência em massa funcione (corrigir erros, contornar o tráfego de outros ônibus) e é improvável que você encontre uma configuração de barramento da vida real que não consiga alocar largura de banda suficiente por tantos dados.
fonte