Обзор:
Я общаюсь среди 3 пользовательских печатных плат с dspic33 на них, используя SPI. У меня есть ведущий и два ведомых, но я посылаю обоим ведомым одни и те же данные (и позволяю им выбирать, на что обратить внимание).
Настройка оборудования:
Два ведомых устройства имеют встроенные контроллеры двигателя BLDC, и Master управляет этими контроллерами двигателя через SPI. Провода проложены на расстоянии около 3 футов от ведущего к каждому ведомому устройству, а заголовки являются типичными. Заголовки SAMTECH с сквозным отверстием. 1 ". Каждый контроллер мотора имеет свой собственный регулятор на 3,3 В, который управляет электроникой dsPIC / LV. Я использую один регулятор контроллера мотора. (давайте назовем его А) для питания главного DSPIC SPI. К другому контроллеру двигателя (назовем его Б) я просто запускаю линии SPI и заземление от ведущего. CLI SPI работает на частоте 100 кГц.
Приступая к делу (наконец-то):
При отсутствии работающих двигателей все работает нормально, все данные поступают, как и ожидалось, обоим ведомым. Однако, когда я запускаю моторы, Bslave больше не получает правильные данные. Он либо подбирает дополнительные часы, либо сбрасывает их, я полагаю, что делать с дополнительным шумом. В любом случае его контрольные суммы начинают проваливаться. Aslave работает как чемпион, несмотря ни на что.
1) Ожидаете ли вы, что все эти устройства должны работать от одного источника 3,3 В? Если да, можете ли вы убедить меня, говоря о более длинной петле индуктивности и чёрной магии, такой как эта.
2) Есть ли у вас эмпирическое правило относительно того, насколько быстро я могу ожидать, чтобы иметь возможность запустить SPI clk и добиться успеха при такой аппаратной настройке, как указано выше?
Ответы:
Я запустил SPI (тактовая частота 2 МГц) около 5 м от 1 блока до другого блока, и я без колебаний разработал тактовую частоту и данные для сбалансированного вывода. (Пользовательский) кабель между двумя также использовал витую пару и экран как для данных, так и для часов.
Я также отправил изолированное питание на удаленный блок через преобразователи постоянного тока в постоянный. У меня не было достаточно времени, чтобы ошибиться, поэтому, возможно, мое решение было излишним, но эй, это сработало. Мое обоснование этого решения состоит в том, что я не хотел, чтобы всплески «текущего потребления» падали по экранам витой пары. Экраны не были заземлены на стороне отправки ПК. Относитесь к цифровым сигналам, как к ценным аналоговым сигналам, чтобы получить наилучшую производительность - всегда ваш экран должен заканчиваться на приемной стороне, и если вы (по какой-либо причине) должны завершать неохотно (также) на отправляющей стороне.
Он предназначался для передачи 128 каналов низкоскоростных аналоговых сигналов на коммутационный блок с ПК. Я подозреваю, что если бы мне было нужно, я мог бы работать с тактовой частотой 20 МГц.
источник
SPI ничем не отличается от любого другого электрического интерфейса. Обращайте внимание на обычные проблемы целостности сигнала (экранирование, площадь контура, полное сопротивление, завершение сигнала и т. Д.), И вы можете пробежать его на разумном расстоянии. Что такое разумное расстояние, это зависит от того, что вы делаете с ним и насколько хорошо вы можете контролировать различные факторы.
Можете ли вы запустить его 3 фута? Безусловно. Тебе следует? Ну, есть вещи получше. Как уже отмечали другие, есть RS-4xx, который может хорошо работать. Вы также можете запустить SPI, но использовать дифференциальную сигнализацию по кабелю, как RS-4xx. Это будет использовать больше проводов, но это разрывы. Вы также можете сделать обычный RS-485, используя UART и тому подобное.
Лично я запускал SPI по 1-футовым кабелям внутри корпуса на частотах до 32 МГц без проблем. Я также запускал I2C более 4 футов при 100 кГц в среде с высоким уровнем электромагнитных помех, и SPI намного лучше, чем I2C - так что это можно сделать. Но если вы не обращаете внимание на детали, вы можете легко столкнуться с проблемами. Но, честно говоря, вам нужно уделять внимание деталям независимо от того, что вы используете.
источник
Тщательно продумайте схему заземления. Защитите линии передачи данных, если это поможет, и правильно заземлите экран. Не запускайте данные и часы на одной и той же витой паре. При необходимости используйте гальваническую развязку. Кроме этого, я не знаю никаких практических правил.
SPI был разработан для (1) связи на короткие расстояния, как правило, в пределах одной печатной платы и (2) в среде с небольшим уровнем электромагнитных помех. Возможно, единственные шины, которые работают хуже, чем SPI в присутствии EMI, - это I 2 C и 1-wire. Существуют шины, которые были предназначены для связи на большие расстояния при наличии EMI (RS-485, CAN, Ethernet).
Возможно расширить и укрепить SPI. Вот примечание к приложению , которое показывает шину SPI с дифференциальными линиями.
источник
Есть несколько способов минимизировать влияние шума на сигнальные линии. Самый простой способ - проложить медную плоскость или медную трассу рядом с вашими сигнальными трассами. Это минимизирует индуктивность следов и площадь петли.
На высокой частоте обратные токи любят проходить путь с наименьшим импедансом рядом с самими сигнальными линиями. Я предполагаю, что у вас есть общее заземление между вашими цепями, но это может вызвать проблемы для высокочастотной сигнализации, если ваше общее заземление - это просто «заземление» между цепями. Это приведет к очень большой площади петли для токов сигнала, что может привести к большому введению шума из-за паразитной магнитной связи.
Если вы можете, подключите дополнительное заземление между заземлениями, примыкающими к сигнальным линиям SPI, в дополнение к сохранению медной плоскости заземления или трассы, проложенной рядом с линиями внутри плат. Это может иметь огромное значение в том, насколько восприимчива ваша схема к двигателям.
источник