Проблема завершения шины SPI

10

Я работал над проектом, в котором ведущее устройство OMAP Linux SPI взаимодействует с 6 периферийными периферийными устройствами SPI (5 аналого-цифровых преобразователей и один магнитометр).

Я могу установить тактовую частоту SPI и экспериментировать с 50 кГц, 100 кГц и 1 МГц.

Я приложил схему подключения / платы, показывающую длину от мастера SPI и всех периферийных устройств. Длина шины SPI (все длины проводов) от мастера составляет примерно 970 мм для моего экспериментального случая.

введите описание изображения здесь

Проблема, которую я обнаружил, заключается в том, что связь с 1 периферийным устройством не работает, когда я добавляю больше других периферийных устройств на шину. Даже если связь происходит с магнитометром на противоположной стороне шины, связь с аналого-цифровыми преобразователями на другой стороне прерывается до тех пор, пока не будет снята заглушка жгута магнитометра, а затем секция A / D вернется.

Я кое-что прочел здесь: Соображения об окончании шины SPI и здесь: Коммуникация между досками на короткие расстояния.

где рекомендуется размещать RC LPF как можно ближе к любому приводному узлу, поэтому SCLK и MOSI на стороне мастера и каждый из моих 6x сигналов MISO / SOMI. Я видел похожий подход для USB с сетью 47pF / 27R RC. Мое намерение состоит в том, чтобы попробовать это на моей схеме, чтобы уменьшить резкий резкий переход по краю ~ 100нсек.

Это правильная процедура, я следую здесь с добавлением RC LPF? Это кажется действительно шокирующим, есть ли лучшая практика? Я видел в приложении заметку от TI, в которой говорится о расширении SPI для более длинных шин, это подходящее решение здесь, или моя проблема просто одна из высокочастотных гармоник из высокоскоростного краевого перехода? http://www.ti.com/lit/an/slyt441/slyt441.pdf

Спасибо ник

Чистое измерение CLK / MISO от магнитометра

Измерение времени перехода часов сигнала CLK

Эта линия MISO (канал # 1) показывает отражения?  Уровни не выглядят цифровыми с лестницей, это размышления

shraken
источник
У вас есть возможность добавить последовательные резисторы и изменить проводку?
efox29
Привет efox29, да, но это будет немного грязно. Мой мастер SPI находится на SOM, установленном на моей дочерней плате. Мое намерение состоит в том, чтобы обрезать трассировку для SCK и MOSI и установить 330-омный / 47 пФ 0603/0805 RC для каждого с использованием эпоксидной смолы / клея и сделать что-то похожее на платы АЦП и магнитометра для MISO. Я постараюсь сделать заглушку GND как можно ближе к площадке или плоскости GND. Удерживая это, пока я не услышу больше, но планирую попробовать завтра. У меня нет возможности изменить SPI в последовательную цепь или что-то еще. В любом случае, ничего хорошего не получится, доски нужны на противоположных концах.
Шракен
Как ваша система с более медленными часами, такими как 50 кГц? Какой микроконтроллер вы используете?
efox29
Я бы предложил начать со строки SCK, прежде чем добавлять R и C к другим строкам. В конце концов, ребра имеют значение только на линии часов, другие линии будут более терпимы к отражениям.
alex.forencich
2
И с такой проблемой проблема не в тактовой частоте, а в частоте нарастания фронта. Если вы видите ту же проблему независимо от тактовой частоты, то быстрые фронты являются проблемой и должны быть замедлены.
alex.forencich

Ответы:

5

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

Многоузловые сети всегда должны быть смоделированы. Их так сложно предсказать. И потребовалось около 3 минут, чтобы увидеть, что ваш дизайн не был оптимальным.

Вот настройка симуляции для часов от ведущего устройства ко всем ведомым устройствам (значения являются лишь приблизительными оценками, как в случае, если вы сделали это до того, как что-либо построить):

введите описание изображения здесь

И получающийся в результате симуляционный сюжет (мы игнорируем что есть что, единицы измерения и т. Д., Поскольку его, очевидно, не стоит строить):

введите описание изображения здесь

Первая идея, которая приходит на ум, - это последовательная цепочка всех входов и простое параллельное завершение. Схема полета, если хотите. Это выглядит так в настройке симуляции:

введите описание изображения здесь

И результат сюжет выглядит намного лучше:

введите описание изображения здесь

Если вы можете жить с повышенным энергопотреблением оконечного устройства thevenin и уменьшенным перепадом напряжения на тактовых входах различных устройств и ... (только вы знаете фактические ограничения) ... тогда некоторое изменение этого может действительно стоить здание.

Существуют и другие решения, которые будут работать, но главное - понять, что многоузловые сети нелегко предсказать. 5 минут симуляции перед тем, как что-то построить, могут сэкономить много времени позже. К сожалению, этот тип тренажеров не дешево.

Я использую Cadence SigXplorer здесь. Применяется обычный отказ от ответственности: я преподаю классы по целостности сигнала и часто имею лицензии на программное обеспечение для этих классов от Cadence или Mentor.

Рольф Остергаард
источник
Какое программное обеспечение вы используете для сим-линий?
efox29
@ efox29 Cadence SigXplorer и Mentor Hyperlynx.
Рольф Остергаард
@nickishere (OP) Это ответило на ваш вопрос?
Рольф Остергаард
Привет Рольф, Спасибо, что нашли время для симуляции этой схемы, очень ценю это. Мне придется заглянуть в Cadence SigXplorer и определю. В следующий раз, когда я подойду к этому большому автобусу, поищите такой инструмент. Я отмечаю ваш ответ как правильный, самый подробный и актуальный. Однако я должен сказать, что в итоге я использовал топологию эмпирически, поэтому не могу сказать, что она работает.
Шракен