Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Организация информационного канала RS232
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры
amoralex
Есть несколько входных каналов RS232, на каждом стоит по микропроцессору, анализирующему приходящие данные. Как только сформировался пакет данных его необходимо передать на выходной канал. Следующий пакет данных допускается потерять, с учетом затрат на пересылку.

Есть один выходной канал RS232, на нем хочется, чтобы последовательно (по мере приема сформировавшихся пакетов) шли данные со входных каналов.

Совсем не ясен момент как организовать пересылку данных со входных микропроцессоров на выходной канал... Напрямую через микроконтроллер или через буферную память?

Буду благодарен за советы!
KRS
1. Можно подключить выходной канал к каждому из контроллеров, они по мере готовности выходного пакета его захватывают и передают, главное здесь миханизм синхронизации с остальными, чтобы 2 одновременно не стали передавать и надо что бы у каждого контроллера была 2 уарта
один на вход, другой выход - обычно отключен (в 3 состоянии) как выходной пакет готов контроллер подключает уарт на выход и передает пакет, потом отключает.
Тут самое сложно седлать синхронизацию, можно выделить ногу под сигнал занятости шины, но все равно как то надо исключить совсем одновременный захват шины.

2. Поставить отдельный контроллер на выходной канал и связать его с остальными например по I2C или SPI.
upc2
Непонятно где будет расположена буферная память?
Скорость передачи соизмерима с формированием пакета?
Так нельзя.Надо повышать скорость передачи.
Есть несколько вариантов:
1.Выходной контроллер поочереди опрашивает входные,
формирует пакет и передает его дальше.Выходные
контроллеры должны накапливать данные до запроса.
2.Входные контроллеры сформировав пакет выставляют
запрос на прерывание.Выходной контроллер на порядок
должен быть 'круче' входных.
Для работы по протоколу RS232 можно задействовать любые
выводы микроконтроллера ,если не хватает встроенных портов.
KRS
Цитата(upc2 @ Nov 29 2005, 12:21) *
Непонятно где будет расположена буферная память?
Скорость передачи соизмерима с формированием пакета?
Так нельзя.Надо повышать скорость передачи.
Есть несколько вариантов:
1.Выходной контроллер поочереди опрашивает входные,
формирует пакет и передает его дальше.Выходные
контроллеры должны накапливать данные до запроса.
2.Входные контроллеры сформировав пакет выставляют
запрос на прерывание.Выходной контроллер на порядок
должен быть 'круче' входных.
Для работы по протоколу RS232 можно задействовать любые
выводы микроконтроллера ,если не хватает встроенных портов.


Скорость передачи не обязательно повышать, все зависит от загрузки входных каналов, может там редкие пакеты, главное что бы хватило памяти на пиковую нагрузку если например сразу на все контроллеры придут пакеты.

И смонительно что выходной контроллер должен быть на порядок круче, UART не так сложно обрабатывать тем более суммарный поток данных все равно не больше чем может выдать один UART
Roma_te
Цитата(KRS @ Nov 29 2005, 12:32) *
1. Можно подключить выходной канал к каждому из контроллеров, они по мере готовности выходного пакета его захватывают и передают, главное здесь миханизм синхронизации с остальными, чтобы 2 одновременно не стали передавать и надо что бы у каждого контроллера была 2 уарта
один на вход, другой выход - обычно отключен (в 3 состоянии) как выходной пакет готов контроллер подключает уарт на выход и передает пакет, потом отключает.
Тут самое сложно седлать синхронизацию, можно выделить ногу под сигнал занятости шины, но все равно как то надо исключить совсем одновременный захват шины.

2. Поставить отдельный контроллер на выходной канал и связать его с остальными например по I2C или SPI.


Я думаю первый вариант - оптимальное решение. Только несогласен с тем, что необходимо иметь 2 уарта поскольку, как я понимаю, каждый канал уарта включаэт как приемник так и передатчик, который может быть объеденен с передатчиками других процессоров, например через монтажное ИЛИ, и отправлен на выход.
afe
Цитата(amoralex @ Nov 29 2005, 12:07) *
Есть несколько входных каналов RS232, на каждом стоит по микропроцессору, анализирующему приходящие данные. Как только сформировался пакет данных его необходимо передать на выходной канал. Следующий пакет данных допускается потерять, с учетом затрат на пересылку.

Есть один выходной канал RS232, на нем хочется, чтобы последовательно (по мере приема сформировавшихся пакетов) шли данные со входных каналов.

Совсем не ясен момент как организовать пересылку данных со входных микропроцессоров на выходной канал... Напрямую через микроконтроллер или через буферную память?

Буду благодарен за советы!


А почему бы не посмотреть в сторому RS485 не посмотреть, и вешать все на ону пару ...
iosifk
Цитата(amoralex @ Nov 29 2005, 11:07) *
Есть несколько входных каналов RS232, на каждом стоит по микропроцессору, анализирующему приходящие данные. Как только сформировался пакет данных его необходимо передать на выходной канал. Следующий пакет данных допускается потерять, с учетом затрат на пересылку.

Есть один выходной канал RS232, на нем хочется, чтобы последовательно (по мере приема сформировавшихся пакетов) шли данные со входных каналов.

Совсем не ясен момент как организовать пересылку данных со входных микропроцессоров на выходной канал... Напрямую через микроконтроллер или через буферную память?


Извините за ... но все - же. Если Вам лень написать десяток строк, то подумайте о тех, кто эти посты читает. Мы хотим Вам помочь, а иногда так получается, что бесполезно тратим свое время! Надо грамотно поставить условие задачи. А оно такое:
есть сеть из N микроконтроллеров.
И вот далее - сколько есть данных и с какой скоростью относительно канала передачи они поступают.
Надо описать то, как они расположены и их физическую реализацию.
Требуется определить протокол передачи данных.

Простейший вариант - один мастер. Он опрашивает слэйвы, и они отдают ему информацию. Нет никаких буферов и потерь пакетов. Но могут теряться данные в слэйвах, если размер памяти их буфера мал.
Более сложный вариант - опрос по запросу. Запрос можно сделать аппаратный, сложить все по ИЛИ и анализировать запрос прерывания от этих входов. Далее опрашивать того, кто имеет более высокий приоритет или любого.
Далее идут варианты с несколькими мастерами и с передачей эстафеты. Но это и гораздо сложнее в отладке.

Только после того, как будет определен протокол общения между процессорами, надо определить как будут передаваться данные от одного процессора к другому.
Как будет формироваться начало и конец кадра. Этот признак можно посылать как аппаратный флаг - сигналом. Можно произвести избыточное кодирование данных. Можно сделать как в LIN. По поводу LIN - скоро повешу у себя на сайте верстку статьи о LIN. Можно вводить большую паузу.

Теперь самое простое - физическая реализация линии связи. Точка- точка т.е. звезда, общая шина или комбинации. Уровни сигналов в линии - все зависит от скоростей, расстояний, помех и конструкции.

Удачи!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.