2017-10-12 5 views
0

Pour une divulgation complète, je suis un ingénieur électricien et un logiciel n'est pas mon fort. Je veux me construire un analyseur CAN. Le matériel est assez simple, un émetteur-récepteur CAN lié à un microcontrôleur. Là où je me bats, c'est comment interfacer cela avec un ordinateur.Choix de l'interface USB?

Ma réaction réflexe est d'utiliser une puce FTDI pour convertir série vers USB. C'est assez facile à programmer du côté de l'ordinateur et les données peuvent arriver de manière asynchrone en mode continu. En outre, FTDI a des pilotes pour le périphérique USB. Le problème est qu'une connexion série ne peut pas supporter les vitesses CAN et diffuser les données. Au mieux, je devrais tamponner les données sur le micro et ensuite l'envoyer à l'ordinateur.

Ma deuxième pensée est que je pouvais mettre en place une pile USB sur le microcontrôleur. Cela éliminerait le goulot d'étranglement physique du lien série. Théoriquement, cela accomplit tout ce qui précède. Là où je faiblis, je ne connais pas les limites pratiques d'un tel lien. USB 2.0 devrait être en mesure de maintenir des vitesses CAN sans problème, mais tous les terminaux série que j'ai travaillé avec seulement aller jusqu'à 115200 Est-ce une limite pratique ou pourrait que la vitesse soit poussé plus vite si je parle au conducteur directement?

Y at-il un lien USB qui est aussi facile à utiliser comme un port de communication virtuel, mais peut supporter nativement des vitesses CAN?

Répondre

2

si vous implémentez un COM virtuel sur le microcontrôleur la vitesse de transmission/BPS 115200 peut être dépassé

CAN a un débit binaire maximal de 1Mbps (https://www.orionbms.com/manuals/utility/acc_canbus_baud.html)

l'unité de taux standard de transmission UART est bps (bits par seconde) et SIMULTANÉMENT baud car il est supposé que 1 symbole a 1 bit (https://electronics.stackexchange.com/questions/9264/what-standard-uart-rates-are-there, https://learn.sparkfun.com/tutorials/serial-communication/rules-of-serial)

FTDI USB à puces UART ont une vitesse de transmission maximale de 3MBaud (3 Mbps) (http://www.ftdichip.com/Support/Knowledgebase/index.html?whatbaudratesarechievabl.htm), il est donc possible avec les puces FTDI à dépasser la 115.200 et aussi le 1Mbps de CAN

lors de l'utilisation d'une pile USB qui implémente un COM virtuel sur l'interface USB du micro-contrôleur (de classe de périphérique CDC-ACM) la vitesse de transmission peut être augmentée plus cf Virtual COM port or using raw endpoints?

la LUFA stack (http://www.fourwalledcubicle.com/LUFA.php) a une mise en œuvre d'un port COM virtuel (CDC-ACM (Virtual Serial) Class Driver) pour Atmel MCU

en général des débits de données trop élevées sur UART/série (y compris les puces FTDI) peut être problématique en raison d'erreurs de transmission ...

voir aussi http://www.wormwood.net/avrbaudcalc.php pour la relation de la fréquence d'horloge et la vitesse de transmission UART