Welcher Mikrocontroller kann direkt an einen USB-Anschluss angeschlossen werden?

9

Im Wesentlichen muss ich nur einige Daten über USB an den Mikrocontroller senden, dann decodiert der Mikroprozessor die Daten und steuert einen LED-Lichtstreifen an, der mit 5 V betrieben wird. Ich habe Probleme, den richtigen Mikrocontroller für den Job zu finden.

Der Mikrocontroller benötigt nur zwei serielle Eingangsanschlüsse für die USB-Kommunikation, zwei serielle Ausgangsanschlüsse für die Kommunikation mit dem LED-Streifen und kann mit 5 V betrieben werden. Es scheint unnötig zu sein, einen dedizierten IC für die USB-Kommunikation zu haben, wenn ich nur einen seriellen COM-Anschluss einrichten muss.

Hier ist zum Beispiel der Ausschnitt aus Arduino-Code, der ein Byte in den LPD8806-Streifen schreibt:

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); 
  }
}

Um die Daten zu speichern, senden Sie Nullen an den Streifen.

Steve Barna
quelle
Ich denke, Sie meinen eine USB-Verbindung (in beide Richtungen) und eine serielle Verbindung (auch in beide Richtungen). Wenn Sie auf Bild stehen, wird die 18f4550-Familie den Job machen.
Scott Seidman
1
Was ist das Protokoll für den LED-Streifen? Können Sie einen Link zum Datenblatt oder zur Website des Streifens hinzufügen?
Raketenmagnet
@ Rocketmagnet Es ist dieser LED- Streifen . Das Datenblatt ist in chinesischer Sprache, es gibt jedoch einfach einen seriellen Eingang und einen Takt, und Sie verriegeln, indem Sie Nullen auf der ganzen Linie senden.
Steve Barna

Antworten:

7

Ich denke, mit "zwei seriellen Ausgangsanschlüssen" meinen Sie einen UART (da Sie USB auch als zwei Anschlüsse beschreiben). Rocketmagmet zeigt an, dass viele / die meisten LED-Strings SPI verwenden, dies erfordert jedoch mindestens 3 Drähte. Können Sie angeben, welches Protokoll Sie benötigen?

Im Allgemeinen hat Microchip auch diesmal die kostengünstigsten Mikrocontroller. Und Microchip hat auch viele Mikrocontroller im DIL-Paket, während viele andere darauf verzichtet haben. Kann für DIY wichtig sein. Der PIC18F13K50

  • existiert sowohl in DIL-20- als auch in SMT-Paketen
  • arbeitet mit 5 V (zur Verbindung mit dem LED-Streifen)
  • ist mit 2,5 US-Dollar günstig (OK, das ist relativ, aber USB-fähige Controller sind etwas teurer als einfachere Typen)
  • hat die USART for UART-Schnittstelle erweitert
  • hat eine SPI-Schnittstelle für den Fall, dass Sie das gemeint haben
  • Mit 25-mA-Quellen- und Senken-E / A können Sie bei Bedarf direkt einige Anzeige-LEDs ansteuern

Weitere Informationen zur
generischen USB-Funktion auf einem eingebetteten Gerät , Microchip Application Note AN1166

stevenvh
quelle
Er erwähnt LED-Streifen, daher gehe ich davon aus, dass es sich um ein synchrones Protokoll handelt (im Grunde genommen SPI ohne Datenrückgabepin). Dieser PIC hat nur 1 SPI-Port und wäre daher nicht geeignet. Obwohl er das Protokoll ein bisschen knallen konnte.
Raketenmagnet
@ Rocket - wo sagt er, dass es SPI ist? Und er braucht keine zwei SPI-Busse: SPI ist Multi-Slave. Und wie Scott kommentierte und ich zu Beginn meiner Antwort auch sagte, ich denke mit zwei Ports meint er zwei Pins, deshalb habe ich zuerst über UART nachgedacht.
Stevenvh
Vielleicht der PIC18F24J50? Aber es ist ein 3,3-V-Teil, daher weiß ich nicht, ob es an den LED-Streifen angeschlossen werden kann.
Raketenmagnet
1
Er sagt nicht, dass es SPI ist, aber ich habe schon früher LED-Streifen verwendet, die immer synchron waren. Ich könnte falsch liegen. Er könnte eine andere Art von LED-Streifen bedeuten, die ich noch nie gesehen habe. Ich denke, er meint zwei Pins für Clock & Data.
Raketenmagnet
Eigentlich habe ich die Frage falsch gelesen und dachte, er hätte zwei LED-Streifen gesagt! Er sagte tatsächlich zwei Stifte für einen LED-Streifen. Also, ähm, wie Sie mit dem ursprünglichen Vorschlag waren.
Raketenmagnet
4

Ihr LED-Streifen verfügt über eine einfache serielle Schnittstelle. Wenn Sie nur versuchen, es mit einem Computer zu steuern, können Sie einen FTDI-Chip verwenden, um die Stifte zu bewegen: http://www.ftdichip.com/Products/ICs/FT232R.htm

Dann ist die Komplexität auf der PC-Seite mit libftdi oder D2XX- Bibliotheken. Aber es ist nicht schlecht, ähnlich komplex wie Ihr Arduino-Beispiel.

Wenn Sie keine Hardware herstellen möchten, können Sie vorgefertigte Kabel mit dem FTDI-Chip bei FTDI-Händlern wie Mouser oder bei Sparkfun usw. erwerben. Kabel sind in verschiedenen Spannungskonfigurationen erhältlich. Bestellen Sie daher sorgfältig.

Wenn Sie möchten, dass das Projekt eigenständig oder autonom ist, benötigen Sie natürlich eine vollständige Mikrocontroller-Lösung.

Markrages
quelle
Ich sollte in Betracht ziehen, SPI-Rohdaten über einen USB-Controller an den LED-Streifen zu senden. Microchip stellt ein USB-zu-SPI her, das sich selbst als HID-Gerät einrichtet, während FTDI-Chips entweder VCOM oder D2XX sind und ich nicht sicher bin, welches am besten geeignet ist, um einen Lichtstreifen aus einem C ++ - Programm auszuführen.
Steve Barna
Mir ist keine USB <-> SPI-Bridge bekannt, die wie die USB <-> UART-Bridge-Chips als virtuelle serielle Schnittstelle angezeigt wird. Stattdessen müssen Sie Bit-Banging-Code schreiben, was für SPI einfach ist.
Markrages
3

Erwägen Sie die Verwendung des PSoC3 .

PSoc3

Sie sind mit USB und fast allen gewünschten Peripheriegeräten erhältlich. (Sie sind in der Software konfiguriert.) Sie können sicherlich zwei serielle Anschlüsse für die LED-Streifen haben. Sie werden wahrscheinlich 20 haben können, wenn Sie wollen.

Die Entwicklungsumgebung ist auch eine Freude zu nutzen.

PSoC Creator

Raketenmagnet
quelle
3
Nun, das scheint ein bisschen übertrieben. Aber ich werde mich darum kümmern.
Steve Barna
8
@Rocket - Ich sehe auf Digikey, dass ein PSOC mehr als das Doppelte des von mir erwähnten PIC kostet. Ich bezweifle nicht, dass sie Gold wert sind (als Redewendung), wenn Sie all diese konfigurierbaren Peripheriegeräte benötigen, für Lösungen, die Sie auf keinem anderen Mikrocontroller wie 16 UART oder so finden. Aber OP scheint nur einen USB-Anschluss und einen seriellen Anschluss (UART, SPI oder I2C) zu benötigen, dann ist es viel billiger, einen relativ Low-End-Controller auszuwählen, der genau das hat.
Stevenvh
@stevenvh - Ich stimme zu, die PSoCs können schmerzhaft teuer sein. Sie sind es für die Produktion nur dann wirklich wert, wenn Sie ihre vielen Funktionen nutzen können. Aber für das Prototyping sind sie es absolut wert. Sie müssen nie nach diesem speziellen PIC suchen, der genau die richtige Kombination von Peripheriegeräten bietet, und Sie können Hardwareänderungen auf Knopfdruck implementieren !
Raketenmagnet
@Rocket - "Hardwareänderungen auf Knopfdruck implementieren". Ja, das haben mir die Cypress-Leute immer wieder erzählt. Ich verstehe es nicht (ich habe dies ausführlich mit meinen Kollegen besprochen, und sie auch nicht): Wenn ich zum Beispiel einen Timer in meiner Bewerbung benötige, brauche ich ihn wahrscheinlich die ganze Zeit, und wirf ihn eine Weile nicht weg weil ich mit der hardware etwas anderes machen will. Ich tue die Konfigurations - Tools zu schätzen weiß, wie in Ihrem Screenshot, und ich habe gebeten , Motorola (bevor sie wurde Freescale) ein rhousand mal ein kleines FPGA zu ihren HC05 Controller hinzuzufügen, aber das war nicht ...
stevenvh
@Rocket - (Fortsetzung) ... für die Neukonfiguration in der Anwendung sollte während der Entwicklung ein flexiblerer Controller vorhanden sein . Wir waren zu dieser Zeit ein großer Motorola-Kunde, und sie haben sich mit uns über Ideen zur Beseitigung des HC05-Chaos beraten. Es gab Hunderte verschiedener Typen, von denen einige erfolgreicher waren als andere. Daher schlug ich vor, 1) das FPGA und / oder 2) ein Crosspoint-Switch-Array, mit dem Sie ausgewählte Peripheriegeräte an (begrenzte) E / A anschließen können; Die Hardware war sowieso auf dem Würfel.
Beides
0

Einfacher geht es nicht: ATmega8U2 .

Um das Ganze abzurunden, können Sie das sogar mit dem Arduino Bootloader verwenden ...

Datenblatt: http://www.atmel.com/Images/doc7799.pdf

(Entschuldigung, dass ich etwas prägnant bin, ich schreibe vom Telefon aus)

ppeterka
quelle
2
Wenn Sie wieder hinter Ihrem PC sitzen (sollte das nicht "vor" sein?), Können Sie näher erläutern: Wie ist dies die einfachste Lösung? Es muss eine gute Geschichte sein :-), da der ATmega8U2 50% teurer ist als der PIC.
Stevenvh
1
Ich bevorzuge die AVR-Linie (insb. ATmega), weil man die Arduino-Umgebung für schnelles Prototyping verwenden kann (Poster ist damit vertraut!) Und schnelle Test-Fixing-Zyklen ermöglicht. Dann optimiere ich den Code manuell oder verwende sogar einen kleineren AVR uC wie Tiny2313 (übrigens gibt es Soft-USB-Bibliotheken für AVRs). Ich wollte PICs mögen, aber als ich sie mir ansah (kurz bevor Arduino abhob), entschied ich mich für die AVRs: Ich fand, dass ihre Dokumente besser und die Community stärker sind - obwohl PICs hier in Ungarn historisch stärker unterstützt werden. Ich würde einen kürzeren Entwicklungszyklus wählen, um die Kosten bei der Produktion in kleinen Stückzahlen zu senken.
ppeterka
1
Genau warum das Downvote? Möchtest du das erklären?
ppeterka