реклама на сайте
подробности

 
 
> Управление большим количеством устройств по SPI, На чём лучше реализовать?
:-)
сообщение Sep 11 2012, 08:02
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 23-10-05
Из: Мск
Пользователь №: 10 006



Для одной задачи требуется реализовать управление по интерфейсу SPI относительно большого количества устройств (6 - 8). Пытаюсь разобраться с тем, как лучше это сделать. Возможные варианты:
1) Использовать микроконтроллер. В контроллере задействовать 2/3 аппаратных блока spi, остальное реализовать "ногодрыганием";
2) Использовать микроконтроллер и только "ногодрыгание";
3) Поискать какой-нибудь демультиплексор и использовать один аппаратный блок spi микроконтроллера;
4) Поставить ПЛИС и в ней реализовать кучу блоков spi и её подключить по какому-нибудь интерфейсу к микроконтроллеру;
5) прочие варианты...

В общем-то вопрос в том - как это сделать по-человечески? Главный критерий - максимальная простота решения.
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 29)
Lmx2315
сообщение Sep 11 2012, 08:08
Сообщение #2


отэц
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684



..почему все устройства нельзя повесить на один аппаратный SPI ? ..один SPI - много чипселектов .


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post
Палыч
сообщение Sep 11 2012, 08:19
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(:-) @ Sep 11 2012, 12:02) *
Главный критерий - максимальная простота решения.

Если Мк будет выступать для всех устройств мастером, то, имхо, самое простое решение: использовать аппаратный SPI микроконтроллера; выводы SS устройств - на свободные ноги МК. Если дифицит свободных ног МК, то - подключаем выводы SS через дешифратор (сокращаем число потребных ног до трех - итого: 3 для SS + MISO + MOSI + SCK = 6 ног на восемь устройств).
Go to the top of the page
 
+Quote Post
_pv
сообщение Sep 11 2012, 08:40
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(Палыч @ Sep 11 2012, 15:19) *
Если дифицит свободных ног МК, то - подключаем выводы SS через дешифратор

проще тогда на тот же spi посадить сдвиговый регистр, sn74xx595. их можно друг за другом наращивать хоть сколько.
тогда нужно всего две доп. ноги (а то и вообще одна, OE и вывод защёлкивания данных тут можно объёдинить вроде, держим их в 0 - выходы висят -> можно загружать адрес в сдвиговый регистр, переводим в 1, данные защёлкиваются и включается определённый spi CS).
Go to the top of the page
 
+Quote Post
Палыч
сообщение Sep 11 2012, 08:49
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(_pv @ Sep 11 2012, 12:40) *
проще тогда на тот же spi посадить сдвиговый регистр

"Проще" - не всегда: "с минимумом используемых ног"
Go to the top of the page
 
+Quote Post
Plain
сообщение Sep 11 2012, 08:57
Сообщение #6


Гуру
******

Группа: Участник
Сообщений: 6 776
Регистрация: 5-03-09
Из: Москва
Пользователь №: 45 710



Самый простой вариант — все устройства последовательно, т.е. один сигнал CS.
Go to the top of the page
 
+Quote Post
andron86
сообщение Sep 11 2012, 09:22
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 406
Регистрация: 1-03-06
Пользователь №: 14 821



Цитата(Plain @ Sep 11 2012, 10:57) *
Самый простой вариант — все устройства последовательно, т.е. один сигнал CS.

как это?
Go to the top of the page
 
+Quote Post
Палыч
сообщение Sep 11 2012, 09:42
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Plain @ Sep 11 2012, 12:57) *
Самый простой вариант — все устройства последовательно, т.е. один сигнал CS.

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

Цитата(andron86 @ Sep 11 2012, 13:22) *
как это?

От МК - к MOSI первого устройства. MISO первого устройства соединяем с MOSI второго, MISO второго устройства соединяем с MOSI третьего, и т.д., наконец: MISO последнего устройства соединяем с МК...
Go to the top of the page
 
+Quote Post
ViKo
сообщение Sep 11 2012, 09:56
Сообщение #9


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Палыч @ Sep 11 2012, 12:42) *
Тоже - вариант. Только применение его, имхо, ограничено однотипностью подключаемых устройств...

Разве что полярностью сигналов, больше ничем.
Go to the top of the page
 
+Quote Post
andron86
сообщение Sep 11 2012, 11:21
Сообщение #10


Местный
***

Группа: Участник
Сообщений: 406
Регистрация: 1-03-06
Пользователь №: 14 821



Цитата(Палыч @ Sep 11 2012, 11:42) *
От МК - к MOSI первого устройства. MISO первого устройства соединяем с MOSI второго, MISO второго устройства соединяем с MOSI третьего, и т.д., наконец: MISO последнего устройства соединяем с МК...

Что то туплю. Это понятно, если все устройства мк, можно через протокол разрулить, но если они пассивны (eprom, adc, dac)?

...
а понял Daisy-Chain имелся ввиду

Сообщение отредактировал andron86 - Sep 11 2012, 12:08
Go to the top of the page
 
+Quote Post
Plain
сообщение Sep 11 2012, 11:26
Сообщение #11


Гуру
******

Группа: Участник
Сообщений: 6 776
Регистрация: 5-03-09
Из: Москва
Пользователь №: 45 710



Цитата(ViKo @ Sep 11 2012, 12:56) *
Разве что полярностью сигналов, больше ничем.

Совершенно верно. Любые законные SPI-устройства будут работать в кольце, а всякие коряги, где на ноги этого интерфейса понавешано дополнительных функций, или где вообще не весь набор ног, разумеется работать не будут.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Sep 11 2012, 11:42
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Plain @ Sep 11 2012, 15:26) *
Любые законные SPI-устройства будут работать в кольце...

ТС хотел - "как проще". С точки зрения схемотехники: кольцо - проще некуда. Если подключаемые устройства - например, датчики, которые необходимо опрашивать все разом через один и тот же интервал времени, то и для разработки ПО - проблем нет. Но если номенклатура устройств - разнообразна, и обращение к ним из разных частей программы с разным периодом, то - не факт, что для ПО - тоже "просто".
Go to the top of the page
 
+Quote Post
:-)
сообщение Sep 11 2012, 11:56
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 23-10-05
Из: Мск
Пользователь №: 10 006



В общем-то "хорошие" варианты понятны. Спасибо всем за подсказки.
Управлять планируется синтезаторами adf4350 и приемниками max2769.
В типовом случае происходит только установка режима работы при включении и все. Иногда возможны смены режима работы.
Go to the top of the page
 
+Quote Post
Plain
сообщение Sep 11 2012, 12:37
Сообщение #14


Гуру
******

Группа: Участник
Сообщений: 6 776
Регистрация: 5-03-09
Из: Москва
Пользователь №: 45 710



Цитата(:-) @ Sep 11 2012, 14:56) *
Управлять планируется синтезаторами adf4350 и приемниками max2769.

Обе детали никакого отношения к полноценному SPI не имеют.
Go to the top of the page
 
+Quote Post
gerber
сообщение Sep 11 2012, 13:27
Сообщение #15


Знающий
****

Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088



Цитата(Plain @ Sep 11 2012, 15:26) *
Совершенно верно. Любые законные SPI-устройства будут работать в кольце, а всякие коряги, где на ноги этого интерфейса понавешано дополнительных функций, или где вообще не весь набор ног, разумеется работать не будут.

Вот с этого места подробнее, пожалуйста. SPI-флэшка, скажем, AT45DB161 - это законное SPI-устройство или нет? Она будет работать в daisy chain ?
Как мне кажется, не будет. Для работы в цепочке SPI-устройство должно иметь в наборе своих опкодов команду BYPASS, после которой всё, что поступает на вход MOSI транслируется на выход MISO.
Или я ошибаюсь?


--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
Go to the top of the page
 
+Quote Post
andron86
сообщение Sep 11 2012, 13:51
Сообщение #16


Местный
***

Группа: Участник
Сообщений: 406
Регистрация: 1-03-06
Пользователь №: 14 821



Цитата(gerber @ Sep 11 2012, 15:27) *
Вот с этого места подробнее, пожалуйста. SPI-флэшка, скажем, AT45DB161 - это законное SPI-устройство или нет? Она будет работать в daisy chain ?
Как мне кажется, не будет. Для работы в цепочке SPI-устройство должно иметь в наборе своих опкодов команду BYPASS, после которой всё, что поступает на вход MOSI транслируется на выход MISO.
Или я ошибаюсь?

Нужно устройство с поддержкой daisy chain.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Sep 11 2012, 13:52
Сообщение #17


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(gerber @ Sep 11 2012, 16:27) *
Или я ошибаюсь?

Имеем устройства в виде длинного последовательного регистра. Задвигаем (и принимаем с другого конца) всю последовательность, каждому устройству будет соответствовать своя часть битов. После окончания CS все устройства получат свои команды. А в следующем таком же цикле микроконтроллер получит от них ответ.
Go to the top of the page
 
+Quote Post
:-)
сообщение Sep 11 2012, 13:54
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 23-10-05
Из: Мск
Пользователь №: 10 006



А вот это большой fail с моей стороны...
В таком случае вопрос: как лучше обходиться с ними? CLK, DATA - сделать общими для всех, а CS вывести отдельно на каждую микросхему?
Go to the top of the page
 
+Quote Post
andron86
сообщение Sep 11 2012, 14:00
Сообщение #19


Местный
***

Группа: Участник
Сообщений: 406
Регистрация: 1-03-06
Пользователь №: 14 821



Цитата(:-) @ Sep 11 2012, 15:54) *
В таком случае вопрос: как лучше обходиться с ними? CLK, DATA - сделать общими для всех, а CS вывести отдельно на каждую микросхему?

​Это самый простой и верный вариант, в большинстве так и делается.
Go to the top of the page
 
+Quote Post
:-)
сообщение Sep 11 2012, 14:05
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 23-10-05
Из: Мск
Пользователь №: 10 006



Впрочем вариант со сдвиговым регистром выглядит тоже интересно, особенно если выберу микроконтроллер с малым количеством ног...
Go to the top of the page
 
+Quote Post
andron86
сообщение Sep 11 2012, 14:09
Сообщение #21


Местный
***

Группа: Участник
Сообщений: 406
Регистрация: 1-03-06
Пользователь №: 14 821



Цитата(:-) @ Sep 11 2012, 16:05) *
Впрочем вариант со сдвиговым регистром выглядит тоже интересно, особенно если выберу микроконтроллер с малым количеством ног...

Ну если ног не хватает то можно IO-Expander применить. А daisy chain это уж когда совсем прижало. Например до восьмого устройства восемь циклов добираться будете.
Go to the top of the page
 
+Quote Post
_pv
сообщение Sep 11 2012, 14:12
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(gerber @ Sep 11 2012, 19:27) *
Для работы в цепочке SPI-устройство должно иметь в наборе своих опкодов команду BYPASS. Или я ошибаюсь?

не должно быть там никакой команды, он просто должен уметь прозрачно выпихивать данные наружу которые ему попали на вход и защелкивать их только в момент отпускания CS, а не по количеству принятых битов.
Go to the top of the page
 
+Quote Post
andron86
сообщение Sep 11 2012, 14:16
Сообщение #23


Местный
***

Группа: Участник
Сообщений: 406
Регистрация: 1-03-06
Пользователь №: 14 821



Да, основное, не забудьте суммарные ёмкости учесть, всё-таки 8 устройств
Go to the top of the page
 
+Quote Post
gerber
сообщение Sep 12 2012, 08:20
Сообщение #24


Знающий
****

Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088



Цитата(ViKo @ Sep 11 2012, 17:52) *
Имеем устройства в виде длинного последовательного регистра. Задвигаем (и принимаем с другого конца) всю последовательность, каждому устройству будет соответствовать своя часть битов. После окончания CS все устройства получат свои команды. А в следующем таком же цикле микроконтроллер получит от них ответ.

Согласно даташита, та же SPI-флэшка во время задвигания в неё опкода команды и адреса держит свой MISO-выход в состоянии High-Z, значит ли это, что SPI-флэшки нельзя соединять в daisy chain ?


--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
Go to the top of the page
 
+Quote Post
andron86
сообщение Sep 12 2012, 09:02
Сообщение #25


Местный
***

Группа: Участник
Сообщений: 406
Регистрация: 1-03-06
Пользователь №: 14 821



Цитата(gerber @ Sep 12 2012, 10:20) *
Согласно даташита, та же SPI-флэшка во время задвигания в неё опкода команды и адреса держит свой MISO-выход в состоянии High-Z, значит ли это, что SPI-флэшки нельзя соединять в daisy chain ?

Да.
Go to the top of the page
 
+Quote Post
Plain
сообщение Sep 12 2012, 11:24
Сообщение #26


Гуру
******

Группа: Участник
Сообщений: 6 776
Регистрация: 5-03-09
Из: Москва
Пользователь №: 45 710



Цитата(gerber @ Sep 11 2012, 16:27) *
скажем, AT45DB161 - это законное SPI-устройство или нет?

"Daisy chain" вовсе никакая не разновидность SPI, а наоборот, сам классический SPI в его первоначальном виде — не абстрактный "последовательный интерфейс", а интерфейс последовательно соединённых устройств, синхронно передающий и принимающий их сигналы, т.е. сигналы эти обновляются внутри них только с окончанием передачи (снятие SS), никак иначе.

Вот только в этом, законном случае, в кольце может быть сколько угодно разношёрстных устройств, все они будут без проблем работать, и интерфейс будет состоять только из 4-х сигналов — SCK, MOSI, MISO, SS.
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Sep 12 2012, 14:36
Сообщение #27


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Цитата
сам классический SPI в его первоначальном виде

Ищутся желающие, чтобы подать в суд на производителей SPI-флешек.
Они незаконно написали в даташите, что их устройства работают по протоколу SPI !


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
andron86
сообщение Sep 13 2012, 04:50
Сообщение #28


Местный
***

Группа: Участник
Сообщений: 406
Регистрация: 1-03-06
Пользователь №: 14 821



Цитата(esaulenka @ Sep 12 2012, 16:36) *
Ищутся желающие, чтобы подать в суд на производителей SPI-флешек.
Они незаконно написали в даташите, что их устройства работают по протоколу SPI !

Гы...., ну просто на форуме очень много теоретиков, надо это учитывать.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Sep 13 2012, 10:44
Сообщение #29


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(andron86 @ Sep 13 2012, 07:50) *
Гы...., ну просто на форуме очень много теоретиков, надо это учитывать.

Поставьте SPI Flash в конец пищевой цепочки, тогда до всех устройств перед ней данные с микроконтроллера будут доходить. А после нее, в микроконтроллер - только от нее.
Go to the top of the page
 
+Quote Post
andron86
сообщение Sep 14 2012, 00:12
Сообщение #30


Местный
***

Группа: Участник
Сообщений: 406
Регистрация: 1-03-06
Пользователь №: 14 821



Цитата(ViKo @ Sep 13 2012, 12:44) *
Поставьте SPI Flash в конец пищевой цепочки, тогда до всех устройств перед ней данные с микроконтроллера будут доходить. А после нее, в микроконтроллер - только от нее.

А до пищевой цепочки, искать устройства с daisy chain? :-)))
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 16:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.01796 секунд с 7
ELECTRONIX ©2004-2016