2017-02-06 6 views
0

Je travaille sur un projet qui utilise l'Arduino Due (microcontrôleur ATSAM3X8E). Mon but est de pouvoir suivre en temps réel les valeurs de certaines des variables clés que j'utilise dans mon firmware. Le fait est que j'ai besoin de tracer le changement dans les valeurs des variables au fil du temps. Pour ce faire, j'ai décidé d'envoyer les données à mon PC via le port USB natif. La contrainte en temps réel que j'ai est que j'ai besoin d'envoyer les valeurs de 20 variables (chacune d'elles 8 octets de long) en 0.1 ms. Il y a un port USB natif disponible sur l'Arduino Due, qui est connecté au périphérique USB de la puce. J'ai essayé d'utiliser UART via USB en configurant le mode Due in USB. Je peux seulement atteindre les vitesses de 115200 bauds en utilisant la communication Serial (UART) (toute vitesse plus élevée ne permet pas au Due ou à mon PC hôte d'envoyer les données correctement). Donc, j'ai fait un peu de travail à domicile et j'ai trouvé que les appareils USB avaient des classifications différentes en fonction de ce qu'ils font. Je veux savoir s'il y a un protocole à grande vitesse avec une vitesse d'au moins 2 M bits/sec. Je peux utiliser sur le dessus de l'USB pour transférer des données vers mon PC depuis le Due, et s'il y a un driver équivalent je peux utiliser sur mon PC Windows pour capturer avec succès ces données à haute vitesse - toutes les recommandations seraient grandement utiles.Arduino En raison de la communication USB haute vitesse PC

Merci d'avance!

Subramanian

Répondre

1

Le port USB natif de Arduino Due est capable de USB haut débit (480 Mbps), et par défaut, il apparaîtra à l'ordinateur un port COM virtuel USB. Il s'agit d'un port série virtuel, de sorte que vous pouvez envoyer des données aussi rapidement que les pilotes USB le permettent, et vous n'êtes pas limité par le "débit en bauds" virtuel du port COM, qui est un paramètre non pertinent. Je pense que le port COM virtuel sera assez rapide pour vous et vous devriez l'essayer avant de faire quelque chose de plus compliqué.

Pour utiliser ce port, utilisez le SerialUSB dans votre programme Arduino. L'objet a la même interface que Serial. Vous devriez déjà avoir un pilote pour cela si vous avez installé l'IDE Arduino ou Windows 10.

Veuillez noter que les ports COM virtuels USB utilisent généralement des points de terminaison USB en bloc, ce qui ne garantit pas une latence ou un débit paritculaire. Si votre ordinateur est occupé à parler à d'autres périphériques sur le bus, vous pourriez avoir moins de débit que vous espériez, mais vous avez beaucoup de marge d'erreur ici, donc je ne pense pas que ce sera un problème en pratique. Si vous voulez être sûr, assurez-vous juste que vous pouvez mettre en mémoire tampon quelques millisecondes de données du côté de l'appareil afin de ne perdre aucune donnée. Vous pourriez avoir à regarder les internes du code de base Arduino pour voir la taille de ses tampons.