Доброго времени суток! Хотелось бы узнать как правильно согласовать линию передачи данных между мегой и несколькими датчиками по SPI-интерфейсу (длина веревки около 5-8м)? Датчики соединены стандартно: MOSI,MISO,CLK в общей шине, CS для каждого свой.
Последний раз редактировалось xmavr Пн июн 03, 2013 15:48:38, всего редактировалось 1 раз.
Самое простое - на приемном конце, непосредственно перед микросхемой, поставить резисторы около 300 Ом в разрыв каждой линии интерфейса. Это предотвратит (ну или уменьшит) выбросы на фронтах ("звон" из-за несогласованной линии передач). Учесть, что для линий MISO и MOSI приемные концы с противоположных сторон. Может, для такой длинной линии поставить резисторы с обоих сторон линии...
Если не поможет, то можно ставить на передающем конце микросхемы - шинные формирователи, а на приемном - соответственно шинные приемники. Я бы так стал делать.
Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
Это полезно, но не так важно, т.к. SPI - изначально быстрый интерфейс, и даже если его "замедлить", уменьшив частоту CLK, останутся проблемы искажения фронтов из-за длинных несогласованных линий и т.д.
Хотя при меньших скоростях можно советовать переходить на UART, тоже с установкой каких-то доп.микросхем.
Самое простое - на приемном конце, непосредственно перед микросхемой, поставить резисторы около 300 Ом в разрыв каждой линии интерфейса. Это предотвратит (ну или уменьшит) выбросы на фронтах ("звон" из-за несогласованной линии передач). Учесть, что для линий MISO и MOSI приемные концы с противоположных сторон. Может, для такой длинной линии поставить резисторы с обоих сторон линии...
Про резистор на стороне приёмника, это да. Но лучше его ставить на передающей стороне. А лучше RC-цепочку (параметры посчитать исходя из скорости). Т.к. любой провод это антенна и, например, фронт в несколько нано секунд с выхода микрухи будет такой звон создавать на длинном проводнике без цепочки уменьшающей скорость нарастания сигнала.
_________________ Когда уже ничего не помогает - прочтите, наконец, инструкцию. Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII) Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Для подключения датчика по SPI на нескольких метрах я использовал передатчики и приемники стандарта RS485. А также разъёмы на ПП 8P8C и покупные кабели (патч корды) .
Спасибо всем Получается для длинных линий необходимо использовать либо LVDS, либо RS422/485 приёмопередатчик и согласовывать линии резисторами равными волновому сопротивлению кабеля?
Спасибо всем Получается для длинных линий необходимо использовать либо LVDS, либо RS422/485 приёмопередатчик и согласовывать линии резисторами равными волновому сопротивлению кабеля?
Совершенно неважно какой сигнал передается в линии, важно лишь, чтобы отраженный от нагрузки сигнал был достаточно мал и не создавал звона. Таким образом можно передавать хоть 10 МГц SPI... Я, например, передаю похожий сигнал через приемопередатчик ADM4857 с частотой до 9 МГц на расстояния около 10...12 метров. Главное - согласовать линию У НАГРУЗКИ и чтобы драйвер тянул это волновое сопротивление.
Дополнительно ко всем "терминаторам" придётся и второй канал "SPI" использовать для приёма от датчиков данных, так как опережение сигнала "SCK" в комплексе с отставанием данных будет нарушать синхронизацию. Необходимо чтобы данные шли вместе с синхронизацией, то есть, "SCK" ушёл, а потом вернулся с данными от датчика!
_________________ Когда уже ничего не помогает - прочтите, наконец, инструкцию. Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII) Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Только не раскрыта тема сигнала SS (или CS, или CE, в общем как его там...). Часто "слейвы" требуют такого сигнала в обязательном порядке, от мастера. При двухсторонней коммуникации по принципу, описанному в документе, может еще и потребоваться такой сигнал назад, от "слейва" ко второму SPI мастера, который тоже будет "слейв" (согласно Figure 2 документа)... Хотя при односторонней передаче данных, например, в случае вывода информации на устройство отображения, будет проще. Так что, считаю, в статье полезный пример, но не окончательный рецепт на все случаи жизни.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения