Quale microcontrollore può connettersi direttamente a una porta USB?


9

In sostanza, devo solo inviare alcuni dati al microcontrollore tramite USB, quindi il microprocessore decodifica i dati e guida una striscia luminosa a LED, che funziona a 5V. Ho problemi a trovare il microcontrollore giusto per il lavoro.

Il microcontrollore deve solo avere 2 porte di ingresso seriale per la comunicazione USB, due porte di uscita seriale per la comunicazione con la striscia LED ed essere in grado di funzionare a 5 V. Non è necessario disporre di un IC dedicato per la comunicazione USB quando tutto ciò di cui ho bisogno è una porta COM seriale impostata.

Ad esempio, ecco lo snippet del codice Arduino che scrive un byte sulla striscia 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); 
  }
}

Per bloccare i dati si inviano zeri alla striscia.


Penso che intendi una connessione USB (sono bidirezionali) e una connessione seriale (anche bidirezionale). Se ti piacciono le foto, la famiglia 18f4550 farà il lavoro.
Scott Seidman,

1
Qual è il protocollo per la striscia LED? È possibile aggiungere un collegamento al foglio dati o al sito Web della striscia?
Rocketmagnet,

@Rocketmagnet È questa striscia LED . Il foglio dati è in cinese, tuttavia c'è semplicemente un serial in e clock in, e si blocca inviando zeri lungo la linea.
Steve Barna,

Risposte:


7

Immagino che per "due porte di uscita seriale" intendi un UART (dal momento che descrivi anche USB come 2 porte). Rocketmagmet indica che molte / la maggior parte delle stringhe di LED usano SPI, ma che avranno bisogno di almeno 3 fili. Puoi specificare quale protocollo è necessario?

In generale Microchip ha i microcontrollori a basso costo, anche questa volta. E Microchip ha anche molti microcontrollori nel pacchetto DIL, mentre molti altri lo hanno abbandonato. Può essere importante per il fai-da-te. il PIC18F13K50

  • esiste in entrambi i pacchetti DIL-20 e SMT
  • funziona a 5 V (per l'interfacciamento con la striscia LED)
  • è a basso costo a $ 2,5 (OK, questo è relativo, ma i controller in grado di USB sono un po 'più costosi di altri tipi di base)
  • ha l'interfaccia USART migliorata per UART
  • ha un'interfaccia SPI nel caso lo intendessi
  • ha una sorgente da 25 mA e I / O sink, quindi è possibile pilotare direttamente un paio di LED indicatori, se necessario

Ulteriore lettura della
funzione generica USB su un dispositivo incorporato , nota applicativa sul microchip AN1166


Menziona le strisce LED, quindi presumo sia un protocollo sincrono (fondamentalmente SPI senza il pin di ritorno dei dati). Quel PIC ha solo 1 porta SPI, quindi non sarebbe adatto. Anche se poteva battere il protocollo.
Rocketmagnet,

@Rocket - dove dice che è SPI? E non avrà bisogno di due bus SPI: SPI è multi-slave. E come ha commentato Scott e ho anche detto all'inizio della mia risposta, penso che per due porte significhi due pin, ecco perché ho pensato prima a UART.
Stevenvh,

Forse il PIC18F24J50? Ma è una parte 3.3v, quindi non so se si interfaccia con la striscia LED.
Rocketmagnet,

1
Non dice che sia SPI, ma prima ho usato strisce LED e sono sempre state sincrone. Potrei sbagliarmi. Potrebbe significare un altro tipo di striscia LED che non ho mai visto prima. Penso che significhi due pin per orologio e dati.
Rocketmagnet,

In realtà, ho letto male la domanda e ho pensato che avesse detto due strisce LED! In realtà ha detto due pin per una striscia LED. Quindi, ehm, come eri con il suggerimento originale.
Rocketmagnet,

4

La tua striscia LED ha una semplice interfaccia seriale. Se stai solo cercando di controllarlo con un computer, puoi utilizzare un chip FTDI per spostare i pin: http://www.ftdichip.com/Products/ICs/FT232R.htm

Quindi la complessità è sul lato PC usando le librerie libftdi o D2XX . Ma non è poi così male, complessità simile al tuo esempio di Arduino.

Se non hai voglia di creare hardware, puoi acquistare cavi premade con il chip FTDI da distributori FTDI come Mouser o Sparkfun ecc. I cavi sono disponibili in diverse configurazioni di tensione, quindi ordinali attentamente.

Naturalmente, se vuoi che il progetto sia autonomo o autonomo in qualche modo, vorrai una soluzione di microcontrollore completa.


Dovrei considerare l'invio di dati SPI grezzi sulla striscia LED tramite un controller USB. Microchip crea una USB-a-SPI che si configura come un dispositivo HID, mentre i chip FTDI sono VCOM o D2XX e non sono sicuro di quale sia la soluzione migliore per l'esecuzione di una striscia luminosa da un programma c ++.
Steve Barna,

Non sono a conoscenza di un bridge USB <-> SPI che si presenta come una porta seriale virtuale come fanno i chip bridge USB <-> UART. Dovrai invece scrivere il codice di bit banging, che è facile per SPI.
segna il

3

Prendi in considerazione l'utilizzo di PSoC3 .

PSOC3

Sono disponibili con USB e quasi tutte le periferiche desiderate. (Sono configurati nel software) Sarai sicuramente in grado di avere due porte seriali per le strisce LED. Probabilmente ne avrai 20 se vuoi.

Anche l'ambiente di sviluppo è una gioia da usare.

Creatore PSoC


3
Beh, sembra un po 'eccessivo. Ma ci penserò.
Steve Barna,

8
@Rocket - Vedo su Digikey che un PSOC costa più del doppio del PIC che ho citato. Non dubito che valgano il loro peso in oro (come figura retorica), se hai bisogno di tutte quelle periferiche configurabili, per soluzioni che non troverai su nessun altro microcontrollore, come 16 UART o giù di lì. Ma OP sembra aver bisogno solo di una porta USB e di una porta seriale (UART, SPI o I2C), quindi è molto più economico scegliere un controller di fascia bassa che abbia proprio questo.
Stevenvh,

@stevenvh - Sono d'accordo, i PSoC possono essere dolorosamente costosi. Ne valgono davvero la pena solo per la produzione quando puoi sfruttare le loro numerose funzioni. Ma per la prototipazione, ne valgono assolutamente la pena. Non devi mai andare a cercare quel PIC speciale che ha la giusta combinazione di periferiche e puoi implementare le modifiche hardware con un clic di un pulsante!
Rocketmagnet,

@Rocket - "implementa le modifiche hardware con un clic di un pulsante". Sì, questo è quello che i ragazzi di Cypress continuavano a dirmi. Non capisco (ne ho discusso ampiamente con i miei colleghi, e nemmeno loro): se ad esempio ho bisogno di un timer nelle mie possibilità di applicazione è che ne ho bisogno tutto il tempo, non buttarlo fuori per un po ' perché voglio fare qualcosa di diverso con l'hardware. Io faccio apprezzare gli strumenti di configurazione, come nel tuo screenshot, e ho pregato Motorola (prima di diventare Freescale) un paio di volte rhousand per aggiungere un piccolo FPGA per loro controllori HC05, ma non era ...
stevenvh

@Rocket - (continua) ... per la riconfigurazione nell'applicazione, che doveva avere un controller più flessibile durante lo sviluppo . All'epoca eravamo un grande cliente Motorola e ci consultarono per avere idee su come ripulire il caos HC05; ce n'erano centinaia di tipi diversi, alcuni più riusciti di altri. Quindi ho suggerito 1) FPGA e / o 2) un array di switch crosspoint per consentire il collegamento di periferiche selezionate a I / O (limitate); l'hardware era sul dado comunque. Né è successo, e Motorola non produce più controller ...
Stevenvh,

0

Non può essere più semplice di questo: ATmega8U2 .

Per finire, puoi persino usarlo con il bootloader di Arduino ...

Scheda tecnica: http://www.atmel.com/Images/doc7799.pdf

(scusa per essere un po 'conciso, sto scrivendo dal telefono)


2
Quando sei di nuovo dietro al tuo PC (non dovrebbe essere "di fronte"?) Puoi elaborare: come è questa la soluzione più semplice? Deve essere una bella storia :-), dal momento che ATmega8U2 è più costoso del 50% rispetto al PIC.
Stevenvh,

1
Prediligo la linea AVR (in particolare ATmega) perché si può usare l'ambiente Arduino per la prototipazione rapida (il poster lo conosce bene!) E consente cicli rapidi di riparazione dei test. Quindi ottimizzo il codice manualmente o utilizzo anche un AVR più piccolo, come Tiny2313 (A proposito, ci sono librerie soft-USB per AVR). Volevo apprezzare i PIC, ma quando li ho guardati (poco prima che Arduino decollasse), ho scelto gli AVR: ho trovato i loro documenti migliori e la comunità più forte - nonostante ciò qui in Ungheria, i PIC sono storicamente più supportati. Sceglierei un ciclo di sviluppo più breve per ridurre i costi nella produzione a basso volume.
ppeterka,

1
Esattamente perché il downvote? Ti interessa spiegare?
ppeterka,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.