Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Для XCOMP продолжение обсуждения WAKE с прошлой страницы:

Отправлено Леонид Иванович 20 августа 2007 г. 22:45


"то, что написано в спецификации на WAKE это, по сути дела, только метод передачи N-байт информации не в виде ASCII, а через byte stuffing" - абсолютно правильно, еще с адресацией и с контролем целостности пакета. Остальное можно делать так, как пожелаете.

Согласно 7-уровневой модели OSI протокол Wake определяет Physical layer - EIA/TIA-485/232 и т.д., Data Link layer - stuffing, защита пакетов от искажений, сюда можно отнести и адресацию, на полноценную реализацию Network layer протокол не тянет. Все остальные уровни OSI отсутствуют, кроме 7-го, Application layer. Про него, так понимаю, и вопрос.

Когда SLAVE принимает пакет, он в первую очередь анализирует адрес. Если адрес отсутствует или равен нулю, это коллективный вызов, адресуются сразу все устройства. Этот режим используется при работе с одним устройством или при назначении адресов устройств.

Если адрес передается, но не совпадает с установленным в устройстве, устройство прекращает прием пакета и ждет маркера начала следующего пакета.

Если адрес совпадает, устройство продолжает прием пакета, код команды и данные в количестве N байт помещаются в буфер. Когда пакет принят, производится проверка CRC.

Если CRC совпадает, в глобальную переменную Command копируется код принятой команды, что служит сообщением для основной программы на выполнение команды. Команда выполняется, затем устройство передает ответ - свой адрес, код команды, на которую передается ответ, код ошибки и пакет данных, предусмотренный командой. Если ошибки нет, код ошибки равен ERR_NO. Если есть ошибка, обязательно передается только ее код, данные могут не передаваться. Каждая команда может иметь разные варианты по количеству ворзвращаемых байт данных. Например, может сужествовать команда "прочитать N байт данных, начиная с адреса Y". Ответ на эту команду может иметь любую длину блока данных.

Если CRC не совпадает, передается код команды CMD_ERR и код ошибки ERR_TX.

В моих реализациях протокол Wake имеет ряд стандартизованных кодов ошибок и кодов команд: CMD_NOP = 0 - нет операции; CMD_ERR = 1 - ошибка приема пакета; CMD_ECHO = 2 - передать эхо; CMD_INFO = 3 - передать информацию об устройстве, в сетевых версиях еще CMD_SETADDR = 4 - установка адреса устройства и CMD_GETADDR = 5 - чтение адреса устройства. Остальные команды можно выбирать в зависимости от нужд устройства.

Примеры практической реализации протокола Wake есть по ссылкам в спецификации.



Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
умножьте 3 на единицу:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru