Идея такая - уже имеется ethernet-UART bridge, на выходе которого TTL-уровни RX/TX.
Хочу на МК (может на Arduino, или на esp866, если он умеет не по wi-fi отдавать пакеты, а через UART) реализовать SNMP агент, который бы отдавал состояние цифровых или аналоговых входов.
Т.к. данных там немного, скорости UART должно хватить. Или не получится?
Ethernet - это сетевой стандарт нижнего уровня, который может работать поверх любого подходящего интерфейса. UART - это просто интерфейс. SNMP в качестве канала передачи использует Ethernet. Так вот отсюда вопрос: что будет "превращать" пакеты из UART в SNMP, как того требует стандарт на данный протокол?
В общем случае, пакет SNMP это набор байтов, который идёт от одного устройства к другому, оформленный всякими заголовками и т.д.. Я думал, что МК можно заставить сформировать эти байты нужным образом, чтобы передать через адаптер UART в Ethernet,
Телнет ведь успешно передаёт туда-обратно байты меж МК и компьютером в данной схеме. Послал строку с компа - получил её в МК.
Так вот у меня и родился вопрос - для UART преобразователя все входящие пакеты не являются Ethernet пакетами, поэтому он их оформит всеми необходимыми заголовками. И что-то мне подсказывает, что невозможно его заставить отличить обычный UART пакет от SNMP пакета. Выход один - вещать сразу в Ethernet.
Я думал почему-то, что любой байт, который посылается в этот преобразователь со стороны Ethernet, таким же и передаётся в МК. Т.е. передали 0x11 - этот символ и выйдет из UART, т.е. поступит в МК.
Я думал почему-то, что любой байт, который посылается в этот преобразователь со стороны Ethernet, таким же и передаётся в МК. Т.е. передали 0x11 - этот символ и выйдет из UART, т.е. поступит в МК.
Разве не так?
Нет. Не так.
Вопервых, обмен по сети идет кадрами. Не по одному байту. То есть ваш байт попадает в преобразователь. Затем он оборачевается в ip-заголовки. Потом это все оборачивается в ethernet заголовки. И только тогда передается в сеть.
На приемном конце процедура обратная.
Обычно, ещё там буфера имеются. Чтобы не по одному байту в пакете отправлять. Накопили скажем 16 байт, обернули заголовками - и отправили по сети.
Всё верно. Пусть пакет SNMP со всеми заголовками будет, он придёт в Ethernet и преобразуется в последовательность байтов. Которую примет МК. Это же маленький пакет.
Но ведь микросхема Ethernet, когда общается с МК, тоже ведь передаёт и принимает данные через входы и выходы МК. А у МК иного пути, чем через UART, нет. Хотя, возможно, на более продвинутых МК, чем Atmega328P, под общение с ethernet микросхемой выделены какие-то специальные входы/выходы.
Эх, посмотрел на шилд W5100 - он подключается по шине SPI...
Хочу на МК (может на Arduino, или на esp866, если он умеет не по wi-fi отдавать пакеты, а через UART) реализовать SNMP агент, который бы отдавал состояние цифровых или аналоговых входов.
Спасибо. Просто конвертер Lan -> UART уже имеется внешний, вот и думал - раз скорость обмена при запросах невелика - может, удастся как-нибудь через uart пропихнуть. Может так и возможно, видимо, никто ранее не задавался этим вопросом.
Кстати, где-то встречал и реализацию SPI через UART
Спасибо. Просто конвертер Lan -> UART уже имеется внешний, вот и думал - раз скорость обмена при запросах невелика - может, удастся как-нибудь через uart пропихнуть. Может так и возможно, видимо, никто ранее не задавался этим вопросом.
Кстати, где-то встречал и реализацию SPI через UART
Spi и uart это байториентированные усройства. Ethernet это пакетный протокол.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения