Jaki mikrokontroler można podłączyć bezpośrednio do portu USB?

9

Zasadniczo muszę tylko wysłać niektóre dane do mikrokontrolera przez USB, a następnie mikroprocesor dekoduje dane i napędza pasek świetlny LED, który działa przy 5V. Mam problem ze znalezieniem odpowiedniego mikrokontrolera do pracy.

Mikrokontroler musi mieć tylko 2 porty szeregowe do komunikacji USB, dwa porty szeregowe do komunikacji z listwą LED i być w stanie działać przy napięciu 5 V. Nie ma potrzeby posiadania dedykowanego układu scalonego do komunikacji USB, gdy wszystko, czego potrzebuję, to skonfigurowany port szeregowy COM.

Na przykład, oto fragment kodu Arduino, który zapisuje bajt na pasku 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); 
  }
}

Aby zatrzasnąć dane, wyślesz zera na pasek.

Steve Barna
źródło
Myślę, że masz na myśli jedno połączenie USB (są dwukierunkowe) i jedno połączenie szeregowe (również dwukierunkowe). Jeśli lubisz zdjęcia, rodzina 18f4550 wykona pracę.
Scott Seidman,
1
Jaki jest protokół dla paska LED? Czy możesz dodać link do arkusza danych lub strony internetowej paska?
Rocketmagnet,
@Rocketmagnet Jest to LED Strip . Arkusz danych jest w języku chińskim, jednak jest po prostu wejście szeregowe i wejście zegarowe, a ty zatrzaskujesz się, wysyłając zera wzdłuż linii.
Steve Barna

Odpowiedzi:

7

Myślę, że przez „dwa porty wyjścia szeregowego” rozumiesz jeden UART (ponieważ opisujesz również USB jako 2 porty). Rocketmagmet wskazuje, że wiele / większość łańcuchów LED używa SPI, ale będzie to wymagało co najmniej 3 przewodów. Czy możesz określić, którego protokołu potrzebujesz?

Ogólnie rzecz biorąc, Microchip ma najtańsze mikrokontrolery, również tym razem. I Microchip ma wiele mikrokontrolerów w obudowie DIL, jak również, podczas gdy wiele innych osób, które porzuciła. Może być ważny dla majsterkowiczów. PIC18F13K50

  • istnieje zarówno w pakietach DIL-20, jak i SMT
  • działa przy 5 V (do połączenia z paskiem LED)
  • jest niski koszt w wysokości 2,5 USD (OK, to względne, ale kontrolery obsługujące USB nieco droższe niż bardziej podstawowe typy)
  • ma ulepszony interfejs USART dla interfejsu UART
  • ma interfejs SPI na wypadek, gdybyś miał na myśli
  • ma źródło 25 mA i zlew I / O, więc w razie potrzeby można bezpośrednio sterować kilkoma diodami LED

Dalsza lektura
Funkcja ogólna USB na urządzeniu wbudowanym , Nota aplikacyjna Microchip AN1166

stevenvh
źródło
Wspomina paski LED, więc zakładam, że jest to protokół synchroniczny (w zasadzie SPI bez szpilki zwrotnej danych). Ten PIC ma tylko 1 port SPI, więc nie byłby odpowiedni. Chociaż mógł trochę zepsuć protokół.
Rocketmagnet
@Rocket - gdzie, jak mówi, jest to SPI? I nie będzie potrzebował dwóch magistral SPI: SPI jest multi-slave. I jak skomentował Scott i powiedziałem również na początku mojej odpowiedzi, myślę, że przez dwa porty rozumie on dwa piny, dlatego najpierw pomyślałem o UART.
stevenvh
Być może PIC18F24J50? Ale to część 3.3v, więc nie wiem, czy będzie pasować do paska LED.
Rocketmagnet,
1
Nie mówi, że to SPI, ale wcześniej używałem pasków LED i zawsze były one synchroniczne. Mogę się mylić. Mógł oznaczać inny rodzaj paska LED, którego nigdy wcześniej nie widziałem. Myślę, że ma na myśli dwa piny dla zegara i danych.
Rocketmagnet,
Właściwie źle przeczytałem pytanie i pomyślałem, że powiedział dwa paski LED! Powiedział dwa piny dla jednego paska LED. Tak więc, tak jak z oryginalną sugestią.
Rocketmagnet,
4

Taśma LED ma prosty interfejs szeregowy. Jeśli tylko próbujesz sterować nim za pomocą komputera, możesz użyć układu FTDI do poruszania pinami: http://www.ftdichip.com/Products/ICs/FT232R.htm

Wtedy złożoność jest po stronie komputera przy użyciu bibliotek libftdi lub D2XX . Ale to nie jest takie złe, podobna złożoność do twojego przykładu Arduino.

Jeśli nie masz ochoty tworzyć sprzętu, możesz kupić wstępnie wykonane kable z układem FTDI od dystrybutorów FTDI, takich jak Mouser, lub od Sparkfun itp. Kable są dostępne w różnych konfiguracjach napięcia, więc zamawiaj ostrożnie.

Oczywiście, jeśli chcesz, aby projekt był niezależny lub autonomiczny, będziesz potrzebować pełnego rozwiązania mikrokontrolera.

markrages
źródło
Powinienem rozważyć przesłanie surowych danych SPI do paska LED za pomocą kontrolera USB. Microchip tworzy interfejs USB-SP-SPI, który ustawia się jako urządzenie HID, podczas gdy układy FTDI to VCOM lub D2XX i nie jestem pewien, który z nich najlepiej pasowałby do uruchomienia jasnego paska z programu c ++.
Steve Barna,
Nie jestem świadomy mostu USB <-> SPI, który pojawia się jako wirtualny port szeregowy, jak to robi układ mostka USB <-> UART. Zamiast tego będziesz musiał napisać kod bit-bit, co jest łatwe dla SPI.
markrages 10.10.12
3

Rozważ użycie PSoC3 .

PSoc3

Są dostępne z USB i prawie wszystkimi urządzeniami peryferyjnymi, które chcesz. (Są skonfigurowane w oprogramowaniu) Na pewno będziesz mieć dwa porty szeregowe na paski LED. Prawdopodobnie będziesz mieć 20, jeśli chcesz.

Środowisko programowania jest również przyjemnością w użyciu.

PSoC Creator

Rocketmagnet
źródło
3
To trochę przesada. Ale przyjrzę się temu.
Steve Barna,
8
@Rocket - Widzę na Digikey, że PSOC kosztuje ponad dwa razy więcej niż wspomniany PIC. Nie wątpię, że są warte swojej wagi w złocie (jak na mowie), jeśli potrzebujesz wszystkich tych konfigurowalnych urządzeń peryferyjnych, dla rozwiązań, których nie znajdziesz na żadnym innym mikrokontrolerze, takim jak 16 UART lub więcej. Ale OP wydaje się potrzebować tylko portu USB i portu szeregowego (UART, SPI lub I2C), wtedy znacznie tańsze jest wybranie stosunkowo niskiej klasy kontrolera, który ma właśnie to.
stevenvh
@stevenvh - Zgadzam się, PSoC mogą być boleśnie drogie. Naprawdę warto je produkować tylko wtedy, gdy można skorzystać z ich wielu funkcji. Ale do prototypowania są całkowicie tego warte. Nigdy nie musisz szukać specjalnego PIC, który ma odpowiednią kombinację urządzeń peryferyjnych, i możesz wprowadzać zmiany sprzętowe jednym kliknięciem!
Rocketmagnet,
@Rocket - „zaimplementuj zmiany sprzętowe jednym kliknięciem przycisku”. Tak, to właśnie powtarzali mi faceci z Cypress. Nie rozumiem tego (obszernie rozmawiałem o tym z moimi kolegami, a oni też nie): Jeśli potrzebuję na przykład timera w mojej aplikacji, istnieje szansa, że ​​potrzebuję go cały czas, a nie wyrzucam go na chwilę ponieważ chcę zrobić coś innego ze sprzętem. I zrobić docenić narzędzia konfiguracyjne, jak w zrzucie ekranu, a ja błagałem Motorola (zanim stał Freescale) A razy rhousand dodać niewielką FPGA do swoich kontrolerów HC05, ale to nie było ...
stevenvh
@Rocket - (kontynuacja) ... do zmiany konfiguracji w aplikacji, która miała mieć bardziej elastyczny kontroler podczas programowania . W tamtym czasie byliśmy dużym klientem Motoroli i konsultowali się z nami w sprawie pomysłów na uporządkowanie bałaganu HC05; były setki różnych typów, niektóre bardziej udane niż inne. Zasugerowałem więc 1) FPGA i / lub 2) tablicę przełączników krzyżowych, aby umożliwić podłączenie wybranych urządzeń peryferyjnych do (ograniczonych) I / O; sprzęt i tak był na kości. Ani się nie zdarzyło, a Motorola już nie produkuje kontrolerów ...
stevenvh,
0

Nie może być prostsze niż to: ATmega8U2 .

Na dodatek możesz nawet użyć tego z bootloaderem Arduino ...

Arkusz danych: http://www.atmel.com/Images/doc7799.pdf

(przepraszam, że jestem trochę zwięzły, piszę z telefonu)

ppeterka
źródło
2
Gdy wrócisz za komputer (czy nie powinno to być „przed”?), Możesz rozwinąć: w jaki sposób jest to najprostsze rozwiązanie? To musi być dobra historia :-), ponieważ ATmega8U2 jest o 50% droższy niż PIC.
stevenvh,
1
Preferuję linię AVR (szczególnie ATmega), ponieważ można używać środowiska Arduino do szybkiego prototypowania (plakat jest tego zaznajomiony!) I umożliwia szybkie cykle testowania i naprawy. Następnie optymalizuję kod ręcznie, a nawet korzystam z mniejszego AVR uC, takiego jak Tiny2313 (BTW, istnieją biblioteki soft-USB dla AVR). Chciałem polubić PIC, ale kiedy na nie spojrzałem (tuż przed startem Arduino), wybrałem AVR: odkryłem, że ich dokumenty są lepsze, a społeczność silniejsza - pomimo tego, tutaj, na Węgrzech, PIC są historycznie bardziej wspierane. Wybrałbym krótszy cykl deweloperski, aby obniżyć koszty przy małej produkcji.
ppeterka
1
Dokładnie dlaczego głosowanie negatywne? Chcesz to wyjaśnić?
ppeterka