Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: выбор протокола
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Karl
Необходимо связать два контроллера для обмена данными. Обмениваться решил по UART. Контроллеры находятся на одной плате. Вопрос: какой протокол обмена лучше выбрать? Передачу и прием должен инициировать мастер. Хотелось бы использовать что-то типа протокола MODBUS, но попроще.
andrvisht
Если хотите могу подкинуть протокол на 485 аля MODBUS только вот он на AlgorithmBuilder написан, но наверное это не проблема ?
Что касательно MODBUS его действительно не стоит повторять слово в слово, ведь он был под Модиконы а в Вашем случае внутри процессора все иначе.
За основу MODBUS я взял только синхронизацию по паузе, и принцип адресации пространства + стандартные функции.
Old1
Цитата(Karl @ Sep 6 2005, 07:56)
Необходимо связать два контроллера для обмена данными. Обмениваться решил по UART. Контроллеры находятся на одной плате. Вопрос: какой протокол обмена лучше выбрать? Передачу и прием должен инициировать мастер. Хотелось бы использовать что-то типа протокола MODBUS, но попроще.
*

Если все находится на одной плате, почему бы не использовать SPI? Он как раз и разработан для высокоскоростной синхронной передачи данных (на небольшие расстояния)...
Karl
Цитата(Old1 @ Sep 6 2005, 11:30)
Цитата(Karl @ Sep 6 2005, 07:56)
Необходимо связать два контроллера для обмена данными. Обмениваться решил по UART. Контроллеры находятся на одной плате. Вопрос: какой протокол обмена лучше выбрать? Передачу и прием должен инициировать мастер. Хотелось бы использовать что-то типа протокола MODBUS, но попроще.
*

Если все находится на одной плате, почему бы не использовать SPI? Он как раз и разработан для высокоскоростной синхронной передачи данных (на небольшие расстояния)...
*



Против SPI ничего не имею. Но протокол хотелось взять какой - нибудь стандартный. MODBUS у меня уже реализован.
Camelot
Бери ссTalk (ccTalk описание)
Karl
Цитата(Camelot @ Sep 6 2005, 15:31)
Бери ссTalk (ccTalk описание)
*

Не пускают по ссылке sad.gif
vzyk
Prosto beri UART. I vsio. Vozmi 9-yj bit dlia sinchronizaciji paketov.. SPI tozhe ne ploxo.
Poka toljko 2 CPU na platie, mozesh daze nestandartnyj skorostj UART'a vziatj, naprimier UBRR=1...
IgorKossak
SPI хорош для скоростной коммуникации МК с неМК, например с EEPROM, DataFlash, ADC, DAC, ets... т. к. мастер принудительно выгребает данные у слейва вне зависимости от их готовности. Приходится в этом случае изощряться с дополнительными сигналами для квитирования.
Для межпроцессорного взаимодействия в этом случае более подходят UART (USART), I2C, 1Wire.
Кстати, реализация MODBUS возможна на любом из этих интерфейсов.
psL
Цитата(IgorKossak @ Sep 7 2005, 11:15)
SPI хорош для скоростной коммуникации МК с неМК, например с EEPROM, DataFlash, ADC, DAC, ets... т. к. мастер принудительно выгребает данные у слейва вне зависимости от их готовности. Приходится в этом случае изощряться с дополнительными сигналами для квитирования.
Для межпроцессорного взаимодействия в этом случае более подходят UART (USART), I2C, 1Wire.
Кстати, реализация MODBUS возможна на любом из этих интерфейсов.
*


В принципе не очень понятно, чем с точки зрения SPI, отличается микроконтроллер в режиме слэйв от например ADC. В любом случае - придется делать полинг готовности устройства: просто в первом случае будем принимать тот же байт, что и посылаем, а во втором ожидать в принятом байте условия конца преобразования.
Чтобы определить начало кадра от слэйва достаточно, например, чтобы символы синхронизации в режиме слэйв и в режиме мастер отличались.
Я конечно согласен, что в SPI AVR нет FIFO, но обмен между процессорами сделать можно (и делают.)

А вообще вопрос не правильно поставлен, хотябы потому что неизвестны ни характер данных, ни размер пакетов, ни требуемая пропускная способность интерфейса, уже не говоря о ресурсах используемых микроконтроллеров.
В т.ч. непонятно, достаточно ли будет полудуплексного протокола или нужен дуплекс (тогда например I2C и 1Wire не применимы в принципе).
Хотя бы для начала с этим бы определиться.
Karl
Цитата(psL @ Sep 8 2005, 00:24)
А вообще вопрос не правильно поставлен, хотябы потому что неизвестны ни характер данных, ни размер пакетов, ни требуемая пропускная способность интерфейса, уже не говоря о ресурсах используемых микроконтроллеров.
В т.ч. непонятно, достаточно ли будет полудуплексного протокола или нужен дуплекс (тогда например I2C и 1Wire не применимы в принципе).
Хотя бы для начала с этим бы определиться.
*


Вообще - то я не интерфейс выбираю, а протокол. Повторю еще раз. Нужно что-то типа МОДБАС. Но упрощенный, для обмена между двумя контроллерами.
BVU
Цитата(Karl @ Sep 8 2005, 07:47)
Цитата(psL @ Sep 8 2005, 00:24)

А вообще вопрос не правильно поставлен, хотябы потому что неизвестны ни характер данных, ни размер пакетов, ни требуемая пропускная способность интерфейса, уже не говоря о ресурсах используемых микроконтроллеров.
В т.ч. непонятно, достаточно ли будет полудуплексного протокола или нужен дуплекс (тогда например I2C и 1Wire не применимы в принципе).
Хотя бы для начала с этим бы определиться.
*


Вообще - то я не интерфейс выбираю, а протокол. Повторю еще раз. Нужно что-то типа МОДБАС. Но упрощенный, для обмена между двумя контроллерами.
*



Да придумайте, свой! Пусть займет немного времени, но зато Вы не будете ничем ограничены и максимально сможете адаприровать все требования обмена под свою систему. Все это же происходит между двумя контроллерами ('их личное дело'), а не с 'внешним миром'. smile.gif
Karl
Цитата(BVU @ Sep 8 2005, 10:41)
Цитата(Karl @ Sep 8 2005, 07:47)
Цитата(psL @ Sep 8 2005, 00:24)

А вообще вопрос не правильно поставлен, хотябы потому что неизвестны ни характер данных, ни размер пакетов, ни требуемая пропускная способность интерфейса, уже не говоря о ресурсах используемых микроконтроллеров.
В т.ч. непонятно, достаточно ли будет полудуплексного протокола или нужен дуплекс (тогда например I2C и 1Wire не применимы в принципе).
Хотя бы для начала с этим бы определиться.
*


Вообще - то я не интерфейс выбираю, а протокол. Повторю еще раз. Нужно что-то типа МОДБАС. Но упрощенный, для обмена между двумя контроллерами.
*



Да придумайте, свой! Пусть займет немного времени, но зато Вы не будете ничем ограничены и максимально сможете адаприровать все требования обмена под свою систему. Все это же происходит между двумя контроллерами ('их личное дело'), а не с 'внешним миром'. smile.gif
*


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