Страница 1 из 1

задержка в линии связи и SPI - какова будет скорость[закрыт]

Добавлено: Вт апр 24, 2012 10:10:39
Kavka
Доброго времени суток.

Есть идея, пока абстрактно, подключения некого устройства расположенного далеко (сотни метров) от контроллера по SPI. Обычный SPI - три сигнала и "земля". Схемное исполнение пока не рассматривается.
Задача в том, чтобы рассчитать максимально допустимую скорость тактирования (пока теоретически, оценочно).
Упрощённо картина представляет вот такой.
Изображение
Естественно, в линии связи получается задержка на распространение сигнала (Тз). Задержка одинаковая в обе стороны.
Таким образом, если установка (на mosi) и выборка (на miso) данных у МК происходить по нарастающему фронту тактового сигнала (clk), то этот фронт должен дойти до устройства и данные выставленные устройством по этому фронту должны дойти до МК. Таким образом, как я это вижу, получается что время между двумя последовательными нарастающими фронтами (период тактового сигнала) должно быть больше чем 2*Тз.
В случае же работы SPI в режиме 3 (по даташиту на ATmega48/88/168, рис. 18-4), время 2*Тз будет соответствовать половине периода тактового сигнала. Т.е. период должен быть больше 4*Тз.

Если кто увидел ошибку в моих рассуждениях - излагайте ваши комментарии и соображения.

Re: задержка в линии связи и SPI - какова будет скорость

Добавлено: Вт апр 24, 2012 11:49:23
Gudd-Head
Обязательно ли SPI на такие длины? Может, лучше RS485?

Re: задержка в линии связи и SPI - какова будет скорость

Добавлено: Вт апр 24, 2012 12:02:15
demson
а если ВЧ заполнение, то может и потянуть, хотя лучше 485, да.

Re: задержка в линии связи и SPI - какова будет скорость

Добавлено: Вт апр 24, 2012 12:22:39
igor-x
на сотнях метров уже скажется емкость проводов.. наводки и прочие нехорошие вещи.
поэтому при разговоре о скорости , нужно приводить реальные условия работы схемы.

Re: задержка в линии связи и SPI - какова будет скорость

Добавлено: Вт апр 24, 2012 19:13:31
Kavka
Написал же
Kavka писал(а):Схемное исполнение пока не рассматривается.
Использование дифференциальных приёмо-передатчиков вполне возможно, но сейчас не об этом речь. А о том, что есть задержка в канале передачи данных, в которую входит всё - задержка в электронных компонентах, преодоление ёмкости проводов, задержка распространения (скорость света) и всё что не назвал. И исходя из этой задержки надо прикинуть максимальную частоту тактирования при которой SPI будет работать как положено.

Re: задержка в линии связи и SPI - какова будет скорость

Добавлено: Вт апр 24, 2012 20:32:36
ibiza11
то что есть задержки ничего страшного, главное чтобы линия успевала реагировать на ваши сигналы. объясняю: вы отправляете в момент t=0; дойдет до устройства в момент t=x; но ведь это не значит, что вам нужно ждать, пока пройдет этот момент "x", чтобы еще что-то отправить. шлите без ожидания, до устройства придет с задержкой и всего-то. от этого вы скорость не теряете.
теперь по поводу "реакции" линии на ваши сигналы: она напрямую зависит от емкости линии связи, чем больше емкость - тем больше время нарастания/спада сигнала (длина фронта). (обычно они равны друг другу). Именно это может хоть как то ограничивать пропускную способность.
Пример: если скорость нарастания/спада t=2мкс, в сумме T=4мкс, то корректно вы сможете передать по этой линии сигналы с частотой не более f=1/T=250кГц. В теории. :) В практике я бы конечно обезопасил себя, еще больше ограничив скорость)


П.С. По поводу помех правильно заметили. В зависимости от фонового электро-магнитного шума может меняться и корректность распознавания данных приемником. Многие проблемы решаются все тем же родным rs485 с витой парой, о котором уже упоминали.

Re: задержка в линии связи и SPI - какова будет скорость

Добавлено: Вт апр 24, 2012 20:55:00
Kavka
Да опять вы о проводах, помехах и т.д. Отвлекитесь от железа! Пока речь о теории.
Вы не учитываете, что SPI синхронный и, скажем так, фиксация входящего бита осуществляется относительно тактового сигнала на стороне главного устройства. Не забывайте ещё, что передача и приём идут одновременно! Т.е. данные от подчинённого должны уже устоятся к моменту фиксации.
Вот, например, для "mode 3" (см. картинку) установка данных происходит по ниспадающему фронту, а фиксация по нарастающему. Таким образом за половину периода тактового сигнала фронт сигнала от главного должен дойти до подчинённого, тот, по фронту, должен выставить свой уровень на miso и этот уровень должен дойти (вернуться) до главного и устоятся.
Если действовать как предложили вы, то если сигнал от подчинённого не будет успевать возвращаться к главному за половину периода, то принимаемые данные будут сдвинуты на 1 или более бит, в зависимости от задержки в линии и частоты. Причём часть бит может быть потеряна.
Изображение

Re: задержка в линии связи и SPI - какова будет скорость

Добавлено: Вт апр 24, 2012 21:28:20
ibiza11
забыл про синхронность SPI, тактовые импульсы подает мастер, а данные выдает слейв.
в теории: период тактовых импульсов должен быть как минимум вдвое больше величины задержки. все!)

Re: задержка в линии связи и SPI - какова будет скорость

Добавлено: Вт апр 24, 2012 21:57:32
Kavka
Судя по отсутствию дельной критики, направление выбрано правильное :-)
Если не привязываться к конкретному режиму SPI, то под итожить можно, думаю, так. (Речь о сигналах со стороны главного SPI устройства.)
Если время между фронтом на котором выставляются данные и фронтом на котором происходит фиксация данных обозначить за T. А время задержки в линии передачи обозначить как Td. То должно быть T > 2*Td.

По поводу проводов, помех, RS-485/422 и т.д.
Нарыл вот такую картинку (прицеплена к сообщению).
Там, к стати, решается вопрос скорости за счёт небольшой избыточности.

Re: задержка в линии связи и SPI - какова будет скорость

Добавлено: Ср апр 25, 2012 01:22:47
Jack_A
Честно, не понимаю я этой упертости в SPI. Он в общем-то для внутриблочной преимущественно передачи. Старая добрая токовая петля или RS485 решают эту задачу на раз. И "скорость света" тут, как я понимаю, для юмора обозначена - основное ограничение на скорость передачи накладывает емкость линии связи.

Re: задержка в линии связи и SPI - какова будет скорость

Добавлено: Ср апр 25, 2012 07:32:18
Kavka
Ну, например, есть устройство с интерфейсом SPI и его надо подключить по линии диной 1000 метров. Вот и встаёт задача как "протолкнуть" SPI на такое расстояние. А если при этом надо ещё и задержки минимизировать при работе с устройством, то прослойка SPI-RS485-SPI будет добавлять задержку на буферизацию. Вот и получается, что надо "заворачивать" SPI в RS-485/422, как на картинке в предыдущем моём сообщении.

А про скорость света - 1000 метров в одну сторону == 3,3 мкс.

Re: задержка в линии связи и SPI - какова будет скорость

Добавлено: Ср апр 25, 2012 08:09:46
igor-x
Kavka писал(а): 3,3 мкс.
а скажите конечные требования на устройство?
например - передать данные с определенной скоростью на расстояние 100 метров ?
так может действительно не заморачиваться с SPI (это скорее внутриприборный интерфейс), а выбрать
как рекомендуют предидущие ораторы, тот который лучше впишется в вашу задачу(внешние условия)

Re: задержка в линии связи и SPI - какова будет скорость

Добавлено: Ср апр 25, 2012 10:10:10
Kavka
Рассматривается (пока в теории) возможность подключить готовый прибор с интерфейсом SPI к МК на большом (известном, 800-1000м) удалении. Исходя из удаления надо прикинуть скорость, которую можно получить - может до железа и дело не дойдёт, так как скорости не хватит.

Добавил: скорости не хватает, даже в теории. Вопрос закрыт.

Добавил: Забыл сказать - всем спасибо за участие!