Antarmuka komputer berkecepatan tinggi dengan Arduino

10

Saya merencanakan proyek dengan Arduino yang melibatkan penanganan banyak permintaan dari komputer host, dan standar baud serial 115200 maksimum tidak cukup. Saya ingin bisa mendapatkan dupleks penuh 1Mbps jika memungkinkan, tetapi 400Kbps + dupleks penuh bisa diterima. Saya menggunakan Arduino Due, jadi seharusnya bisa menangani kecepatan komunikasi yang jauh lebih tinggi.

Apakah ada cara untuk meningkatkan baud rate secara signifikan dari serial, atau adakah opsi kedua yang bisa saya gunakan untuk berinteraksi dengan komputer dengan kecepatan lebih tinggi?

Polinomial
sumber
Perangkat FTDI FT232 dapat mencapai 3 Mbps tanpa masalah, jadi jika Anda memiliki konverter serial USB berbasis FTDI, itu akan menjadi pilihan yang mudah. Saya benar-benar berharap orang-orang Arduino terjebak dengan mereka, daripada ATmega16U2.
Connor Wolf
Mungkin UART akan mendukung bitrate 1Mbps, tetapi Anda juga membutuhkan mikrokontroler untuk mengisinya dengan data. Itu bisa dilakukan, tetapi Anda akan mencapai maksimum dengan cukup mudah.
jippie
Jika Anda membanting AVR dengan "banyak permintaan" pada 400 kbps, saya akan kagum jika memiliki banyak waktu luang untuk melakukan apa pun yang digunakan.
Nick T

Jawaban:

8

Sangat mungkin untuk bangkit dalam kisaran Mbps dengan Arduino, terutama dengan karena Anda. Monitor serial hanya mendukung baud hingga 115200, tetapi Anda dapat menggunakan jendela terminal terpisah yang memungkinkan Anda mengatur baud Anda ke apa pun yang Anda suka.

Untuk informasi lebih lanjut, lihat Thread ini di forum Arduino.

Dalam hal pengaturan, pada Arduino semudah Serial.begin(1000000);atau sejauh itu. Ini semua tentang pengaturan perangkat yang ingin Anda komunikasikan, dan apa yang bisa ditangani.

Jay Greco
sumber
Apakah serial standar melalui driver USB mendukung kecepatan seperti itu? Saya akan berbicara melalui script, bukan serial monitor di IDE.
Polinomial
Saya percaya begitu. Jika Anda menggunakan skrip, Anda harus dalam kondisi yang baik. Perangkat keras UART pada Arduino Due sama dengan UNO; ia menggunakan ATmega16U untuk berinteraksi dengan serial, yang mampu setidaknya 1Mbps. Driver serial over USB harus mendukung kecepatan itu juga.
Jay Greco
Untuk menguji, Anda selalu dapat membuat sketsa tes cepat. Atur baud ke sesuatu yang lebih tinggi dari standar, dan gunakan terminal yang diatur pada baud yang sama. Jika data datang, Anda tahu bahwa Arduino bagus untuk baud itu.
Jay Greco
Secara teknis, tidak masalah apa yang diminta PC host dalam hal baud rate, tetapi hanya bahwa 16U dan prosesor Arduino utama setuju - sisi USB sebenarnya berjalan jauh lebih cepat daripada baud rate serial, dan semua PC Apakah memberitahu 16U apa kecepatan untuk menjalankan antarmuka serialnya. Juga, jika melihat ketidakakuratan dalam pembagi baud, ingatlah bahwa yang benar-benar penting adalah mereka cocok di antara kedua chip di papan Anda, bukan karena mereka cocok dengan beberapa tujuan tradisional. Meningkatkan sepenuhnya ke maksimum mungkin memerlukan firmware khusus untuk 16U.
Chris Stratton
1

Saya akan melihat menulis custom firmware untuk Atmega16u2 yang melakukan antarmuka USB. Chip itu dapat berbicara USB kecepatan penuh (hingga kecepatan sinyal 12 Mbit) dan port keluaran SPI dari chip itu tersedia dengan mudah di header ICSP. Kaitkan itu ke input SPI dari Arduino (juga tersedia di header ICSP-nya) dan Anda dapat menjalankan SPI di, saya pikir, 4 Mbit / s (4 jam CPU per bit.)

Atmegas pada mega (16u2 dan 128) dapat menjalankan port serial mereka hingga 2 Mbit / s. Jika Anda menulis firmware khusus untuk 16u2, Anda juga dapat menggunakan USART serial asinkron yang sudah ada.

Dalam kedua kasus ini, Anda mungkin akan kehilangan programabilitas port serial, jadi Anda harus menggunakan programmer terpisah berbasis USB.

Proyek LUFA memiliki banyak program sampel dan pustaka yang membantu untuk benar-benar berbicara USB pada chip Atmega. "libusb" adalah perpustakaan yang nyaman untuk berbicara langsung ke perangkat USB, daripada harus bergantung pada emulasi serial.

Jon Watte
sumber
0

Ada beberapa hasil yang mungkin berguna di sini .

Eric Gunnerson
sumber