Interfaccia computer ad alta velocità con un Arduino


10

Sto pianificando un progetto con un Arduino che prevede la gestione di molte richieste da un computer host e il baud massimo standard 115200 su seriale non è sufficiente. Mi piacerebbe essere in grado di ottenere 1 Mbps full duplex, se possibile, ma 400 Kbps + full duplex sarebbero accettabili. Sto usando un Arduino Due, quindi dovrebbe essere in grado di gestire velocità di comunicazione significativamente più elevate.

Esiste un modo per aumentare significativamente la velocità di trasmissione su seriale o esiste una seconda opzione che posso scegliere in termini di interfaccia con un computer a velocità più elevate?


I dispositivi FTDI FT232 possono raggiungere i 3 Mbps senza problemi, quindi se si dispone di un convertitore seriale-USB basato su FTDI, sarebbe un'opzione semplice. Vorrei davvero che il popolo Arduino si fosse bloccato con loro, piuttosto che con l'ATmega16U2.
Connor Wolf,

Forse l'UART supporterà bitrate da 1 Mbps, ma è necessario anche il microcontrollore per alimentarlo con i dati. Può essere fatto, ma raggiungerai il massimo abbastanza facilmente.
jippie

Se stai sbattendo un AVR con "molte richieste" a 400 kbps, sarei sorpreso se ha molto tempo libero per fare qualcosa di utile.
Nick T

Risposte:


8

È sicuramente possibile alzarsi nella gamma Mbps con un Arduino, in particolare con il Due. Il monitor seriale supporta solo baud fino a 115200, ma è possibile utilizzare una finestra terminale separata che consente di impostare il baud su qualsiasi cosa si desideri.

Per qualche informazione in più, consulta questa discussione sul forum di Arduino.

In termini di installazione, su Arduino è facile Serial.begin(1000000);o fino a quel punto. Si tratta della configurazione del dispositivo con cui si desidera comunicare e di ciò che può gestire.


Il driver seriale su USB standard supporta tali velocità? Ci parlerò tramite uno script, non con il monitor seriale nell'IDE.
Polinomio

Credo di si. Se stai usando uno script, dovresti essere in buona forma. L'hardware UART su Arduino Due è uguale a UNO; utilizza ATmega16U per interfacciarsi con seriale, che è capace di almeno 1 Mbps. Anche il driver seriale su USB dovrebbe supportare tale velocità.
Jay Greco,

Per testare, è sempre possibile impostare uno schizzo di prova rapido. Imposta il baud su qualcosa di più alto del valore predefinito e usa un terminale impostato sullo stesso baud. Se i dati arrivano, sai che Arduino è all'altezza.
Jay Greco,

Tecnicamente, non importa cosa chiede il PC host in termini di baud rate, ma solo che il 16U e il processore Arduino principale concordano: il lato USB effettivo funziona comunque molto più velocemente del baud rate seriale e tutto il PC fa è dire alla 16U a quale velocità eseguire la sua interfaccia seriale. Inoltre, se osservi le imprecisioni nei divisori baud, ricorda che ciò che conta davvero è che si abbinino tra le due fiche sul tuo tabellone, non che corrispondano a un obiettivo tradizionale. Sfruttare al massimo questo potrebbe richiedere un firmware personalizzato per la 16U.
Chris Stratton,

1

Mi occuperei di scrivere firmware personalizzato per l'Atmega16u2 che sta eseguendo l'interfaccia USB. Quel chip può parlare USB a piena velocità (fino a 12 Mbit di velocità del segnale) e la porta di uscita SPI di quel chip è convenientemente disponibile nell'intestazione ICSP. Collegalo all'ingresso SPI di Arduino (disponibile anche sulla sua intestazione ICSP) e puoi eseguire SPI a, credo, 4 Mbit / s (4 clock della CPU per bit).

Gli Atmegas sul mega (16u2 e 128) possono eseguire la loro porta seriale fino a 2 Mbit / s. Se si scrive un firmware personalizzato per il 16u2, è anche possibile utilizzare la USART seriale asincrona già presente.

In entrambi questi casi, probabilmente perderai la programmabilità della porta seriale, quindi dovrai utilizzare un programmatore separato basato su USB.

Il progetto LUFA ha molti programmi di esempio e librerie utili per parlare effettivamente USB su un chip Atmega. "libusb" è una libreria conveniente per parlare direttamente con i dispositivi USB, piuttosto che dover fare affidamento sull'emulazione seriale.


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.