Komunikacja na krótkich dystansach od tablicy do tablicy


24

Mój MCU obsługuje magistralę SPI z około 4 urządzeniami. Chciałbym również rozszerzyć tę magistralę, aby była poza płytą, tzn. Aby niektóre płytki drukowane były podłączone do płyty „głównej” i rozszerzyć funkcjonalność. Odległość „pad do pad” będzie wynosić:

długość ścieżki głównej płyty + długość kabla + długość ścieżki na płycie przedłużającej

3 ”+ 6” + 3 ”= około 12”

Z mojego doświadczenia wynika, że ​​nawet sygnał 1 MHz, z czasem narastania około 7 ns, na tej odległości przez kabel taśmowy był przekroczony o ponad 1 V (ale nie było nadmiernego dzwonienia). Płytki będą zasilane z tego samego zasilacza.

wprowadź opis zdjęcia tutaj

Uwaga: Nie widać tutaj czasów narastania, ale widać nadmierne przekroczenie - jest to sygnał 3,3 V. I tak, to zostało poprawnie zmierzone za pomocą bardzo krótkiego drutu od sondy do ziemi. Podobnie jak to często poleca się na tej stronie. Nie sądzę, że to błąd pomiaru.

Chciałbym, aby system działał przy 4 MHz, ale 2 MHz jest również dopuszczalne. Maks. liczba płyt, które chciałbym podłączyć, wynosiłaby około 4, a to rozszerzyłoby magistralę SPI o około 12 urządzeń. Nie sądzę, że byłoby to zbyt trudne do zarządzania za pomocą kodu, ponieważ mam już coś takiego. Posiadanie dodatkowych linii wyboru slave również nie stanowi problemu.

Moje obawy dotyczą jednak sposobu przesyłania danych SPI z jednej płyty na drugą. Czy powinienem po prostu wysłać prosty SPI lub przekonwertować go na LVDS na jednym końcu, a następnie przekonwertować z powrotem na SPI na drugim końcu?


1
Jaki jest twój czas narastania?
Kortuk

@Kortuk Całkowicie zapomniałem to wymienić, przepraszam. Zaktualizowano pytanie.
Saad

Czas narastania 7nS, który krzyczy szybko.
Kortuk

Przepraszamy za dwa nieistotne pytania .. 1. jakiego użyłeś oscyloskopu? 2. Dlaczego pierścienie są tak ważne?
richieqianle

Odpowiedzi:


15

Ogólna zasada mówi, że musisz obliczyć efekty linii transmisyjnej, jeśli długość połączenia jest większa niż 1/10 długości fali sygnału.

wprowadź opis zdjęcia tutaj

Linie przesyłowe spowodują odbicia w miejscach, w których wykazują nagłą zmianę impedancji. Sygnał odbity dodaje się do oryginału, może odbijać się ponownie po stronie nadajnika, i w ten sposób przewijać w przód iw tył. Wynik jest pokazany na wykresie: przekroczenie, o którym mówisz, i pewne dzwonienie.

Długość drutu 12 "(30 cm) to 1/10 długości fali 3 m lub 100 MHz. 1 MHz, a nawet 4 MHz nie powinno sprawiać tutaj większych problemów. Zakończenie linii, jak mówi Wouter, może być pierwszym krokiem. wejście ma prawdopodobnie wysoką impedancję, i to nigdy nie jest dobre dopasowanie. Ponieważ masz trzy różne elementy w połączeniu (PCB, drut, PCB), znalezienie impedancji charakterystycznej będzie trudne. (Będzie również inne dla PCB i drutu, więc przy bardzo wysokich częstotliwościach odbijalibyśmy również odbicia na połączeniach kabla.) Biorąc pod uwagę krótką długość i niską częstotliwość, wartość rezystora końcowego nie jest krytyczna. 100 może być zbyt niska dla mikrokontrolera, większość z nich może nie dostarcza 33mA (lub nawet 50mA przy 5V). Spróbowałbym 1kΩΩΩ na początek i sprawdź, jak daleko nas to zaprowadzi.

edit (aktualizacja pytania)
Wydaje się, że czas narastania wynosi 7ns. To szybkie, jak mówi Kortuk, oznacza, że ​​masz spektrum co najmniej do 400 MHz, a te harmoniczne rzeczywiście ucierpią na efektach linii transmisyjnej, nawet jeśli twój zegar ma tylko 1 MHz. Spróbuj je odfiltrować, szerokość pasma 20 MHz (80 MHz dla zegara 4 MHz) zapewnia więcej niż wystarczający czas narastania. Jest to fala prostokątna 1 MHz filtrowana za pomocą LPF o ścianie z cegły przy 20 MHz:

wprowadź opis zdjęcia tutaj

Umieszczenie rezystora szeregowego utworzy LPF pierwszego rzędu z pojemnością linii. Jeśli oszacujemy to na 50pF, to

R=12)π100M.H.z50pfa=32Ω

daje częstotliwość odcięcia 100 MHz. Tak więc rezystor z serii 33 powinien skrócić czas narastania, ale pozostawić więcej niż wystarczająco, aby mieć dobry sygnał przy 4 MHz.Ω


2
Częstotliwość 1 MHz nie ma znaczenia. Ważny jest czas narastania.
Rocketmagnet

@stevenvh, Próbowałem dodać rezystor 1K do masy w miejscu docelowym. Pomogło to w skokach, ale także nieco obniżyło poziom sygnału. Czy to normalne? Kiedy mówię poziom, na którym ustala się sygnał. Próbowałem także 500 omów, 220 omów ten sam efekt, ale bardziej wyraźny.
Saad

@ Saad - ile to kosztuje? 3,3 V na 1 k to tylko 3 mA, a sterownik powinien być w stanie w pełni go dostarczyć. Może mieć pewien opór wewnętrzny, ale to kilkadziesiąt omów, więc poziom powinien obniżyć się tylko o 2 lub 3%.
stevenvh

@stevenvh Zapomniałem, że szereguję rezystor na linii, więc oczywiście zrzucę trochę napięcia. Głupi ja! Jednak nawet opornik 180 Ohm niewiele pomógł. Spowodowało to przekroczenie napięcia do 4,5 V. Domyślam się, że potrzebuję znacznie niższego oporu, ale potem muszę się martwić o bieżący remis.
Saad

Czy powinienem również rozważyć aktywne wypowiedzenie? Zastosowanie niskiej rezystancji zwiększy zapotrzebowanie na moc na całej płycie, a ponieważ magistrala cały czas pracuje, zwiększa zużycie energii. Czy zastosowanie diod Schottky'ego jako zacisków byłoby skuteczne?
Saad

6

W przypadku tak krótkiego autobusu spróbowałbym połączyć szeregowo mały rezystor z czymkolwiek napędzającym linię. To nie jest teoretycznie idealny sposób, biorąc pod uwagę teorię linii przesyłowych, ale pragmatyczne podejście, które moim zdaniem będzie działać wystarczająco dobrze w twoim przypadku. Spróbuj 47 Ω na początek i zobacz, co to robi. Jeśli to pomoże, ale nie dość, możesz przejść wyżej, ale nie przekroczyłbym 120 Ω. Są szanse, że gdzieś w tym przedziale znajdziesz wartość, która działa wystarczająco dobrze.


Próbowałem tego podejścia, Olin. Użyłem rezystora 100 Ohm, który obniżył przekroczenie o około 500 mV i obniżył go do 4,3 V z 4,7 V. To wciąż wolt powyżej 3,3 V. Czas narastania wynosił wtedy 12 ns w porównaniu z początkowym 7.
Saad

Wygląda na to, że obliczałem mój rezystor, kiedy wysłałeś odpowiedź, Olin. Przepraszam za to
stevenvh

@OlinLathrop I zwiększyłem rezystancję szeregową do 330 omów i doprowadziłem do przekroczenia do 3,7 V. Jestem z tego całkiem zadowolony. Czas narastania wynosił 10 ns. Czy powinienem po prostu trzymać się tego, czy umieścić rezystory terminujące przy następnej wersji płyty? Pytam, ponieważ zalecałeś nie przekraczać 120 omów.
Saad,

@ Saad: Martwiłem się wpływem innych obciążeń na linię i staje się podatny na hałas. Jeśli sygnały są czyste i nie ma na nich obciążeń DC (na przykład wejścia CMOS o wysokiej impedancji) na liniach, to idź dalej i użyj 300 omów.
Olin Lathrop,

4

AFAIK przekroczenie może zostać wyeliminowane przez zakończenie proppera, jeśli kierowca może prowadzić ładunek. W przeciwnym razie niektóre dedykowane pary sterownik / odbiornik, takie jak LVDS, a może nawet RS485 na pewno to zrobią.


+1: często używamy LVDS do przenoszenia sygnałów SPI.
Jason S

1

W przeszłości miałem poważne problemy z uruchomieniem SPI przez kable taśmowe, choć znacznie dłuższe niż to, co opisujesz. Odporność na hałas stała się prawdziwym problemem, a do moich urządzeń peryferyjnych trafiły uszkodzone polecenia. To wystarczyło, by nie przejść testu odporności na hałas CE. Jeśli później napotkasz problemy w tym zakresie, zalecam umieszczenie osobnego MCU na każdej płycie i połączenie ich przez CANbus.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.