Какова максимально допустимая скорость серийного порта?
что такое самый быстрый серийный считыватель, который может сделать Mega? начать.Serial1(1024000) принимается для компиляции, но чтение неубедительно
есть предложения по более быстрому устройству?
@Tim, 👍2
Обсуждение2 ответа
Это зависит в основном от частоты процессора, см. Настройки USART/скорости передачи данных в таблице данных. Например, при частоте 16 МГц она может достигать 2 Мбит / с. Но вам также необходимо учитывать ошибку в скорости, что важно при общении с "сторонним" устройством.
Если у вас есть оба микроконтроллера под контролем, вы также можете рассмотреть возможность *USART в режиме SPI* с синхронизацией часов., @TMa
Arduino Mega 2560 работает на частоте 16 МГц. Есть онлайн-калькуляторы, облегчающие это, так как расчет не является прямой и простой формулой.
http://wormfood.net/avrbaudcalc.php
что показывает использование 16 МГц
Скорость передачи данных в бодах | УБРР(декабрь) | УБРР(шестнадцатеричный) | % от ошибки |
---|---|---|---|
300 | 3332 | 0x0D04 | 0.0 |
600 | 1666 | 0x0682 | 0.0 |
1200 | 832 | 0x0340 | 0.0 |
2400 | 416 | 0x01A0 | 0.0 |
4800 | 207 | 0x00CF | 0.2 |
9600 | 103 | 0x0067 | 0.2 |
14400 | 68 | 0x0044 | 0.6 |
19200 | 51 | 0x0033 | 0.2 |
28800 | 34 | 0x0022 | 0.8 |
38400 | 25 | 0x0019 | 0.2 |
57600 | 16 | 0x0010 | 2.1 - Едва в порядке |
76800 | 12 | 0x000C | 0,2 - ХОРОШО |
115200 | 8 | 0x0008 | 3.7 - ПЛОХО |
230400 | 3 | 0x0003 | 7.8 - ПЛОХО |
250000 | 3 | 0x0003 | 0.0 |
Где заметно, что загрузчик Arduino Mega использует
mega.menu.cpu.atmega2560.upload.speed=115200
что превышает допустимую частоту ошибок в 1%.
Хотя можно поддерживать скорости передачи данных, отличные от указанных выше, это не рекомендуется, так как приведенные выше значения являются стандартными. Промежуточные значения очень нетипичны и, вероятно, не заслуживают доверия на соответствующей другой стороне соединения.
Как я вижу, ваш приведенный выше пример равен 1024000, также стоит отметить, что HardwareSerial.cpp реализует метод преобразования запрошенной скорости передачи в бодах в конфигурацию USART, и я бы не обязательно доверял ему для нестандартных скоростей передачи в бодах, особенно в более старой версии Arduino IDE. Возможно, вы захотите попробовать последнюю версию 1.5.8+ и проверить скорость.
Это интересно. Почему загрузчик Arduino по умолчанию использует скорость загрузки с такой высокой частотой ошибок?, @Cerin
- Как разделить входящую строку?
- Как использовать SPI на Arduino?
- Как сбросить или отформатировать Arduino?
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
- Arduino Due vs Mega 2560
- Как получить уникальный идентификатор для всех плат Arduino?
- Почему я получаю avrdude: stk500v2_ReceiveMessage(): timeout error when uploading to Arduino Mega?
- Тайм-аут связи Arduino Mega с ошибкой программатора
Делители должны давать вам ровно 1 Мбит / с. Однако на этой плате это должен делать не только Mega2560 - USB-последовательный 8u2/16u2, и его прошивка также должна управлять им. К счастью, у вас есть похожие детали Atmel на обоих концах этой очень короткой ссылки, поэтому настройка должна быть возможной (вы можете проигнорировать запрос хоста и просто установить оба разделителя на 0). Но ваше программное обеспечение тоже должно быть в курсе. Возможно, вам захочется взглянуть на другую архитектуру, в которой сам процессор приложений говорит по USB, в стиле Леонардо., @Chris Stratton
Зачем вам нужна "самая быстрая серийная скорость"? Это для связи с каким именно устройством?, @jfpoilpret
Извините, моя ошибка - похоже, вы используете другой UART, чем тот, который подключен к USB., @Chris Stratton
устройство представляет собой последовательный кодировщик с ЧПУ FANUC...скорость 1024000 байт фиксирована, но нужно только вывести строб запроса, затем записать 77 бит последовательного ввода в буфер, затем игнорировать во время выполнения остальной части программы для расшифровки прочитанного, когда arduino генерирует тактовый импульс для отправки еще 77 битного слова... Я запустил его с помощью прерывания стробоскопа запроса для чтения входных данных, но не понял, как сохранить это в буфер (я вроде как новичок в этом деле) или если это вообще возможно..., @Tim