Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите выбрать интерфейс (SPI или UART)
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам
Rundll
Добрый вечер!

Есть приёмопередатчик Ember EM250 который предназначен для стандарта ZigBee. В этом устройстве есть два контроллера последовательных интерфейсов SC1 и SC2. Первый содержит интерфейсы UART, SPI (master only), и I2C. Второй - SPI(master/slave) и I2C. Также есть устройство на ПЛИС, которое должно работать вместе с EM250. Собственно проблема заключается в том, какой интерфейс поставить на СФ блок в ПЛИС, для успешного обмена информацией с приемопередатчиком EM250? Да, и самое главное, какой из интерфейсов потребляет меньше мощности? Я пока остановился на SPI, т.к. он более подходит для внутриплатовых соединений и синхронный, но тут у меня тоже возникли некоторые вопросы. Ну, во-первых, какое из устройств делать мастером? Есть предложение сделать EM250 ведомым (slave) и кинуть на него тактовую частоту на которой работает ПЛИС, т.е. устройство на ПЛИС - master. В этом случае вроде проблем нет. А вот при приеме, я не могу сообразить, как всё это будет работать и вообще будет ли работать (если EM250 - в slave mode)? Т.е. получается при приеме данных они тоже будут передаваться в ПЛИС на её частоте или при приеме мастером должен быть EM250?

Заранее благодарен всем!
DimG
В SPI прием и передачу тактирует только Master. Если у вас устройство не может (или вы не хотите) менять свой статус, то существует два способа получения данных от Slave: в первом случае Master с определенной частотой опрашивает , в другом случае Slave сообщает Master о наличии данных с помощью прерывания. Есть и другой способ, если устройство может менять свой статус - оба устройства становится Master только на время передачи, по ее окончании меняя статус на Slave. Но в этом случае все конфликтные ситуации придется решать программным методом, хотя ничего особо страшного в этом нет.
Небольшой совет: если не можете сейчас остановиться на конкретном решении, заложите возможность для всех решений, а дальше уже выберите (при написании программы).
Rundll
А как насчёт UART, может он в этой ситуации предпочтительнее?

Дело в том, что у меня нет времени на разработку всех модулей последовательных протоколов, вот и метаюсь теперь... Что касается SPI, то как я уже отметил, мне легче кинуть SCK от ПЛИС. Идея заключается в том, чтобы не делать на ПЛИС полный, программируемый модуль SPI, а зашить в неё определённые, заранее договорённые параметры протоколирования: полярность, скорость, фронт восприятия данных и т.д. т.е. задача намного упрощается, т.к. система не привязана к особой гибкости! Если поступить соответствующим образом, то задача сводится к тому, что частота от ПЛИС подключается к микрухе приемопередатчика (у него в прошивке хранятся, теже самые параметры на SPI). Тем самым SPI приёмопередатчика будет работать на той частоте, которую ему диктует ПЛИС (до 5 Мгц). Да, пожалуй ещё одним неприятным моментом в системе является то, что приёмопередатчик будет работать исключительно в полудуплексном (данные передаются через радиоканал одновременно только в одном направлении и со скоростью 250 кбит/с) режиме, тем самым получается, что данные по SPI передаются хоть и в полнодуплексном режиме, но всё же при отправке данных от ПЛИС в приёмопередатчик, регистры SPI обмениваются информацией, которая по сути ПЛИС от приёмопередатчика (в режиме отправки и наоборот только уже от ПЛИС к приемопередатчику, при приёме) не нужна вобще! Т.е. это в моём случае излишняя информация. Это нормально? или лучше разрабатывать свой специальный протокол (совместимый с SPI) с мультиплексированием шины данных MISO/MOSI?


Цитата
в другом случае Slave сообщает Master о наличии данных с помощью прерывания
Вот, наверное, это лучший вариант. С отправкой данных всё понятно, проблем вроде не возникает. Как я правильно понимаю, при приёме данных (не по SPI, а из радио канала!), в приемопередатчике (который slave) устанавливается флаг разрешения прерываний, это как раз может использоваться для оповещения о начале приёма данных от микросхемы приемопередатчика в ПЛИС?

Вот, для облегчения понимания, решил на скорую руку начертить блок схему системы. Скорее всего АЦП и ЦАП будут внутри ПЛИС, поэтому один SPI нужно будет убрать, хотя вот тоже вопрос, мне необходимо внутри ПЛИС работать с параллельными данными, т.е. что-то вроде SPI полюбому придётся ставить, но здесь задача полегче- тактовая частота одинаковая.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.