Простой последовательный двухточечный протокол связи - PullRequest
53 голосов
/ 03 мая 2009

Мне нужен простой протокол связи между двумя устройствами (ПК и микроконтроллером). ПК должен отправить некоторые команды и параметры на микро. Микро должен передавать массив байтов (данные от датчика).

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

Есть ли стандартное решение для этого? (Мне нужна только идея, а не полное решение).

P.S. Любой совет приветствуется. P.P.S Извините за любые грамматические ошибки, я надеюсь, вы понимаете.

Редактировать 1. Я не решил, будет ли это протокол ведущий / ведомый , или обе стороны могут инициировать связь. ПК должен знать, когда Micro выполнил задание, и может отправлять данные. Он может непрерывно опрашивать микро, если данные готовы, или микро может отправлять данные, когда работа выполнена. Я не знаю, что лучше и проще.

Редактировать 2. Аппаратное обеспечение и физический уровень * протокол 1026 *. Поскольку Используется серийный стандарт RS-232 C в ПК я буду использовать асинхронную связь . Я буду использовать только сигналы RxD, TxD и GND. Я не могу использовать дополнительные провода, потому что микроконтроллер AFAIK их не поддерживает. Кстати, я использую чип AVR ATmega128.

Поэтому я буду использовать фиксированную скорость передачи данных, 8 бит данных, 2 стоповых бита без проверки на четность (или с?).

Протокол передачи данных . Это то, что мой вопрос в первую очередь касается. Спасибо за предложение HDLC , PPP и Modbus протоколов. Я буду исследовать это.

Ответы [ 12 ]

0 голосов
/ 07 мая 2009

может быть, этот вопрос может быть совершенно глупым, но кто-нибудь рассматривал возможность использования одного из X / Y / Z MODEM протоколов?

Основным преимуществом использования одного из вышеуказанных протоколов является большая доступность готовых к использованию реализаций в различных средах программирования.

0 голосов
/ 03 мая 2009

Вы не указываете, как именно ведет себя микроконтроллер, но будет ли все, что передано с микроконтроллера, прямым ответом на команду с ПК? Если да, то кажется, что вы можете использовать какой-нибудь протокол master / slave (это, как правило, самое простое решение). Если обе стороны могут инициировать связь, вам нужен более общий протокол канального уровня. HDLC - классический протокол для этого. Хотя полный протокол, вероятно, является излишним для ваших нужд, вы можете, например, по крайней мере использовать тот же формат фрейма. Вы также можете взглянуть на PPP , чтобы узнать, есть ли что-то полезное.

...