Комунікація між дошкою та дошкою на короткі відстані


24

Мій MCU працює з шиною SPI з приблизно 4-ма пристроями. Я хотів би розширити цю шину і поза бортом, тобто підключити певні друковані плати до "головної" плати і розширити функціональність. Відстань "pad to pad" буде такою:

довжина доріжки основної плати + довжина кабелю + довжина траси на розширювальній дошці

3 "+ 6" + 3 "= приблизно 12"

На мій досвід, навіть сигнал на 1 МГц зі швидкістю підйому близько 7 нс на цій відстані за допомогою стрічкового кабелю було перевищувати більше 1 В (але не було надмірного дзвінка). Плати будуть живитись від того ж джерела живлення.

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

Примітка. Тут ви не бачите часу підйому, але ви можете бачити надмірне перекриття - це сигнал 3,3 В. І так, це було виміряно належним чином дуже коротким проводом від зонда до землі. Так само, як часто рекомендують на цьому сайті. Я не думаю, що це помилка вимірювання.

Я хотів би, щоб система працювала на частоті 4 МГц, але 2 МГц також прийнятна. Макс. кількість дощок, які я хотів би підключити, буде приблизно 4, і це дозволить розширити шину SPI до приблизно 12 пристроїв. Я не думаю, що цим було б надто складно керувати за допомогою коду, оскільки у мене вже є щось подібне. Наявність додаткових рядків вибору рабів також не є проблемою.

Однак мене хвилює те, як передавати дані SPI з однієї плати на іншу. Чи повинен я просто надіслати прямий SPI або перетворити його в LVDS з одного кінця, а потім перетворити його назад в SPI на іншому кінці?


1
Який час підйому?
— Кортук

@Kortuk Повністю забув перелічити це, вибачте. Оновлено питання.
— Саад

Час підйому 7nS, це кричить швидко.
— Кортук

Вибачте за два нерелевантні питання..1. який осцилограф ви використовували? 2. Чому так важливі кільця?
— richieqianle

Відповіді:


15

Правило показує, що вам потрібно обчислити ефекти лінії передачі, якщо довжина вашого з'єднання перевищує 1/10 довжини хвилі сигналу.

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

Лінії електропередачі спричинять віддзеркалення там, де вони показують різку зміну імпедансу. Відбитий сигнал додає до оригіналу, може знову відображатись на стороні передавача, і таким шляхом йти вперед і назад. Результат показаний на графіку: проголошення, про яке ви говорите, і деякий дзвінок.

ΩΩ резистор для початку, і подивіться, наскільки далеко ми дістанемося.

редагувати (повторне оновлення запитання)
Час подорожі, здається, становить 7нс. Це швидко, як каже Кортук, це означає, що ви маєте спектр принаймні до 400 МГц, і ці гармоніки дійсно зазнають ефектів лінії передачі, навіть якщо ваш годинник становить лише 1 МГц. Спробуйте відфільтрувати їх, пропускна здатність 20 МГц (80 МГц для тактової частоти 4 МГц) дає більше, ніж достатній час підйому. Це квадратна хвиля 1 МГц, відфільтрована LPF з цегляної стіни на 20 МГц:

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

Якщо розмістити резистор серії, сформується ФНП першого порядку з ємністю лінії. Якщо ми оцінимо, що в 50pF, то

R=12π⋅100МНz⋅50pЖ=32Ω

Ω


2
Частота 1 МГц не має значення. Це важливий час підйому.
— Rocketmagnet

@stevenvh, Спробував додати резистор 1K на землю за призначенням. Це допомогло з шипами, але також трохи знизило рівень сигналу. Це нормально? Коли я кажу про рівень, де сигнал вщухає. Також спробували 500 Ом, 220 Ом такого ж ефекту, але більш виражений.
— Саад

@Saad - Скільки коштує трохи? 3,3 В в 1 к - це лише 3 мА, водій повинен бути бездоганним. Він може мати деякий внутрішній опір, але це кілька десятків Ом, тому рівень повинен бути нижчим лише на 2 або 3%.
— stevenvh

@stevenvh Я забув, що я ряду резистор на лінії, так що очевидно, я скину деяку напругу. Дурний мене! Однак навіть резистор на 180 Ом не дуже допоміг. Це призвело до перевищення 4.5V. Я здогадуюсь, що мені знадобиться значно менший опір, але тоді мені доведеться турбуватися про нинішню нічию.
— Саад

Також слід розглянути питання про активне припинення? Використання низького опору збільшить потреби в електроенергії на всій платі і тому, що шина працює постійно, це збільшує споживання електроенергії. Чи добре використовувати діоди Шоткі як затискачі?
— Саад

6

Для такої короткої шини я б спробував поставити невеликий резистор послідовно з будь-чим, що рухає лінію. Це не теоретичний ідеальний спосіб врахування теорії ліній електропередачі, а прагматичний підхід, який, на мою думку, буде працювати досить добре для вашого випадку. Спробуйте 47 Ом для початківців і подивіться, що це робить. Якщо це допомагає, але недостатньо, ви можете піти вище, але я не перевищував би 120 Ом. Можливо, десь у цьому діапазоні ви знайдете значення, яке працює досить добре.


Я спробував такий підхід, Олін. Я використав резистор 100 Ом, і він упустив простріл приблизно на 500 мВ і знизив його до 4,3 В з 4,7 В. Це все ще вольт вище 3,3 В! Час підйому тоді становив 12 нс порівняно з початковим 7.
— Саад

Схоже, я підраховував свій резистор, поки ви розмістили свою відповідь, Олін. Вибачте з цього приводу
— stevenvh

@OlinLathrop Я збільшив опір серії до 330 Ом, і це призвело до перевищення до 3,7 В. Я цілком задоволений цим. Час підйому становив 10 нс. Чи варто просто дотримуватися цього чи вставляти резистори припинення на наступній редакції плати? Я прошу, бо ти рекомендував не перевищувати 120 Ом.
— Саад

@Saad: Мене хвилювало вплив інших навантажень на лінії, і це стає чутливим до шуму. Якщо сигнали чисті і на лініях немає постійних навантажень постійного струму (наприклад, вхід CMOS з високим імпедансом), тоді продовжуйте та використовуйте 300 Ом.
— Олін Латроп

4

AFAIK пропуск може бути усунений шляхом припинення проппер, якщо ваш драйвер може керувати вантажем. Інакше якась виділена пара драйверів / приймачів, як LVDS або, можливо, навіть RS485.


+1: ми часто використовуємо LVDS для передачі SPI-сигналів.
— Джейсон S

1

У мене були серйозні проблеми в минулому запуску SPI через стрічкові кабелі, хоча вони набагато довші, ніж ви описуєте. Імунітет від шуму став справжньою проблемою, і пошкоджені команди в кінцевому підсумку потрапили на мою периферію. Було достатньо, щоб провести тест на захист від шуму на CE. Якщо у вас виникнуть проблеми з цим питанням пізніше, я рекомендую поставити окремий MCU на кожну плату та з'єднати їх через CANbus.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.