Перейти к содержанию
    

Покритикуйте схему каскадной платы расширения SPI

Задумка такова - есть мастер SPI и много слейвов. Количество слейвов заранее неизвестно, максимальное - 32. Слейвы подключаются через плату расширения, на одной плате - 8 слейвов. Платы расширения могут включаться каскадом друг в друга.

 

Вход платы расширения: MOSI, MISO, SCK, SEL

Выход платы расширения: MOSI_OUT, MISO, SCK, SEL

 

Вход MOSI второй платы расширения подключается на выход MOSI_OUT первой платы раширения.

 

SCK, MISO – напрямую на слейвы, MOSI – через коммутатор 74HC157. При активном SEL (0) коммутатор пропускает на выход MOSI с выхода переполнения сдвигового регистра 74HC595 (пин 9), при неактивном (1) – пропускает MOSI как есть.

 

Выходы SELx отключенны пока активируется нужный SELx (благодаря инвертору U2).

 

post-83207-1522744393_thumb.png

 

Сценарий работы.

 

Активируем SELx нужного слейва - подаем на SEL 0 и выводим в SPI 32-х битное число с 0-м битом в нужной позиции..

 

Отпускаем SEL (подаем 1), на одном из SELx оказывается активный (0) уровень. Если адрес больше 7 – он уйдет на следующую плату расширения через MOSI_QH / MOSI_OUT.

 

Передаем данные выбранному слейву, на текущей плате уйдет на MOSI, на следующих – на MOSI_OUT.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Задумка такова - есть мастер SPI и много слейвов.

Я так понял, вы делаете что-то типа "PCI" для подключения карт расширения к материнской плате? У меня у самого была недавно такая идея. Пришёл к выводу, что слэйвы надо запараллелить шину, как она и предназначена, а выбирать нужный слэйв соответствующим CS. Его уже можно раздавать с 595 регистра. Считаю, что так быстрее. Меньше задержек. Но если шина длинная, то нужны буферы и резисторы последовательно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я так понял, вы делаете что-то типа "PCI" для подключения карт расширения к материнской плате? У меня у самого была недавно такая идея. Пришёл к выводу, что слэйвы надо запараллелить шину, как она и предназначена, а выбирать нужный слэйв соответствующим CS. Его уже можно раздавать с 595 регистра.

А у меня не так разве? Хотелось бы услышать подробности по деталям реализации, нет ли где ошибок, потенциальных проблем. Спасибо.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Потенциальных проблем две.

1. SCK у Вас походу идет без буферизации от мастера сразу ко всем клиентам, то есть 32 входа.

Непонятно как он вообще идет, то есть есть плат расширения и есть еще какие то отдельные

провода или трассы которые как то идут мимо платы.

 

2. MISO также не показан, то есть все 32 передатчика будут подключены ко входу мастера, также без буферизации.

Тоже самое, несколько десятков устройств пускай с высоким импедансом, подключенные к одной точке,

это будет такая гидра из трасс и буферов, однозначно могут быть искажения.

 

Мое мнение малой кровью тут не обойтись, либо делать все по чесноку.

Пришел на плату расширения SPI, попал на мультиплексор и от него на каждое устройство отдельные 4 провода SPI.

 

Либо работать на очень низкой скорости, где на все плевать.

 

Плюс вообще нет никаких защит, ни от замыканий, ни от статики.

 

Я не шучу, у нас инженеры разрабатывали очень сложные устройства, и использовали шину I2C для совершенно простой диагностики и

какого там простого управления. Так вот суперсложные узлы работали как часы, а с шиной 8 месяцев был геморрой.

Изменено пользователем twix

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. SCK у Вас походу идет без буферизации от мастера сразу ко всем клиентам, то есть 32 входа.

Непонятно как он вообще идет, то есть есть плат расширения и есть еще какие то отдельные

провода или трассы которые как то идут мимо платы.

Спасибо за подробный ответ. Привел только схему коммутации. Чтобы быть уверенным, что это принципиально рабочее.

 

SPI идет только по платам расширения. Все 4 сигнала SPI заходят на плату расширения через ferrite bead и далее на буфер 74HC125, а с него уже по разъемам слейвов.

post-83207-1522778605_thumb.png

 

Плюс вообще нет никаких защит, ни от замыканий, ни от статики. Вы создаете себе огромный гемор с таким подходом,

хотя есть плюс, его можно долго разгребать, практически бесконечно и все это время получать зарплату занимаясь несложной работой.

От статики поставлю ESDA5V3L, 2 шт. на 4 ноги. Достаточно только на входе платы расширения или надо и на выходе мастера?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

От статики поставлю ESDA5V3L, 2 шт. на 4 ноги. Достаточно только на входе платы расширения или надо и на выходе мастера?

От статики ставят на все линии входящие и выходящие из платы, то есть по обе стороны разъема.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

От статики поставлю ESDA5V3L

Как, куда, когда? А после того, как соизволите, нам ещё раз всё критиковать по-новой?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как, куда, когда? А после того, как соизволите, нам ещё раз всё критиковать по-новой?

Простите, не уточнил сразу. Вот схема.

post-83207-1522846347_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Задумка такова - есть мастер SPI и много слейвов.

Могу добавить только "бантик"...

Я бы сделал место для джампера, чтобы всю эту цепочку можно было проверить "сам на себя"... Потому как, когда железа много, то рано или поздно где-то появятся глюки.... Да и сдвиги клоков так подбирать будет удобнее...

И еще. В схеме нет ни одного триггера, а потому на сигналах может быть дребезг. А переключение чего-либо дребезжащим сигналом вызовет еще больший дребезг. И питание приходит откуда-то и только есть фильтры и не более.

Так что эта конструкция будет довольно медленной. И с плохими фронтами данных.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Могу добавить только "бантик"...

Я бы сделал место для джампера, чтобы всю эту цепочку можно было проверить "сам на себя"... Потому как, когда железа много, то рано или поздно где-то появятся глюки.... Да и сдвиги клоков так подбирать будет удобнее...

И еще. В схеме нет ни одного триггера, а потому на сигналах может быть дребезг. А переключение чего-либо дребезжащим сигналом вызовет еще больший дребезг. И питание приходит откуда-то и только есть фильтры и не более.

Так что эта конструкция будет довольно медленной. И с плохими фронтами данных.

Спасибо, дельные замечания. Буфер заменю на 74HCT125, входы с триггером Шмитта.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот схема

Где резисторы, ограничивающие ток выводов ИС? Во время статического разряда на сборках ограничителей порядка 20 В.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А у меня не так разве? Хотелось бы услышать подробности по деталям реализации, нет ли где ошибок, потенциальных проблем. Спасибо.

Всё, кроме буферов процитировали))) Ну как у вас я не сразу понял, извините)

А теперь вам уже столько всего насоветовали, что вроде как и добавить нечего)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Простите, не уточнил сразу. Вот схема.

post-83207-1522846347_thumb.png

 

Хотелось бы уточнить целесообразность использования 5 вольтового SPI онтерфейса. Собственно нафига оно вам надо? почему не 3.3?

опять же, применительно к буферу, я бы, на вашем месте, поставил бы не буфер, как таковой, а левел шифтер, что то наподобие TXB0104 или MAX3395E, скорее всего все равно комутировать придется с логикой 3.3В, т.е. левел транслятор возможно понадобится, плюс он же как редрайвер и он же как ESD защита, ибо имет встроенную по I/O ногам.

 

BLM18 с сигнальных линий выкинуть фпечь и поставить резисторы, в районе 10-33 Ом.

 

BLM21 по питанию ставить с обвесом ОКОЛО НИХ перед и после конденсаторов, что то типа 4.7мкФ+0.1 перед, и 10...47мкФ+0.1 после. Это помимо конденсаторов у источников питания.

 

ЗЫ. А вообще конечно странно для таких вещей не пользовать какую-нибудь дешманскую CPLD, самое то, чтобы не городить огород с регистрами, буферами, защелками и тд и тп от Латисс или Альтеры. цена вопроса 1-4 доллара, зато к ЦПЛД можно прикрутить не только конвертер цепочки SPI, а еще и например ватч-дог/удаленный резет/управление цепочкой питания и тп.

 

Это так, мысли в слух.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день.

Обязательно надо просчитать для частоты SCK, когда к главному MISO "доберутся" данные

от самого "дальнего" слейва через все буферы.

Например мастер выдает данные по спаду(фронту) SCK и ожидает, что по фронту(спаду) сможет защелкнуть

ответные данные.

Чем длиннее цепочка, тем меньше максимально возможная скорость.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...