Страница 1 из 1

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

Добавлено: Чт фев 20, 2020 09:57:53
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 подобной информации не нашёл.

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

Добавлено: Чт фев 20, 2020 12:22:16
COKPOWEHEU
Потому что шина SPI таких ограничений и не накладывает. Ведь в I2C количество устройств ограничено размером адреса (ну и в меньшей степени скоростью перезарядки входных емкостей через резисторы подтяжки). А в SPI выбор ведомого осуществляется специальной линией CS, которых можно протянуть от мастера хоть 100500 штук. Другой вопрос как это разводить на плате и какая будет скорость... но принципиальных проблем нет.

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

Добавлено: Пт фев 21, 2020 20:16:13
Yaroslav82
Проблема кроется в импедансе линии, сюда входит активное и индуктивные сопротивления дорожки, а также входная емкость устройств. По-хорошему это все моделировать надо, только вот опыта моделирования в этой области у меня нет.
По этому хотелось бы узнать хотя бы примерные граничные условия.
Если более конкретно: На шину хочу повесить 4 ЦАПа со входной емкостью 10pF, длина шины не более 100мм, частота клока 8MHz. Будет работать? Или буфера добавить?

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

Добавлено: Пт фев 21, 2020 20:22:13
BOB51
Зависит от того, как шина выполнена (размещение компонентов).
8)

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

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

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

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

Добавлено: Пт фев 21, 2020 21:25:47
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нс там).

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

Добавлено: Пт фев 21, 2020 22:08:09
BOB51
Некорректной разводкой соединений/линий связи можно и на простейшем устройстве скорость до 100 Герц "обломать".
:wink:

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

Добавлено: Пт фев 21, 2020 23:02:25
NStorm
Ага, не о том автор переживает. О разводке и компоновке нужно переживать. К тому же всего 4 слэйва. Странно что вопрос о кол-ве возник, не сотни же в планах вешать было...

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

Добавлено: Вс фев 23, 2020 11:12:24
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) до тех пор, пока чип не начнёт отдавать данные (команда чтения). Так что принятые данные на выход не попадут.
Это можно управлять кучей адресных светодиодов таким образом, а вот умными микросхемами - нет.

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

Добавлено: Вс фев 23, 2020 11:14:09
NStorm
Этот режим называется Daisy Chain. И он конечно же должен конкретно слэйвом поддерживаться. Только к чему это привели и обсуждать начали, когда у ТС вообще не об этом вопрос был.

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

Добавлено: Вс фев 23, 2020 22:30:42
Starichok51
NStorm писал(а):8 МГц = 62.5 нс длительность SCK/2
там не длительность, а частота делится пополам. и поэтому получится 250 нс.

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

Добавлено: Пн фев 24, 2020 11:56:12
NStorm
Зачем делить частоту пополам? Мы же для расчетов считаем скорость смены фронтов, следовательно нам половина периода нужна.

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

Добавлено: Пн фев 24, 2020 12:03:27
Starichok51
а ты полагаешь, что фронт растянут на половину периода?
и SCK/2 означает половину частоты, то есть 4 МГц. поэтому твои 62,5 нс тут вообще ни каким боком, так как это четверть периода, а не половина.

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

Добавлено: Пн фев 24, 2020 13:01:18
NStorm
(длительность SCK) / 2 - так понятнее? Написал же что пол периода и "каким боком". Половина периода берется, потому что считается время на нарастание сигнала до уровня срабатывания триггера, конечно каждый фронт считать надо, а следовательно половину периода. Поэтому ровно 62.5 нс.

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

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