Какой стандартный интерфейс и протокол передачи данных в Arduino Mega ?

ArtemDolst
Offline
Зарегистрирован: 08.03.2021

Доброго времени суток! Пожалуйста, помогите разобраться с несколькими вопросами: 

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?

Спасибо за ответы!

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

USB это 4 провода. От компа до USB-to-serial протокол USB. От USB-to-serial до микроконтроллера - serial.

ArtemDolst
Offline
Зарегистрирован: 08.03.2021

1. USB - это интерфейс, а не протокол, потому что это физический уровень. Я правильно понимаю? - мне нужно знать какой протокол используется?

2. Если у нас встречаются на пути передачи/приёма два интерфейса USB и Serial (то бишь RS-232), то может ли при этом быть всего один протокол? Или протоколов тоже два (на каждый свой) используется? 

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Для ББ - устройство USB-to-serial подключенное к нему (при наличии драйверов) является COM портом.

 

negavoid2
negavoid2 аватар
Offline
Зарегистрирован: 06.05.2020

Serial тоже физический уровень. Используется Serial protocol.

То, что USB встречается по пути, неважно, этот момент обрабатывается драйвером. Разумеется, внутри используется один из протоколов обмена по USB, но вы этого не увидите, будете работать только с последовательным обменом.

Kakmyc
Offline
Зарегистрирован: 15.01.2018

Интерфейс называется UART.
Atmega8u2, ch340 и тд, в данном случае являются преобразователем USB->UART.

Протокол это другое, практически любой протокол можно натянуть на практически любой интерфейс

rkit
Offline
Зарегистрирован: 23.11.2016

Нет никакого стандартного протокола. Ты сам можешь написать что угодно.

ArtemDolst
Offline
Зарегистрирован: 08.03.2021

Я понимаю, что можно применить любой. Подскажите, пожалуйста, а стандртно в Arduino какой протокол используется? 

P.S. Serial protocol - такого не нашёл, только SLIP (Serial Line Internet Protocol) ищется, но он, я так полагаю, для другого предназачен.

b707
Offline
Зарегистрирован: 26.05.2017

ArtemDolst - а в чем смысл этого теоретического диспута? Вопрос-то в чем?

Или вам задали написать реферат на тему "протоколы взаимодействия ардуино с ПК"? :)) - другой причины задавать подобные вопросы мне в голову не приходит

ArtemDolst
Offline
Зарегистрирован: 08.03.2021

Да, почти так. Мне нужно на структурной схеме чётко отразить вне пункты приёма/передачи, а для этого необходимо знать данные вещи. 

negavoid2
negavoid2 аватар
Offline
Зарегистрирован: 06.05.2020

Стандартно - любой, потому что никакого нет, как придумает разработчик, так и будет. Просто последовательный.

Может быть, можно ещё описать все вот эти baud rate, битность, контроль чётности - в принципе, чем не параметры протокола.

ArtemDolst
Offline
Зарегистрирован: 08.03.2021

negavoid2 пишет:

Стандартно - любой, потому что никакого нет, как придумает разработчик, так и будет. Просто последовательный.

Может быть, можно ещё описать все вот эти baud rate, битность, контроль чётности - в принципе, чем не параметры протокола.

Хорошо, а как придумал разработчик Arduino ? )) Какой он использует? - пусть не стандартно, а просто использует.

negavoid2
negavoid2 аватар
Offline
Зарегистрирован: 06.05.2020

Хорошо, давайте по аналогии. Вот, к примеру, у вас есть мука и вода (ардуино), и нужно из них получить съедобное изделие (готовый девайс). Вы можете поджарить тесто на сковороде, можете запихнуть в духовку, в тостер, в микропечку, в русскую печь, в мультиварку, ещё куда-нибудь - какой из всех этих способов стандартный?

negavoid2
negavoid2 аватар
Offline
Зарегистрирован: 06.05.2020

А вообще, пишите - стандартный интерфейс: Serial, стандартный протокол: текстовый - не ошибётесь.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

ТС, зачитай чонить за UART/USART.  Стандартней некуда. 

ArtemDolst
Offline
Зарегистрирован: 08.03.2021

negavoid2 пишет:

Хорошо, давайте по аналогии. Вот, к примеру, у вас есть мука и вода (ардуино), и нужно из них получить съедобное изделие (готовый девайс). Вы можете поджарить тесто на сковороде, можете запихнуть в духовку, в тостер, в микропечку, в русскую печь, в мультиварку, ещё куда-нибудь - какой из всех этих способов стандартный?

А у нас "тостер" или "мультиварка"?

Пожалуйста, если Вы это понимаете, Вы можете конкретно сказать:

1. На пути от ПК (USB A) до Arduino (USB B) какой протокол? 

2. На пути от Arduino (USB B) до UART какой протокол?

Благодарю за ответ!

ArtemDolst
Offline
Зарегистрирован: 08.03.2021

negavoid2 пишет:

А вообще, пишите - стандартный интерфейс: Serial, стандартный протокол: текстовый - не ошибётесь.

"Serial" - это только на пути от UART до USB В. Текстовый - ни о чём не говорит, это же обмен не между программами на ПК.

sadman41
Offline
Зарегистрирован: 19.10.2016

ATMega328 <=UART=> CH340 <=USB=> ПК
ATMega2560 <=UART=> Atmega8U2 <=USB=> ПК

negavoid2
negavoid2 аватар
Offline
Зарегистрирован: 06.05.2020

программа на пк <--- (обмен по serial, пользовательский протокол) ---> COM4 <--- (proprietary protocol в драйвере) ---> USB PC <--- (usb cdc, наверное) ---> USB arduino <--- (обмен по serial, пользовательский протокол) ---> программа на AtMega328. Вот столько там протоколов по пути.

negavoid2
negavoid2 аватар
Offline
Зарегистрирован: 06.05.2020

Я тоже думаю, что от ТС хотят услышать UART с параметрами порта - это, наверное, и назвали протоколом.

ArtemDolst
Offline
Зарегистрирован: 08.03.2021

negavoid2 пишет:

Я тоже думаю, что от ТС хотят услышать UART с параметрами порта - это, наверное, и назвали протоколом.

Спасибо большое за ответ.

Приведу немного другой пример: если у нас есть интерфейс (физический, аппаратный) RS-485, то он может использовать протокол ModBus. Сразу же всё становится понятным, то есть физически он соединяется по двум проводам, так как 485 и работает по принципу master-slave, а также можно конкретно объяснить принцип действия этого протокола ModBus. 

Я тоже самое и хотел бы узнать, только про свой пример. Спасибо.

sadman41
Offline
Зарегистрирован: 19.10.2016

ArtemDolst пишет:

Приведу немного другой пример: если у нас есть интерфейс (физический, аппаратный) RS-485, то он может использовать протокол ModBus.

...

Я тоже самое и хотел бы узнать, только про свой пример. Спасибо.

В таком случае искомый вами протокол - "User defined". ПК засылает набор байтов в Ардуину, Ардуина отвечает потоком байтов. Интерпретация потока на совести программиста-разработчика.

ArtemDolst
Offline
Зарегистрирован: 08.03.2021

sadman41 пишет:

ArtemDolst пишет:

Приведу немного другой пример: если у нас есть интерфейс (физический, аппаратный) RS-485, то он может использовать протокол ModBus.

...

Я тоже самое и хотел бы узнать, только про свой пример. Спасибо.

В таком случае искомый вами протокол - "User defined". ПК засылает набор байтов в Ардуину, Ардуина отвечает потоком байтов. Интерпретация потока на совести программиста-разработчика.

Интерпретация да, но ведь существуют же ещё правила, по которым это дело передаётся. Например, старт-стоп биты и т.д. для них программист ничего не пишет, но они же реализуются по каким-то правилам, а мне нужно узнать название этих "правил", то бишь протокола.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

В Ардуино никакого стандартного аналога ModBus нет. Каждый разработчик скетча волен использовать любой стандартный или нестандартный протокол при обмене через UART.

И, кстати, в числе стандартных протоколов, используемых Ардуино, также SPI и I2C.

negavoid2
negavoid2 аватар
Offline
Зарегистрирован: 06.05.2020

ArtemDolst пишет:
Интерпретация да, но ведь существуют же ещё правила, по которым это дело передаётся. Например, старт-стоп биты и т.д. для них программист ничего не пишет, но они же реализуются по каким-то правилам, а мне нужно узнать название этих "правил", то бишь протокола.

UART, но никто это протоколом обычно не называет.

Kakmyc
Offline
Зарегистрирован: 15.01.2018

Нет там никакого протокола.
Только параметры работы порта.
Тупая передача без проверок и ответов.
Все остальное разработчик должен реализовывать программно

Kakmyc
Offline
Зарегистрирован: 15.01.2018

А RS-485 это тот же UART, только другого физического уровня.
А ModBus можно к любому интерфейсу прикрутить.

ТС ты хотя бы погугли что ли, что такое ИНТЕРФЕЙС и что такое ПРОТОКОЛ

sadman41
Offline
Зарегистрирован: 19.10.2016

ArtemDolst пишет:

Интерпретация да, но ведь существуют же ещё правила, по которым это дело передаётся. Например, старт-стоп биты и т.д. для них программист ничего не пишет, но они же реализуются по каким-то правилам, а мне нужно узнать название этих "правил", то бишь протокола.

В этом случае Вам неплохо бы было почитать про ModBus и поискать там старт-стоп биты. Потому что пишете одно, а в уме держите другое.

На прикладном уровне, на котором и работает ModBus, у "Ардуины" нет никаких протоколов. Исключительно User Defined. Ниже - UART, иногда через USB-bridge.

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Уважаемый ТС - читайте даташит на CH340. Там Вам всё про протоколы расскажут.