Я работал над проектом, в котором ведущее устройство 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
Спасибо ник
источник
Ответы:
Трудно ответить на это без всех подробностей, но вот общий взгляд на проблему, которая, как я считаю, также может быть более полезным типом ответа для этого сайта.
Многоузловые сети всегда должны быть смоделированы. Их так сложно предсказать. И потребовалось около 3 минут, чтобы увидеть, что ваш дизайн не был оптимальным.
Вот настройка симуляции для часов от ведущего устройства ко всем ведомым устройствам (значения являются лишь приблизительными оценками, как в случае, если вы сделали это до того, как что-либо построить):
И получающийся в результате симуляционный сюжет (мы игнорируем что есть что, единицы измерения и т. Д., Поскольку его, очевидно, не стоит строить):
Первая идея, которая приходит на ум, - это последовательная цепочка всех входов и простое параллельное завершение. Схема полета, если хотите. Это выглядит так в настройке симуляции:
И результат сюжет выглядит намного лучше:
Если вы можете жить с повышенным энергопотреблением оконечного устройства thevenin и уменьшенным перепадом напряжения на тактовых входах различных устройств и ... (только вы знаете фактические ограничения) ... тогда некоторое изменение этого может действительно стоить здание.
Существуют и другие решения, которые будут работать, но главное - понять, что многоузловые сети нелегко предсказать. 5 минут симуляции перед тем, как что-то построить, могут сэкономить много времени позже. К сожалению, этот тип тренажеров не дешево.
Я использую Cadence SigXplorer здесь. Применяется обычный отказ от ответственности: я преподаю классы по целостности сигнала и часто имею лицензии на программное обеспечение для этих классов от Cadence или Mentor.
источник