Planuję projekt z Arduino, który wymaga obsługi dużej liczby żądań z komputera hosta, a standardowa maksymalna prędkość transmisji w standardzie 115200 nie jest wystarczająca. Chciałbym mieć możliwość uzyskania pełnego dupleksu 1 Mb / s, jeśli to możliwe, ale 400 Kb / s + pełny dupleks byłoby dopuszczalne. Używam Arduino Due, więc powinien być w stanie obsłużyć znacznie wyższe prędkości komunikacji.
Czy istnieje sposób na znaczne zwiększenie szybkości transmisji w stosunku do szeregowego, czy też jest druga opcja, jeśli mogę skorzystać z połączenia z komputerem przy wyższych prędkościach?
Odpowiedzi:
Zdecydowanie można się dostać w zakresie Mbps z Arduino, zwłaszcza z Due. Monitor szeregowy obsługuje tylko bity do 115200, ale możesz użyć osobnego okna terminala, które pozwala ustawić bod na dowolne.
Aby uzyskać więcej informacji, zobacz Ten wątek na forum Arduino.
Jeśli chodzi o konfigurację, na Arduino jest to tak proste, jak
Serial.begin(1000000);
i do tego stopnia. Chodzi o konfigurację urządzenia, z którym chcesz się komunikować, i jego obsługi.źródło
Chciałbym napisać niestandardowe oprogramowanie dla Atmega16u2, które obsługuje interfejs USB. Ten układ może mówić z pełną prędkością USB (prędkość sygnału do 12 Mbit), a port wyjściowy SPI tego układu jest dogodnie dostępny w nagłówku ICSP. Podłącz to do wejścia SPI Arduino (dostępnego również w nagłówku ICSP) i możesz uruchomić SPI przy, jak sądzę, 4 Mbit / s (4 zegary procesora na bit).
Atmegas na mega (16u2 i 128) może obsługiwać port szeregowy z prędkością do 2 Mbit / s. Jeśli napiszesz niestandardowe oprogramowanie układowe dla 16u2, możesz również użyć asynchronicznego szeregowego USART, który już tam jest.
W obu przypadkach prawdopodobnie stracisz programowalność portu szeregowego, więc będziesz musiał użyć oddzielnego programatora opartego na USB.
Projekt LUFA ma wiele przykładowych programów i pomocnych bibliotek do mówienia USB na układzie Atmega. „libusb” to wygodna biblioteka do bezpośredniej rozmowy z urządzeniami USB, bez konieczności polegania na emulacji szeregowej.
źródło
Istnieje kilka wyników, które mogą być przydatne tutaj .
źródło