Форум РадиоКот https://radiokot.ru/forum/ |
|
SPI длинная линия https://radiokot.ru/forum/viewtopic.php?f=61&t=90381 |
Страница 1 из 1 |
Автор: | xmavr [ Пн июн 03, 2013 06:52:53 ] |
Заголовок сообщения: | SPI длинная линия |
Доброго времени суток! Хотелось бы узнать как правильно согласовать линию передачи данных между мегой и несколькими датчиками по SPI-интерфейсу (длина веревки около 5-8м)? Датчики соединены стандартно: MOSI,MISO,CLK в общей шине, CS для каждого свой. |
Автор: | SmarTrunk [ Пн июн 03, 2013 07:11:47 ] |
Заголовок сообщения: | Re: SPI длинная линия |
Несколько метров для SPI многовато. Самое простое - на приемном конце, непосредственно перед микросхемой, поставить резисторы около 300 Ом в разрыв каждой линии интерфейса. Это предотвратит (ну или уменьшит) выбросы на фронтах ("звон" из-за несогласованной линии передач). Учесть, что для линий MISO и MOSI приемные концы с противоположных сторон. Может, для такой длинной линии поставить резисторы с обоих сторон линии... Если не поможет, то можно ставить на передающем конце микросхемы - шинные формирователи, а на приемном - соответственно шинные приемники. Я бы так стал делать. |
Автор: | uk8amk [ Пн июн 03, 2013 07:21:24 ] |
Заголовок сообщения: | Re: SPI длинная линия |
Или дифференциальные трансмиттеры если уровень помех высокий. |
Автор: | const1105 [ Пн июн 03, 2013 09:06:36 ] |
Заголовок сообщения: | Re: SPI длинная линия |
Для начала узнать о скорости передачи данных, потом советы. |
Автор: | SmarTrunk [ Пн июн 03, 2013 11:55:30 ] |
Заголовок сообщения: | Re: SPI длинная линия |
Это полезно, но не так важно, т.к. SPI - изначально быстрый интерфейс, и даже если его "замедлить", уменьшив частоту CLK, останутся проблемы искажения фронтов из-за длинных несогласованных линий и т.д. Хотя при меньших скоростях можно советовать переходить на UART, тоже с установкой каких-то доп.микросхем. |
Автор: | Kavka [ Пн июн 03, 2013 12:24:14 ] |
Заголовок сообщения: | Re: SPI длинная линия |
SmarTrunk писал(а): Самое простое - на приемном конце, непосредственно перед микросхемой, поставить резисторы около 300 Ом в разрыв каждой линии интерфейса. Это предотвратит (ну или уменьшит) выбросы на фронтах ("звон" из-за несогласованной линии передач). Учесть, что для линий MISO и MOSI приемные концы с противоположных сторон. Может, для такой длинной линии поставить резисторы с обоих сторон линии... Про резистор на стороне приёмника, это да. Но лучше его ставить на передающей стороне. А лучше RC-цепочку (параметры посчитать исходя из скорости). Т.к. любой провод это антенна и, например, фронт в несколько нано секунд с выхода микрухи будет такой звон создавать на длинном проводнике без цепочки уменьшающей скорость нарастания сигнала.
|
Автор: | Alexey_Sh [ Пн июн 03, 2013 15:23:45 ] |
Заголовок сообщения: | Re: SPI длинная линия |
uk8amk писал(а): Или дифференциальные трансмиттеры Для подключения датчика по SPI на нескольких метрах я использовал передатчики и приемники стандарта RS485. А также разъёмы на ПП 8P8C и покупные кабели (патч корды) ![]() |
Автор: | xmavr [ Пн июн 03, 2013 16:30:27 ] |
Заголовок сообщения: | Re: SPI длинная линия |
Спасибо всем ![]() Получается для длинных линий необходимо использовать либо LVDS, либо RS422/485 приёмопередатчик и согласовывать линии резисторами равными волновому сопротивлению кабеля? |
Автор: | SmarTrunk [ Пн июн 03, 2013 16:34:01 ] |
Заголовок сообщения: | Re: SPI длинная линия |
Я считаю, что можно руководствоваться примерами и рекомендациями из даташитов упомянутых микросхем |
Автор: | КРАМ [ Пн июн 03, 2013 16:43:49 ] |
Заголовок сообщения: | Re: SPI длинная линия |
xmavr писал(а): Спасибо всем ![]() Получается для длинных линий необходимо использовать либо LVDS, либо RS422/485 приёмопередатчик и согласовывать линии резисторами равными волновому сопротивлению кабеля? Совершенно неважно какой сигнал передается в линии, важно лишь, чтобы отраженный от нагрузки сигнал был достаточно мал и не создавал звона. Таким образом можно передавать хоть 10 МГц SPI... Я, например, передаю похожий сигнал через приемопередатчик ADM4857 с частотой до 9 МГц на расстояния около 10...12 метров. Главное - согласовать линию У НАГРУЗКИ и чтобы драйвер тянул это волновое сопротивление. |
Автор: | Кудесник [ Вт июл 09, 2013 10:30:57 ] |
Заголовок сообщения: | Re: SPI длинная линия |
Дополнительно ко всем "терминаторам" придётся и второй канал "SPI" использовать для приёма от датчиков данных, так как опережение сигнала "SCK" в комплексе с отставанием данных будет нарушать синхронизацию. Необходимо чтобы данные шли вместе с синхронизацией, то есть, "SCK" ушёл, а потом вернулся с данными от датчика! |
Автор: | Kavka [ Вт июл 09, 2013 10:42:30 ] |
Заголовок сообщения: | Re: SPI длинная линия |
Ну, да. Если уж пошла речь о таких длинах, то вот http://www.ti.com/lit/an/slyt441/slyt441.pdf |
Автор: | Кудесник [ Вт июл 09, 2013 20:52:12 ] |
Заголовок сообщения: | Re: SPI длинная линия |
Отличный материал! Более 100 метров - верится легко, да и кабель очень удобно какой нибудь UTP в 4 витые пары применить. |
Автор: | SmarTrunk [ Ср июл 10, 2013 01:36:05 ] |
Заголовок сообщения: | Re: SPI длинная линия |
Интересный документ, очень детальный. Только не раскрыта тема сигнала SS (или CS, или CE, в общем как его там...). Часто "слейвы" требуют такого сигнала в обязательном порядке, от мастера. При двухсторонней коммуникации по принципу, описанному в документе, может еще и потребоваться такой сигнал назад, от "слейва" ко второму SPI мастера, который тоже будет "слейв" (согласно Figure 2 документа)... Хотя при односторонней передаче данных, например, в случае вывода информации на устройство отображения, будет проще. Так что, считаю, в статье полезный пример, но не окончательный рецепт на все случаи жизни. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |