Arduino ile yüksek hızlı bilgisayar arayüzü


10

Bir ana bilgisayardan çok sayıda istek işleme içeren bir Arduino ile bir proje planlıyorum ve seri üzerinden standart 115200 maksimum baud yeterli değil. Mümkünse 1 Mbps tam dupleks almak istiyorum, ancak 400Kbps + tam dupleks kabul edilebilir. Arduino Due kullanıyorum, bu yüzden önemli ölçüde daha yüksek iletişim hızlarını idare edebilmelidir.

Seriye göre baud hızını önemli ölçüde artırmanın bir yolu var mı, yoksa daha yüksek hızlarda bir bilgisayarla arabirim açısından kullanabileceğim ikinci bir seçenek var mı?


FTDI FT232 cihazları sorunsuz bir şekilde 3 Mbps'ye kadar çıkabilir, bu nedenle FTDI tabanlı bir USB seri dönüştürücünüz varsa, bu kolay bir seçenek olacaktır. Arduino halkının ATmega16U2 yerine onlarla takılıp kalmasını gerçekten isterdim.
Connor Wolf

Belki UART 1Mbps bit hızlarını destekleyecektir, ancak mikro denetleyiciye veri ile beslemeniz de gerekir. Bu yapılabilir, ancak maksimuma kolayca ulaşırsınız.
jippie

400 kbps'de "çok sayıda istek" olan bir AVR çarpıyorsanız, kullanım için çok fazla zamanınız varsa şaşırırdım.
Nick T

Yanıtlar:


8

Mbps aralığında bir Arduino ile, özellikle de Due ile. Seri monitör yalnızca 115200'e kadar baud'ları destekler, ancak baud'unuzu istediğiniz herhangi bir şeye ayarlamanıza izin veren ayrı bir terminal penceresi kullanabilirsiniz.

Biraz daha fazla bilgi için Arduino forumundaki Bu Konuyu inceleyin .

Kurulum açısından, Arduino'da bu kadar Serial.begin(1000000);veya bu kadar kolaydır . Her şey iletişim kurmak istediğiniz cihazın kurulumu ve nelerin üstesinden gelebileceği ile ilgilidir.


USB sürücüsü üzerinden standart seri bu hızları destekliyor mu? IDE'deki seri monitörle değil, bir senaryoyla konuşacağım.
Polinom

İnanıyorum. Bir komut dosyası kullanıyorsanız, iyi durumda olmalısınız. Arduino Due üzerindeki UART donanımı UNO ile aynıdır; ATmega16U'yu en az 1Mbps kapasiteye sahip seriyle arayüz oluşturmak için kullanır. USB üzerinden seri sürücüsü de bu hızı desteklemelidir.
Jay Greco

Test etmek için her zaman hızlı bir test çizimi oluşturabilirsiniz. Baud'u varsayılandan daha yüksek bir değere ayarlayın ve aynı baud'da kurulmuş bir terminal kullanın. Veriler gelirse, Arduino'nun bu baud'a kadar iyi olduğunu biliyorsunuz.
Jay Greco

Teknik olarak, ana bilgisayarın baud hızı açısından ne istediğini önemli değil, sadece 16U ve ana Arduino işlemcisinin aynı fikirde olduğu - gerçek USB tarafı yine de seri baud hızından ve tüm PC'den çok daha hızlı çalışıyor 16U'ya seri arayüzünü hangi hızda çalıştıracağını söyler. Ayrıca, baud bölenlerindeki yanlışlıklara bakarsanız, gerçekten önemli olan şeyin, bazı geleneksel hedeflerle eşleşmedikleri değil, tahtadaki iki fiş arasında eşleştikleri olduğunu unutmayın. Bunu maksimuma çıkarmak için 16U için özel bellenim gerekebilir.
Chris Stratton

1

USB arayüzünü yapan Atmega16u2 için özel bellenim yazmayı düşünürdüm. Bu çip, tam hızlı USB (12 Mbit sinyal hızına kadar) konuşabilir ve bu çipin SPI çıkış bağlantı noktası, ICSP başlığında kolayca kullanılabilir. Bunu Arduino'nun SPI girişine bağlayın (ICSP başlığında da mevcuttur) ve SPI'yi 4 Mbit / s'de (bit başına 4 CPU saati) çalıştırabilirsiniz.

Mega (16u2 ve 128) üzerindeki Atmegas, seri portlarını 2 Mbit / s'ye kadar çalıştırabilir. 16u2 için özel bellenim yazarsanız, zaten var olan eşzamansız seri USART'ı da kullanabilirsiniz.

Bu iki durumda da büyük olasılıkla seri port programlanabilirliğini kaybedersiniz, bu nedenle USB tabanlı ayrı bir programlayıcı kullanmanız gerekir.

LUFA projesi, bir Atmega çipinde USB'yi konuşmak için birçok örnek programa ve yardımcı kütüphanelere sahiptir. "libusb", seri öykünmeye güvenmek yerine doğrudan USB aygıtlarıyla konuşmak için uygun bir kitaplıktır.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.