Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Тема закрыта

несколько sync/async RS-232 -> UDP

Чт июн 14, 2012 21:32:35

Здравствуйте!
Подскажите, пожалуйста, правильно ли я мыслю.
Задача: есть несколько устройств (измерительные приборы), которые передают данные по протоколу RS-232, один из них работает в обычном асинхронном режиме (типа COM-порт), другой же в синхронном (HDLC-кадры). У меня есть задумка передавать эти данные по ethernet, в виде UDP пакетов, а потом обрабатывать на компьютере. Передавать что-либо от компьютера к устройствам ненужно, т.е. односторонняя передача.
На данный момент вижу такую реализацию:
вход1-->буферFIFO-\
вход2-->буферFIFO--->(ATMegaXXX)--<SPI-интерфейс>-->(модуль ENC28J60)--> TCP/IP сеть (UDP)
входN-->буферFIFO-/
Алгоритм вижу такой: Буфера-FIFO принимают данные от устройств, а микроконтроллер поочередно опрашивает их и передает содержимое по SPI на сетевой модуль.
Что использовать в качестве буферов? какие микросхемы? Необходимая скорость работы RS-232 в асинхронном/синхронном режиме 9,6-128Kbit. реальная скорость передачи данных меньше.
Правилен ли мой подход в принципе? Или правильнее использовать один микроконтроллер без входного буфера, и один сетевой модуль на каждый канал? Есть ли смысл использовать мегу с двумя USART? В перспективе возможно увеличение каналов мониторинга до, скажем, десятка. Как быть с точки зрения рационализации?

Re: несколько sync/async RS-232 -> UDP

Пт июн 15, 2012 08:40:05

Непонятно, зачем вообще здесь нужен еще какой-то буфер. Разве у атмеги нету своей памяти чтобы буферизовать приходящие данные? А вообще для такого кол-ва ком-портов я бы взял камушек посерьезнее типа многоножки STM32. У старших моделей и 5 USARTов и Ethernet на борту есть.

Re: несколько sync/async RS-232 -> UDP

Пт июн 15, 2012 17:11:33

FoxBat писал(а):которые передают данные по протоколу RS-232

Передают по запросу или когда им вздумается? Если по запросу, что логично, то можно поставить мультиплексор для RS-232 (видел такое самодельное). А имхо лучше каждому прибору 485 интерфейс. И компьютеру 485 интерфейс и не надо эзернета.

Re: несколько sync/async RS-232 -> UDP

Пт июн 15, 2012 19:00:43

uk8amk писал(а):Непонятно, зачем вообще здесь нужен еще какой-то буфер. Разве у атмеги нету своей памяти чтобы буферизовать приходящие данные?

т.е. что вы предлагаете?
uk8amk писал(а):А вообще для такого кол-ва ком-портов я бы взял камушек посерьезнее типа многоножки STM32. У старших моделей и 5 USARTов и Ethernet на борту есть.

Это, возможно, будет следующая моя ступенька.
Последний раз редактировалось FoxBat Пт июн 15, 2012 23:33:55, всего редактировалось 1 раз.

Re: несколько sync/async RS-232 -> UDP

Пт июн 15, 2012 19:02:44

oleg110592 писал(а):Передают по запросу или когда им вздумается?

Передают, когда вздумается.
oleg110592 писал(а):А имхо лучше каждому прибору 485 интерфейс.

Нет, нужен именно езернет
Последний раз редактировалось FoxBat Пт июн 15, 2012 23:35:00, всего редактировалось 1 раз.

Re: несколько sync/async RS-232 -> UDP

Пт июн 15, 2012 19:15:04

Ну тогда или действительно STM32 (или другой микроконтроллер) с нужным количеством UARTов. Или на каждый прибор по меге (например мега48) и одна центральная мега, забираюшая данные с других мег, например по SPI и отправляющая эти данные по эзернету.

Re: несколько sync/async RS-232 -> UDP

Пт июн 15, 2012 19:34:40

oleg110592, поддерживаю. Вот только мега48 зачем?
Тут и тини2313 хватит за глаза. 128 байт ОЗУ - половину смело можно под FIFO буфер отдать (о котором тут упоминалось). Приём/передачу сделать на прерываниях.
Т.е. несколько тинек2313 подчинёнными (slave) на SPI. SPI запустить на 1...4МГц, чтобы заведомо успевать обмениваться. Ну и что-нибудь вроде меги16 (или поболее) в качестве центрального, главного на SPI, и передающего по езернету. Если это будет на одной плате, ну или достаточно близко размещено, то всё очень даже может получиться.

Вот только по езернету просто так? Или по tcp/ip? Если последнее, то может и меги32 не хватить. (что-то я не помню ТТХ софта TCP/IP для маленьких МК, поправьте кто знает)

Re: несколько sync/async RS-232 -> UDP

Пт июн 15, 2012 20:25:00

Спасибо, идея понятна. Думал, может есть готовые FIFO с буферной памятью.
Kavka писал(а):Вот только по езернету просто так? Или по tcp/ip? Если последнее, то может и меги32 не хватить. (что-то я не помню ТТХ софта TCP/IP для маленьких МК, поправьте кто знает)

Думаю, по UDP. Тут вот в 88-ую мегу целый HTTP-сервер запихали.
Последний раз редактировалось FoxBat Пт июн 15, 2012 23:35:28, всего редактировалось 1 раз.

Re: несколько sync/async RS-232 -> UDP

Пт июн 15, 2012 20:59:19

Вот только мега48 зачем
у нас сложилось так что мега48 дешевле тиней (кроме 13) а USART tiny2313 не пересекается с ли с SPI? Нет, посмотрел - с I2C пересекается. Не помню - чем-то SPI в тини2313 мне не подошел.
а для эзернета я б применил что-то типа готового модуля WIZ810MJ - подключал такой к меге по SPI - прекрасно работает.

Re: несколько sync/async RS-232 -> UDP

Пт июн 15, 2012 23:27:56

oleg110592 писал(а):а для эзернета я б применил что-то типа готового модуля WIZ810MJ

А чем плох ENC28J60?

Re: несколько sync/async RS-232 -> UDP

Сб июн 16, 2012 06:00:45

W5100 аппаратно реализует TCP, UDP, IPv4, ICMP, ARP, IGMP и MAC.
скорость как 100 так и 10 (автоопределение), потребление 185mA(3.3V)
ENC28J60 я не пробовал, но вначале почитал интернет - отзывы - глючная, много жрет, греется
ну и это почитал:
Существуют два основных варианта шилдов для работы с Ethernet — на основе старого доброго чипа ENC28J60 от Microchip и более совершенного W5100 от Wiznet. Оба решения используют для обмена шину SPI, отнимая всего четыре пина Arduino. Но ENC28J60 появился много раньше и явно проигрывает продвинутому W5100: только 10 Мбит/с, нет аппаратной поддержки IP, UDP, TCP. Кроме того, W5100 позволяет работать с четырьмя сокетами (что означает поддержку до четырех одновременных соединений).
В общем, настоятельно рекомендую использовать именно W5100, потому что он существенно экономит ключевой ресурс микроконтроллера — оперативную память (SRAM), которую приходится экономить (у Atmega328 — всего один килобайт). Ну и все остальные преимущества предобработки налицо: пока W5100 сам переспрашивает пакеты по протоколу TCP и считает контрольные суммы заголовков, Atmegа может спокойно заниматься более важными вещами.(c)

Ну и цена за готовый модуль, у буржуев - 19.50$ http://www.saelig.com/BRD/ETH027.htm
еще, правда не пробовали закупать - пока не знаю во сколько обойдется с доставкой

Re: несколько sync/async RS-232 -> UDP

Сб июн 16, 2012 09:17:14

W5100 аппаратно реализует TCP, UDP, IPv4, ICMP, ARP, IGMP и MAC.

Спасибо за инфу!
Тема закрыта