Полная версия этой страницы:
многопроцессорная система
Собираюсь делать систему - один процессор ведущий и четыре ведомых (149 серия) с интенсивным обменом между ними. Посоветуйте, как наиболее эффективно организовать взаимодействие между ними. Следует ли использовать собственный протокол на UART или использовать встроенный протокол для многопроцессорных систем. Буду благодарен за конкретные примеры.
rezident
Feb 14 2006, 15:34
Если все это на одной плате, то может стоит их по SPI соединить? Иначе на ведомых придется вывод TXD держать отключенным и подключать к линии только на момент передачи. Протокол не особо важен, главное чтобы он обеспечивал проверку достоверности доставки данных. Т.е. предлагаю использовать пакетный обмен с обязательным ответом на запрос и контролем целостности пакета. В этом случае не особо важно SPI или UART будет использоваться для связи.
Серия MSP430 позволяет использовать UART в режиме с битом адреса, это очень эффективная вещь при большом количестве адресатов. Один из недостатков примения такого подхода это то, что появляется 9 бит в передаче. Так что при использовании Masterа в обличии PC вам не удастся его никак воспроизвести, единственное решение в таком случае использовать 7 бит информации и 1 бит адреса.
Я пользовался таким подходом очень удобно. Использование простой контрольной суммы снизит уровень левых данных, при необходимости 100% целосности пакетов "ответ" ведомого "получил, всё правиьно" обязателен.
Одно из самых главных требований: нужно заранее определиться с величиной потока данных ибо возможности UART не бесконечны...
Успехов.
З.Ы. Если вам будет необходим пример протокола, в следующий раз приложу
Спасибо за помощь.
Действительно, SPI интерфейс наиболее удачен в моей ситуации. Проблема заключается в том, что все устройства должны быть гальванически развязаны (это помимо протокола).
Кто-нибудь пробовал передавать через оптроны информацию на скрости 115200 и какие именно опртроны были использованы ?
пробовали 62500 через 6N137
по прикидкам должно хватать и на 115200
а если будете использовать SPI, то скорость передачи можно менять плавно
rezident
Feb 17 2006, 14:52
Люди ADUM-ы вроде применяют. А мы на H11L1 подобную развязку делаем. Кстати, почему именно 115200? SPI это синхронный интерфейс и его скорость не обязательно должна укладываться в стандартный ряд скоростей UARTа. Другое дело, что на высокой скорости слейвы могут не успевать данные на конвейер "подкладывать". А вообще у MSP430 SPI может тактироваться частотой до UCLK/2.
defunct
Feb 17 2006, 17:19
так у вас все МК на одной плате или нет? если на одной тогда не совсем понятен смысл гальваноразвязки, если на разных, тогда может быть имеет смысл посмотреть в сторону rs485?
Shread
Feb 19 2006, 10:28
Если процессоры на одной плате и нужна гальваническая развязка, при фиксированной скорости передачи можно сделать простую емкостную развязку. Если хочется попроще, можно использовать
ADuM, как и говорил Rezident.
kolobok0
Feb 26 2006, 13:04
Цитата(rezident @ Feb 14 2006, 18:34)

...Иначе на ведомых придется вывод TXD держать отключенным и подключать к линии только на момент передачи.....
это Вы погорячились. ничего не надо отключать и подключать. Отца русской демократии спасут пару милкосхем логики...
с уважением
(круглый)
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.