Комментарии 30
Добрый день, спасибо за статью! А не подскажите как соединить 2 ведущих/1 ведомый? Т.е. две ардуинки которые собирают данные и отдают главной, а та отсылает по интернету куда надо.. Я понимаю что с каждой можно собрать и сразу отправить, но там такой кейс :)
Нужно ставить коммутатор линий. Иначе при одновременной работе двух ведущих устройств будут коллизии.
Но правильней поменять ведущих и ведомых местами.
Предложу такие варианты:
Соединить одним проводом двух мастеров, и пусть один поднимает на нем уровень в момент когда не опрашивает слейва, тогда второй может в этот момент общаться.
Модифицированный первый вариант - CS от первого мастера параллельно подключен как вход второго мастера, и второй следит, когда первый перестанет опрашивать слейва.
Если мастеры запрашивают одно и то же, то можно второй мастер сконфигурировать как "Receive only master", и он будет подслушивать, что отвечает слейв на запросы первого.
Поменять мастер/слейв местами и далее по классике.
- Использовать не только !CS для выбора ведомого, но и !SS (Slave Select) для арбитража между ведущими.
- Поменять роли, как уже писали.
Обмен по SPI - фактически DMA в мире микроконтроллеров. Сравнивать его с I2C и тем более с RS-232 некорректно - область первого - внутрисистемный высокоскоростной синхронный обмен с заранее известным количеством hardwire-адресуемых устройств. В принципе, SPI реализуется аппаратно парой сдвиговых регистров и парой регистров-защелок без всяких МК, поэтому, особой стандартизации и не требует - многие системы, между компонентам которых еще во времена ИС малой степени интеграции не хотелось тянуть параллельные шлейфы, как г-н Журден, говорили прозой - то есть использовали последовательный синхронный обмен, который еще не был назван SPI :)
I2C же - адресный протокол внутрисистемного и ближнего межсистемного обмена, и соответственно, нагружен метаинформацией, что требует дополнительной буферизации при обмене с абсолютно детерминированным таймингом (например ЦАП/АЦП). Хотя сейчас буферизация на кристалле - совершенно не проблема для ИС, а ограничение на количество выводов - как раз проблема, увеличивающая стоимость - поэтому I2C популярен и для синхронных по своей природе устройств :)
самоделка, представленная в конце весьма интересная. По видео не сразу понял, что там два шаговых мотора стрелки вращают, почему-то думал что сервы будут.
Разве SPI синхронный протокол? Работа передатчика никак не синхронизируется с работой приемника. Наоборот то да. Но передатчик ни когда не узнает, что там с приемником.
Он "синхронный" в том плане, что известно когда надо сэмплить линию данных (как и в I²C), в отличие от асинхронного UART.
Конечно, SPI синхронный протокол. У него есть выделенная, по которой тактовый сигнал синхронизации передачи данных ходит.
И, если ведомый спроектирован нормально, то ведущий может в любой момент прочитать из ведомого слово состояния и узнать, что с ним происходит.
Может подскажет кто почти по теме...
Есть устройство где два блока (морда с крутилками/мигалками и SoC) связаны по SPI четырьмя линиями как здесь. Задача - эмулировать морду. Но осложняется, что посылки могут быть как 4 ,8 и на вскидку до 24 бит. Также летают какие то по видимому служебные сигналы ид... (смотрю в PulseView)
Каким бы статистическим анализатором воспользоваться что бы найти повторяющиеся паттерны? Уж очень не хочется вручную.
пример

Там точно SPI-шина? То, что изображено на картинке на неё не похоже.
Ну дак это канал об анимэ сайт для программистов от программистов.
Статья про основы петончика с инфой взятой из соседнего поискового запроса очевидно получила бы тут сразу тонну минусов. А по не программистким (но техническим) темам тут чуть более снисходительнее.
тут хотябы схема есть нормальная, а не только ардуиновский рисунок. Это уже огромный шаг вперед для любителей Ардуино.
да, я как-то тоже не уверен, возможно ли такое последовательное соединение (если не сделать специально). Вот JTAG да, можно цепочкой соединять, объединяя TCK.
Удобная штука, если есть много однотипных датчиков, которые можно опрашивать одновременно, а с ногами недостача.
Ваш ковёр с часиками (на видео) показывает неправильное время. Надо, чтобы показывал 4:20 - тогда в него можно залипать долго :)))
(щютк, киргуду))
ЗЫ: *ля, что за дебильный редактор здесь сделали...
Автор, а ты уверен что "Наличие множества вариантов реализации интерфейса." недостаток?
а раскажу я вам сегодня, ребятки... про SPI интерфейс, вот вам пример использования... интерфейса I2C.
хм... ну окай!
Соединение нескольких устройств через SPI