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.
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?
źródło
Odpowiedzi:
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.
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:
Umieszczenie rezystora szeregowego utworzy LPF pierwszego rzędu z pojemnością linii. Jeśli oszacujemy to na 50pF, to
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.Ω
źródło
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.
źródło
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ą.
źródło
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.
źródło