Какой стандартный интерфейс и протокол передачи данных в Arduino Mega ?
- Войдите на сайт для отправки комментариев
Втр, 30/03/2021 - 13:11
Доброго времени суток! Пожалуйста, помогите разобраться с несколькими вопросами:
1. При соединении платы Arduino Mega по USB (A - B) кабелю с ПК и задействованию стандартных функций (Serial) в IDE, по какому протоколу передаются и принимаются данные?
2. В официальной документации написано, что для обмена данными по USB используется микроконтроллер Atmega8U2, запрограммированный как конвертер USB-to-serial. Возникает вопрос: как правильно назвать интерфейс, по которому происходит приём и передача данных?
3. Если используется конвертер USB-to-serial, то физически в USB порт ПК идут 3 линии (RX, TX, GND) или все 5, которые и задействованы в обычном USB?
Спасибо за ответы!
USB это 4 провода. От компа до USB-to-serial протокол USB. От USB-to-serial до микроконтроллера - serial.
1. USB - это интерфейс, а не протокол, потому что это физический уровень. Я правильно понимаю? - мне нужно знать какой протокол используется?
2. Если у нас встречаются на пути передачи/приёма два интерфейса USB и Serial (то бишь RS-232), то может ли при этом быть всего один протокол? Или протоколов тоже два (на каждый свой) используется?
Для ББ - устройство USB-to-serial подключенное к нему (при наличии драйверов) является COM портом.
Serial тоже физический уровень. Используется Serial protocol.
То, что USB встречается по пути, неважно, этот момент обрабатывается драйвером. Разумеется, внутри используется один из протоколов обмена по USB, но вы этого не увидите, будете работать только с последовательным обменом.
Интерфейс называется UART.
Atmega8u2, ch340 и тд, в данном случае являются преобразователем USB->UART.
Протокол это другое, практически любой протокол можно натянуть на практически любой интерфейс
Нет никакого стандартного протокола. Ты сам можешь написать что угодно.
Я понимаю, что можно применить любой. Подскажите, пожалуйста, а стандртно в Arduino какой протокол используется?
P.S. Serial protocol - такого не нашёл, только SLIP (Serial Line Internet Protocol) ищется, но он, я так полагаю, для другого предназачен.
ArtemDolst - а в чем смысл этого теоретического диспута? Вопрос-то в чем?
Или вам задали написать реферат на тему "протоколы взаимодействия ардуино с ПК"? :)) - другой причины задавать подобные вопросы мне в голову не приходит
Да, почти так. Мне нужно на структурной схеме чётко отразить вне пункты приёма/передачи, а для этого необходимо знать данные вещи.
Стандартно - любой, потому что никакого нет, как придумает разработчик, так и будет. Просто последовательный.
Может быть, можно ещё описать все вот эти baud rate, битность, контроль чётности - в принципе, чем не параметры протокола.
Стандартно - любой, потому что никакого нет, как придумает разработчик, так и будет. Просто последовательный.
Может быть, можно ещё описать все вот эти baud rate, битность, контроль чётности - в принципе, чем не параметры протокола.
Хорошо, а как придумал разработчик Arduino ? )) Какой он использует? - пусть не стандартно, а просто использует.
Хорошо, давайте по аналогии. Вот, к примеру, у вас есть мука и вода (ардуино), и нужно из них получить съедобное изделие (готовый девайс). Вы можете поджарить тесто на сковороде, можете запихнуть в духовку, в тостер, в микропечку, в русскую печь, в мультиварку, ещё куда-нибудь - какой из всех этих способов стандартный?
А вообще, пишите - стандартный интерфейс: Serial, стандартный протокол: текстовый - не ошибётесь.
ТС, зачитай чонить за UART/USART. Стандартней некуда.
Хорошо, давайте по аналогии. Вот, к примеру, у вас есть мука и вода (ардуино), и нужно из них получить съедобное изделие (готовый девайс). Вы можете поджарить тесто на сковороде, можете запихнуть в духовку, в тостер, в микропечку, в русскую печь, в мультиварку, ещё куда-нибудь - какой из всех этих способов стандартный?
А у нас "тостер" или "мультиварка"?
Пожалуйста, если Вы это понимаете, Вы можете конкретно сказать:
1. На пути от ПК (USB A) до Arduino (USB B) какой протокол?
2. На пути от Arduino (USB B) до UART какой протокол?
Благодарю за ответ!
А вообще, пишите - стандартный интерфейс: Serial, стандартный протокол: текстовый - не ошибётесь.
"Serial" - это только на пути от UART до USB В. Текстовый - ни о чём не говорит, это же обмен не между программами на ПК.
ATMega328 <=UART=> CH340 <=USB=> ПК
ATMega2560 <=UART=> Atmega8U2 <=USB=> ПК
программа на пк <--- (обмен по serial, пользовательский протокол) ---> COM4 <--- (proprietary protocol в драйвере) ---> USB PC <--- (usb cdc, наверное) ---> USB arduino <--- (обмен по serial, пользовательский протокол) ---> программа на AtMega328. Вот столько там протоколов по пути.
Я тоже думаю, что от ТС хотят услышать UART с параметрами порта - это, наверное, и назвали протоколом.
Я тоже думаю, что от ТС хотят услышать UART с параметрами порта - это, наверное, и назвали протоколом.
Спасибо большое за ответ.
Приведу немного другой пример: если у нас есть интерфейс (физический, аппаратный) RS-485, то он может использовать протокол ModBus. Сразу же всё становится понятным, то есть физически он соединяется по двум проводам, так как 485 и работает по принципу master-slave, а также можно конкретно объяснить принцип действия этого протокола ModBus.
Я тоже самое и хотел бы узнать, только про свой пример. Спасибо.
Приведу немного другой пример: если у нас есть интерфейс (физический, аппаратный) RS-485, то он может использовать протокол ModBus.
...
Я тоже самое и хотел бы узнать, только про свой пример. Спасибо.
В таком случае искомый вами протокол - "User defined". ПК засылает набор байтов в Ардуину, Ардуина отвечает потоком байтов. Интерпретация потока на совести программиста-разработчика.
Приведу немного другой пример: если у нас есть интерфейс (физический, аппаратный) RS-485, то он может использовать протокол ModBus.
...
Я тоже самое и хотел бы узнать, только про свой пример. Спасибо.
В таком случае искомый вами протокол - "User defined". ПК засылает набор байтов в Ардуину, Ардуина отвечает потоком байтов. Интерпретация потока на совести программиста-разработчика.
Интерпретация да, но ведь существуют же ещё правила, по которым это дело передаётся. Например, старт-стоп биты и т.д. для них программист ничего не пишет, но они же реализуются по каким-то правилам, а мне нужно узнать название этих "правил", то бишь протокола.
В Ардуино никакого стандартного аналога ModBus нет. Каждый разработчик скетча волен использовать любой стандартный или нестандартный протокол при обмене через UART.
И, кстати, в числе стандартных протоколов, используемых Ардуино, также SPI и I2C.
UART, но никто это протоколом обычно не называет.
Нет там никакого протокола.
Только параметры работы порта.
Тупая передача без проверок и ответов.
Все остальное разработчик должен реализовывать программно
А RS-485 это тот же UART, только другого физического уровня.
А ModBus можно к любому интерфейсу прикрутить.
ТС ты хотя бы погугли что ли, что такое ИНТЕРФЕЙС и что такое ПРОТОКОЛ
Интерпретация да, но ведь существуют же ещё правила, по которым это дело передаётся. Например, старт-стоп биты и т.д. для них программист ничего не пишет, но они же реализуются по каким-то правилам, а мне нужно узнать название этих "правил", то бишь протокола.
В этом случае Вам неплохо бы было почитать про ModBus и поискать там старт-стоп биты. Потому что пишете одно, а в уме держите другое.
На прикладном уровне, на котором и работает ModBus, у "Ардуины" нет никаких протоколов. Исключительно User Defined. Ниже - UART, иногда через USB-bridge.
Уважаемый ТС - читайте даташит на CH340. Там Вам всё про протоколы расскажут.