Високошвидкісний комп'ютерний інтерфейс з Arduino


10

Я планую проект з Arduino, який передбачає обробку безлічі запитів від хост-комп'ютера, і стандартна максимальна кількість передач 115200 над серійними не є достатньою. Я хотів би мати можливість отримати 1Mbps повний дуплекс, якщо можливо, але 400Kbps + full дуплекс було б прийнятним. Я використовую Arduino Due, тому він повинен мати можливість справлятися зі значно більшими швидкостями зв'язку.

Чи є спосіб значно збільшити швидкість передачі даних в серійному режимі або є другий варіант, щодо якого я можу скористатися з точки зору взаємодії з комп'ютером на більш високій швидкості?


Пристрої FTDI FT232 без проблем можуть досягати швидкості до 3 Мбіт / с, тому якщо у вас є USB-послідовний перетворювач на базі FTDI, це було б простим варіантом. Я дуже хочу, щоб ардуїнські люди трималися з ними, а не ATmega16U2.
Коннор Вольф

Можливо, UART буде підтримувати бітрейт 1 Мбіт / с, але вам також потрібен мікроконтролер, який подає його з даними. Це можна зробити, але ви досягнете максимуму досить легко.
jippie

Якщо ви грюкаєте AVR з "великою кількістю запитів" зі швидкістю 400 кбіт / с, я буду вражений, якщо у нього є багато часу, щоб зробити щось корисне.
Нік Т

Відповіді:


8

Однозначно можна встати в діапазоні Мбіт / с за допомогою Arduino, особливо з Вашим Due. Послідовний монітор підтримує лише боди до 115200, але ви можете використовувати окреме вікно терміналу, яке дозволяє встановити передачу даних на все, що завгодно.

Для отримання додаткової інформації дивіться цю тему на форумі Arduino.

Що стосується налаштування, на Arduino це так просто, як Serial.begin(1000000);і в тій мірі. Це все про налаштування пристрою, з яким ви хочете спілкуватися, і про те, з чим він може працювати.


Чи підтримує стандартний серійний драйвер через USB такі швидкості? Я буду говорити з ним за допомогою сценарію, а не через послідовний монітор в IDE.
Поліном

Я вірю, що так і є. Якщо ви використовуєте сценарій, ви повинні бути в хорошій формі. Обладнання UART на Arduino Due - те саме, що і UNO; він використовує ATmega16U для взаємодії з послідовним, який здатний принаймні 1 Мбіт / с. Цей драйвер також повинен підтримувати послідовний USB-драйвер.
Джей Греко

Для тестування ви завжди можете створити швидкий тест-ескіз. Встановіть бод на щось вище, ніж за замовчуванням, і використовуйте термінал, встановлений у тій же передачі. Якщо дані надходять, ви знаєте, що Arduino добре підходить до цієї боди.
Джей Греко

З технічної точки зору це не має значення, про що приймає ПК у плані передачі даних, а швидше лише те, що 16U та основний процесор Arduino згодні - фактична USB-бік працює набагато швидше, ніж швидкість передачі даних у серійному режимі, і все це на ПК це сказати 16U, на якій швидкості запустити свій послідовний інтерфейс. Крім того, якщо ви дивитеся на неточності в розділювачах бод, пам’ятайте, що насправді важливо - це те, що вони співпадають між двома фішками на вашій дошці, а не те, що вони відповідають якійсь традиційній цілі. Повністю використати, що до максимуму може знадобитися спеціальна прошивка для 16U.
Кріс Страттон

1

Я б розібрався в написанні власної прошивки для Atmega16u2, який робить USB-з'єднання. Цей чіп може розмовляти повношвидкісним USB (до 12 Мбіт швидкості сигналу), а вихідний порт SPI цього чіпа зручно доступний у заголовку ICSP. Підключіть це до входу SPI Arduino (також доступного в його заголовку ICSP), і ви можете запускати SPI зі швидкістю 4 Мбіт / с (4 тактових процесора на біт.)

Атмегас на мега (16u2 і 128) може запускати свій послідовний порт зі швидкістю до 2 Мбіт / с. Якщо ви пишете власну прошивку для 16u2, ви також можете використовувати асинхронний послідовний USART, який вже є.

В обох цих випадках ви, ймовірно, втратите програмованість послідовних портів, тому вам доведеться використовувати окремий програміст на базі USB.

Проект LUFA має безліч зразкових програм та корисних бібліотек для власне розмовлення USB на мікросхемі Atmega. "libusb" - це зручна бібліотека для спілкування безпосередньо з USB-пристроями, а не для того, щоб покладатися на серійну емуляцію.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.