Обоснование макс. количества устройств на шине SPI

Обсуждаем контроллеры компании Atmel.
Ответить
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Пт ноя 22, 2019 17:52:11

Сообщение Yaroslav82 »

Всем доброго времени суток!

Подскажите, пожалуйста, как на основании данных даташита на микроконтроллер ATMEGA128 обосновать максимально-допустимое количество устройств на шине SPI?

Так для шины I2C даташит говорит:
The number of devices that can be connected to the bus is only limited by the bus capacitancelimit of 400pF and the 7-bit slave address space. A detailed specification of the electrical charac-teristics of the TWI is given in “Two-wire Serial Interface Characteristics” on page 322. Twodifferent sets of specifications are presented there, one relevant for bus speeds below 100kHz,and one valid for bus speeds up to 400kHz.

А для шины SPI подобной информации не нашёл.
Реклама
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

Потому что шина SPI таких ограничений и не накладывает. Ведь в I2C количество устройств ограничено размером адреса (ну и в меньшей степени скоростью перезарядки входных емкостей через резисторы подтяжки). А в SPI выбор ведомого осуществляется специальной линией CS, которых можно протянуть от мастера хоть 100500 штук. Другой вопрос как это разводить на плате и какая будет скорость... но принципиальных проблем нет.
Реклама
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Пт ноя 22, 2019 17:52:11

Сообщение Yaroslav82 »

Проблема кроется в импедансе линии, сюда входит активное и индуктивные сопротивления дорожки, а также входная емкость устройств. По-хорошему это все моделировать надо, только вот опыта моделирования в этой области у меня нет.
По этому хотелось бы узнать хотя бы примерные граничные условия.
Если более конкретно: На шину хочу повесить 4 ЦАПа со входной емкостью 10pF, длина шины не более 100мм, частота клока 8MHz. Будет работать? Или буфера добавить?
Друг Кота
Аватара пользователя
Сообщения: 15599
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Зависит от того, как шина выполнена (размещение компонентов).
8)
Реклама
Эиком - электронные компоненты и радиодетали
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

COKPOWEHEU писал(а):А в SPI выбор ведомого осуществляется специальной линией CS
SPI можно организовать одной параллельной линией CS на все ведомые. Данные задвигать последовательно в последовательную цепочку ведомых устройств, ведь SPI по сути это сдвиговые регистры. Такая реализация уменьшит количество линий, увеличит время передачи.

Добавлено after 2 minutes 42 seconds:
Как-то так.
Изображение
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

I2C - линия данных двунаправлена, открытый коллектор. Отсюда и лимит в ёмкость шины возникает. Ну точнее потому, что есть ограничение по току, а соотв. и по подтягивающему резистору.
У SPI две линии данных, однонаправленных, там push-pull на выходе.

8 МГц = 62.5 нс длительность SCK/2. Ну пусть раза в 3 запас возьмем ~ 20нс.
20 нс / (4 * 10 пФ) = 500 Ом. Это максимальное сопротивление дорожек для данной скорости и указанной ёмкости Ну там запас на паразитную ёмкость еще и т.д. Все-равно овер-дохрена запаса еще.
EDIT: Т.к. это постоянная времени, то надо бы еще до нужного уровня Vih привести. Как правило это 0.7Vcc, т.е. 3.5В для питания 5В => (3.5/5)/(1-1/e) => в 1.11 время до зарядки до 0.7Vcc будет больше, чем указанные 20нс. Хотя это неважно для примера, т.к. считали всё-равно с запасом в 3 раза, вспомнилось просто.

Афаик и имхо - поправьте если ошибаюсь. Но моё имхо, что все прекрасно будет работать с 4мя слэйвами на < 100мм шине. Если конечно там не совсем через жопу всё развести.

PS: Еще можно было учесть время SPI Master Rise/fall с ДШ МК, но этим можно пренебречь уже (глянул - 3.3нс там).
Последний раз редактировалось NStorm Пт фев 21, 2020 22:59:53, всего редактировалось 2 раза.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15599
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Некорректной разводкой соединений/линий связи можно и на простейшем устройстве скорость до 100 Герц "обломать".
:wink:
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

Ага, не о том автор переживает. О разводке и компоновке нужно переживать. К тому же всего 4 слэйва. Странно что вопрос о кол-ве возник, не сотни же в планах вешать было...
Прорезались зубы
Аватара пользователя
Сообщения: 237
Зарегистрирован: Пн июл 04, 2016 16:51:22
Откуда: Россия, Омск

Сообщение AlanDrakes »

[uquote="Z_h_e",url="/forum/viewtopic.php?p=3794680#p3794680"]
COKPOWEHEU писал(а):А в SPI выбор ведомого осуществляется специальной линией CS
SPI можно организовать одной параллельной линией CS на все ведомые. Данные задвигать последовательно в последовательную цепочку ведомых устройств, ведь SPI по сути это сдвиговые регистры. Такая реализация уменьшит количество линий, увеличит время передачи.

Добавлено after 2 minutes 42 seconds:
Как-то так.
Изображение[/uquote]

Очень не всегда.
Как пример можно взять SPI физику. Возьмите практически любой Winzet - W5100 / W5500 (из тех, с которыми сталкивался сам). На их выходе будет либо счёт принятых байтов (5100) либо нули (5500) до тех пор, пока чип не начнёт отдавать данные (команда чтения). Так что принятые данные на выход не попадут.
Это можно управлять кучей адресных светодиодов таким образом, а вот умными микросхемами - нет.
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

Этот режим называется Daisy Chain. И он конечно же должен конкретно слэйвом поддерживаться. Только к чему это привели и обсуждать начали, когда у ТС вообще не об этом вопрос был.
Модератор
Аватара пользователя
Сообщения: 19055
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

NStorm писал(а):8 МГц = 62.5 нс длительность SCK/2
там не длительность, а частота делится пополам. и поэтому получится 250 нс.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

Зачем делить частоту пополам? Мы же для расчетов считаем скорость смены фронтов, следовательно нам половина периода нужна.
Модератор
Аватара пользователя
Сообщения: 19055
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

а ты полагаешь, что фронт растянут на половину периода?
и SCK/2 означает половину частоты, то есть 4 МГц. поэтому твои 62,5 нс тут вообще ни каким боком, так как это четверть периода, а не половина.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

(длительность SCK) / 2 - так понятнее? Написал же что пол периода и "каким боком". Половина периода берется, потому что считается время на нарастание сигнала до уровня срабатывания триггера, конечно каждый фронт считать надо, а следовательно половину периода. Поэтому ровно 62.5 нс.
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Пт ноя 22, 2019 17:52:11

Сообщение Yaroslav82 »

[uquote="NStorm",url="/forum/viewtopic.php?p=3794758#p3794758"]О разводке и компоновке нужно переживать. Странно что вопрос о кол-ве возник,[/uquote]
Делал несколько устройств с SPI, проблем никогда не было, но слейвов всегда было 1-2, а тут четыре сразу :) . По разводке конечно постараюсь всё оптимизировать, потом осциллом гляну что там с импульсами стало.
Ответить

Вернуться в «AVR»