Quel microcontrôleur peut se connecter directement à un port USB?

9

Essentiellement, j'ai juste besoin d'envoyer des données au microcontrôleur via USB, puis le microprocesseur décode les données et pilote une bande lumineuse LED, qui fonctionne à 5V. J'ai du mal à trouver le microcontrôleur approprié pour le travail.

Le microcontrôleur doit simplement avoir 2 ports d'entrée série pour la communication USB, deux ports de sortie série pour la communication avec la bande LED et être capable de fonctionner à 5V. Il semble inutile d'avoir un IC dédié pour la communication USB lorsque tout ce dont j'ai besoin est un port COM série configuré.

Par exemple, voici l'extrait de code Arduino qui écrit un octet dans la bande LPD8806:

void write8(uint8_t d) {
  for (uint8_t i=0; i<8; i++) {
    if (d & _BV(7-i))
      digitalWrite(dataPin, HIGH);
    else
      digitalWrite(dataPin, LOW);
   digitalWrite(clockPin, HIGH);
   digitalWrite(clockPin, LOW); 
  }
}

Pour verrouiller les données, vous envoyez des zéros à la bande.

Steve Barna
la source
Je pense que vous voulez dire une connexion USB (ils sont bidirectionnels) et une connexion série (également bidirectionnelle). Si vous aimez la photo, la famille 18f4550 fera le travail.
Scott Seidman
1
Quel est le protocole pour la bande LED? Pouvez-vous ajouter un lien vers la fiche technique ou le site Web de la bande?
Rocketmagnet
@Rocketmagnet C'est cette bande LED . La fiche technique est en chinois, mais il y a simplement une entrée série et une horloge, et vous vous verrouillez en envoyant des zéros sur toute la ligne.
Steve Barna

Réponses:

7

Je suppose que par "deux ports de sortie série", vous voulez dire un UART (puisque vous décrivez également l'USB comme 2 ports). Rocketmagmet indique que beaucoup / la plupart des chaînes LED utilisent SPI, mais cela nécessitera au moins 3 fils. Pouvez-vous spécifier le protocole dont vous avez besoin?

En général, Microchip a les microcontrôleurs les moins chers, cette fois aussi. Et Microchip a également de nombreux microcontrôleurs en boîtier DIL, tandis que de nombreux autres l'ont abandonné. Peut être important pour le bricolage. Le PIC18F13K50

  • existe dans les packages DIL-20 et SMT
  • fonctionne à 5 V (pour interfacer avec la bande LED)
  • est à faible coût à 2,5 $ (OK, c'est relatif, mais les contrôleurs compatibles USB sont un peu plus chers que les types plus basiques)
  • a amélioré l'interface USART pour UART
  • a une interface SPI au cas où vous vouliez dire que
  • dispose d'une source et d'un récepteur d'E / S de 25 mA, vous pouvez donc piloter directement quelques voyants si nécessaire

Pour en savoir plus
Fonction générique USB sur un périphérique embarqué , note d'application Microchip AN1166

stevenvh
la source
Il mentionne les bandes LED, donc je suppose que c'est un protocole synchrone (essentiellement SPI sans la broche de retour de données). Ce PIC ne possède qu'un seul port SPI, il ne conviendrait donc pas. Bien qu'il puisse mordre le protocole.
Rocketmagnet
@Rocket - où dit-il que c'est SPI? Et il n'aura pas besoin de deux bus SPI: SPI est multi-esclave. Et comme Scott l'a commenté et je l'ai également dit au début de ma réponse, je pense que par deux ports, il veut dire deux broches, c'est pourquoi j'ai d'abord pensé à UART.
stevenvh
Peut-être le PIC18F24J50? Mais c'est une partie 3.3v, donc je ne sais pas si elle s'interface avec la bande LED.
Rocketmagnet
1
Il ne dit pas que c'est SPI, mais j'ai déjà utilisé des bandes LED, et elles ont toujours été synchrones. Je peux me tromper. Il pourrait signifier un autre type de bande LED que je n'ai jamais vu auparavant. Je pense qu'il veut dire deux broches pour l'horloge et les données.
Rocketmagnet
En fait, j'ai mal lu la question et j'ai pensé qu'il avait dit deux bandes LED! Il a en fait dit deux broches pour une bande LED. Donc, euh, comme vous étiez avec la suggestion originale.
Rocketmagnet
4

Votre bande LED possède une interface série simple. Si vous essayez simplement de le contrôler avec un ordinateur, vous pouvez utiliser une puce FTDI pour agiter les broches: http://www.ftdichip.com/Products/ICs/FT232R.htm

Ensuite, la complexité est du côté PC en utilisant les bibliothèques libftdi ou D2XX . Mais ce n'est pas trop mal, une complexité similaire à votre exemple Arduino.

Si vous n'avez pas envie de fabriquer du matériel, vous pouvez acheter des câbles préfabriqués avec la puce FTDI auprès de distributeurs FTDI comme Mouser, ou de Sparkfun etc. Les câbles sont disponibles dans différentes configurations de tension, alors commandez soigneusement.

Bien sûr, si vous voulez que le projet soit autonome ou autonome, vous voudrez une solution complète de microcontrôleur.

markrages
la source
Je devrais envisager d'envoyer des données SPI brutes à la bande LED via un contrôleur USB. Microchip crée un port USB-SPI qui se définit comme un périphérique HID, tandis que les puces FTDI sont VCOM ou D2XX et je ne suis pas sûr de savoir qui conviendrait le mieux pour exécuter une bande lumineuse à partir d'un programme c ++.
Steve Barna
Je ne connais pas de pont USB <-> SPI qui se présente comme un port série virtuel comme le font les puces de pont USB <-> UART. Au lieu de cela, vous devrez écrire du code banging, ce qui est facile pour SPI.
markrages
3

Pensez à utiliser le PSoC3 .

PSoc3

Ils sont disponibles avec USB et presque tous les périphériques que vous souhaitez. (Ils sont configurés dans le logiciel) Vous pourrez certainement avoir deux ports série pour les bandes LED. Vous pourrez probablement en avoir 20 si vous le souhaitez.

L'environnement de développement est également un plaisir à utiliser.

Créateur PSoC

Rocketmagnet
la source
3
Eh bien, cela semble un peu exagéré. Mais je vais y réfléchir.
Steve Barna
8
@Rocket - Je vois sur Digikey qu'un PSOC coûte plus du double du PIC que j'ai mentionné. Je ne doute pas qu'ils valent leur pesant d'or (comme une figure de style), si vous avez besoin de tous ces périphériques configurables, pour des solutions que vous ne trouverez sur aucun autre microcontrôleur, comme 16 UART ou plus. Mais OP semble avoir juste besoin d'un port USB et d'un port série (UART, SPI ou I2C), alors il est beaucoup moins cher de choisir un contrôleur relativement bas de gamme qui a exactement cela.
stevenvh
@stevenvh - Je suis d'accord, les PSoC peuvent être douloureusement chers. Ils ne valent vraiment la peine pour la production que lorsque vous pouvez profiter de leurs nombreuses fonctions. Mais pour le prototypage, ils sont tout à fait la peine. Vous n'avez jamais à aller à la recherche de ce PIC spécial qui a juste la bonne combinaison de périphériques, et vous pouvez implémenter des modifications matérielles en un seul clic!
Rocketmagnet
@Rocket - "implémentez les modifications matérielles d'un simple clic". Oui, c'est ce que les gars de Cypress n'arrêtaient pas de me dire. Je ne comprends pas (j'en ai longuement discuté avec mes collègues, et ils ne le font pas non plus): si j'ai besoin, par exemple, d'une minuterie dans ma candidature, il y a de fortes chances que j'en ai besoin tout le temps, ne pas la jeter pendant un moment parce que je veux faire quelque chose de différent avec le matériel. Je fais apprécier les outils de configuration, comme dans la capture d' écran, et je l' ai supplié Motorola (avant de devenir Freescale) un temps de rhousand d'ajouter un petit FPGA à leurs contrôleurs HC05, mais ça n'a pas ...
stevenvh
@Rocket - (continue) ... pour la reconfiguration dans l'application, qui devait avoir un contrôleur plus flexible pendant le développement . Nous étions un gros client de Motorola à l'époque, et ils nous ont consultés pour des idées sur la façon de nettoyer le désordre HC05; il y avait des centaines de types différents, certains plus réussis que d'autres. J'ai donc suggéré 1) le FPGA, et / ou 2) une matrice de commutateurs de points de connexion pour vous permettre de connecter des périphériques sélectionnés à des E / S (limitées); le matériel était de toute façon sur le dé. Ni l'un ni l'autre ne s'est produit, et Motorola ne fabrique plus de contrôleurs ...
Steven
0

Cela ne peut pas être plus simple: ATmega8U2 .

Pour couronner le tout, vous pouvez même l'utiliser avec le chargeur de démarrage Arduino ...

Fiche technique: http://www.atmel.com/Images/doc7799.pdf

(désolé d'être un peu concis, je tape du téléphone)

ppeterka
la source
2
Lorsque vous êtes de retour derrière votre PC (cela ne devrait-il pas être "devant"?) Pouvez-vous élaborer: en quoi est-ce la solution la plus simple? Ce doit être une bonne histoire :-), puisque l'ATmega8U2 est 50% plus cher que le PIC.
stevenvh
1
Je préfère la gamme AVR (en particulier ATmega) car on peut utiliser l'environnement Arduino pour un prototypage rapide (poster est familier avec ça!), Et permet des cycles de test-fixation rapides. Ensuite, j'optimise le code manuellement, ou même j'utilise un AVR uC plus petit, comme Tiny2313 (BTW, il existe des bibliothèques soft-USB pour les AVR). Je voulais aimer les PIC, mais quand je les ai regardés (juste avant le départ d'Arduino), j'ai choisi les AVR: j'ai trouvé que leurs documents étaient meilleurs et la communauté plus forte - malgré cela ici en Hongrie, les PIC sont historiquement plus pris en charge. Je choisirais un cycle de développement plus court pour réduire les coûts de production à faible volume.
ppeterka
1
Exactement pourquoi le downvote? Soin d'expliquer?
ppeterka