Elektroda.pl
Elektroda.pl
X
Arrow Multisolution Day
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

magistrala SPI projekt pcb

pawel3110 12 Mar 2018 20:15 2646 57
  • #1 12 Mar 2018 20:15
    pawel3110
    Poziom 15  

    Witam.

    Planuję do Raspberry Pi 3 dodać moduły z MCP23S17. W każdym module będą 2 takie układy a modułów będzie 4. Być może w razie potrzeby będzie wykorzystany drugi pin CS więc liczba modułów będzie mogła wynosić 8szt. Każdy moduł ma długość ok 10cm, więc łączna długość magistrali SPI wyniesie ok. 40cm plus moduł z translatorem napiec i przewodem połączeniowym, czyli ok 70cm.
    Czy takie poprowadzenie SPI na pcb przy takiej długości będzie odpowiednie? Jak wykonać rozgałęzienie na 2 magistrale przy wykorzystaniu 2 sygnałów CS? Potrzebne są jakieś bufory?
    magistrala SPI projekt pcb

    0 29
  • Arrow Multisolution Day
  • #2 12 Mar 2018 22:10
    BlueDraco
    Specjalista - Mikrokontrolery

    Pokaż schemat, nie płytkę. Nie potrzebujesz buforów. Potrzebujesz właściwego ustwienia adresów MCP.

    0
  • #3 12 Mar 2018 22:26
    ghost2000
    Poziom 18  

    pawel3110 napisał:
    Czy takie poprowadzenie SPI na pcb przy takiej długości będzie odpowiednie? Jak wykonać rozgałęzienie na 2 magistrale przy wykorzystaniu 2 sygnałów CS?

    Jeśli chcesz łączyć na większe odległości i większą liczbę układów, użyj MCP23017 z I2C. Nie trzeba buforów, wystarcza dwie linie. Wadą może byc max zegar 1,7Mb/s a nie 10 i adresowanie (3 bajty a nie dwa) co bez jakiegoś specjalnego liczenia oznacza 10 razy wolniejsza komunikację. Oczywiście ma to znaczenie, jeśli chcesz szybko sterować czy odczytywać porty, ale jeśli będa to przekaźniki, klawiatura itp, to nawet I2C 100kHz to aż nadto.

    0
  • #4 13 Mar 2018 05:25
    tronics
    Poziom 36  

    @ghost

    Cytat:
    40cm plus moduł z translatorem napiec i przewodem połączeniowym, czyli ok 70cm.

    I2C na 1.7MHz nie zadziała z podciąganiem do 3.3 na takiej odległości, w każdym razie będą błędy transmisji.

    0
  • Arrow Multisolution Day
  • #5 13 Mar 2018 07:46
    ghost2000
    Poziom 18  

    tronics napisał:
    @ghost
    Cytat:
    40cm plus moduł z translatorem napiec i przewodem połączeniowym, czyli ok 70cm.

    I2C na 1.7MHz nie zadziała z podciąganiem do 3.3 na takiej odległości, w każdym razie będą błędy transmisji.

    Ale i SPI 10MHz na 70cm też nie zadziała. Chyba, że da się terminowanie linii ale i to pewne nie jest. SPI łatwo przedłużyć używając RS422.

    0
  • #6 13 Mar 2018 09:34
    pawel3110
    Poziom 15  

    BlueDraco
    Przy pinach adresowych z jednej strony jest ścieżka z +5V a z drugiej GND co zapewni wybór adresu przy lutowaniu pcb.

    ghost2000
    Na I2C mógłbym użyć 8 takich układów, a chciałbym mieć możliwość podpięcia większej ilości. Na SPI z dwoma liniami CS mogę podłączyć ich 16.

    Długość magistrali SPI determinuje długość pcb modułów. Wszystko będzie w jednej metalowej rozdzielnicy, Rpi3 na dole i moduły z wyjściami nad nim w pionie po 4 sztuki. Jeżeli będzie mało wyjść, to dołożę obok kolejne 4 sztuki w pionie.

    Domyślam się, że już na starcie trzeba będzie dac translator napięć aby SPI pracowało na 5V.
    Czy takie ułożenie ścieżek magistrali n atakiej długości będzie odpowiednie?
    Czy w przypadku rozgałęzienia SPI z wykorzystaniem drugiego CS potrzebne będą bufory na magistrali dla każdego zestawu modułów?

    Na obrazku dokładniej wyjaśnię o co mi dokładnie chodzi.

    magistrala SPI projekt pcb

    0
  • #7 13 Mar 2018 09:55
    2675900
    Użytkownik usunął konto  
  • #8 13 Mar 2018 10:03
    pawel3110
    Poziom 15  

    Piotrus_999
    To nie dla mnie. Na Rpi3 będzie działał jako soft PLC z codesys w którym obsługa MCP23S17 jest bardzo dobra i nie chciałbym tego komplikować.

    0
  • #9 13 Mar 2018 10:07
    2675900
    Użytkownik usunął konto  
  • #10 13 Mar 2018 10:53
    ghost2000
    Poziom 18  

    pawel3110 napisał:
    Na Rpi3 będzie działał jako soft PLC z codesys

    Czy czas startu takiego PLC nie przeraża? W jakim czasie startuje RPi? 30 sekund? Minutę? uC wystartuje w milka ms.

    0
  • #11 13 Mar 2018 11:02
    pawel3110
    Poziom 15  

    ghost2000
    Od momentu włączenia zasilania do wyświetlenia wizualizacji w przeglądarce 20 sekund. Normalny PLC też nie startuje w 1s. Nie jest to czas krytyczny.

    Myślę, że trochę odbiegamy od tematu...

    0
  • #12 13 Mar 2018 11:06
    2675900
    Użytkownik usunął konto  
  • #13 13 Mar 2018 11:10
    pawel3110
    Poziom 15  

    Moderowany przez tmf:

    Część nie na temat usunąłem.


    W Codesys obsługa MCP23S17 jest wbudowana, dodawanie procesora znacznie by skomplikowało obsługę komunikacji.

    0
  • #14 13 Mar 2018 11:12
    BlueDraco
    Specjalista - Mikrokontrolery

    I wciąż nie wiadomo, w czym problem. Można razem połączyć 8 układów MCP23S17, z wyborem adresu przez A0..2. Przy odległości kilkudziesięciu cm w warunkach niezbyt silnych zakłóceń wystarczy użyć odpowiedniej częstotliwości taktowania, zgaduję, że rzędu setek kHz.

    0
  • #15 13 Mar 2018 11:16
    pawel3110
    Poziom 15  

    BlueDraco
    Ależ główne pytanie zawarłem w pierwszym poście:

    Cytat:
    Czy takie poprowadzenie SPI na pcb przy takiej długości będzie odpowiednie? Jak wykonać rozgałęzienie na 2 magistrale przy wykorzystaniu 2 sygnałów CS? Potrzebne są jakieś bufory?

    0
  • #16 13 Mar 2018 11:18
    tmf
    Moderator Mikrokontrolery Projektowanie

    BlueDraco napisał:
    Przy odległości kilkudziesięciu cm w warunkach niezbyt silnych zakłóceń wystarczy użyć odpowiedniej częstotliwości taktowania, zgaduję, że rzędu setek kHz.


    Niekoniecznie. Obniżenie częstotliwości taktowania nie zmienia stromości zboczy, więc może nie pomóc. Trzebaby dodać jakiś slew-limiter.

    0
  • #17 13 Mar 2018 11:40
    krzysiek_krm
    Poziom 34  

    Witam,
    najlepszym rozwiązaniem wydaje się być

    ghost2000 napisał:
    SPI łatwo przedłużyć używając RS422.

    chodzi rzecz jasna wyłącznie o warstwę fizyczną - dopasowaną linię różnicową.
    tmf napisał:
    Niekoniecznie. Obniżenie częstotliwości taktowania nie zmienia stromości zboczy, więc może nie pomóc. Trzebaby dodać jakiś slew-limiter.

    Trzeba poszukać odpowiednich układów. Szczerze mówiąc nie wiem jak jest w przypadku RS422 ale na przykład transceivery CAN dość często mają taką funkcjonalność.

    Pozdrawiam

    0
  • #18 13 Mar 2018 12:04
    ghost2000
    Poziom 18  

    krzysiek_krm napisał:
    Witam,
    najlepszym rozwiązaniem wydaje się być
    ghost2000 napisał:
    SPI łatwo przedłużyć używając RS422.

    chodzi rzecz jasna wyłącznie o warstwę fizyczną - dopasowaną linię różnicową.

    Naturalnie. MOSI, MISO, SCK, /CS na bufory TTLLV-422, później z R22 na RS422-TTLLV. Niestety liczba przewodów zwiększa się 2 razy ale za to takie połączenie daje dużą odporność na zakłócenia.

    krzysiek_krm napisał:

    tmf napisał:
    Niekoniecznie. Obniżenie częstotliwości taktowania nie zmienia stromości zboczy, więc może nie pomóc. Trzebaby dodać jakiś slew-limiter.

    Trzeba poszukać odpowiednich układów. Szczerze mówiąc nie wiem jak jest w przypadku RS422 ale na przykład transceivery CAN dość często mają taką funkcjonalność.
    Dla 422/485 są układy wolniejsze, maja filtr wejściowy (chodzi o TTL->422). Pierwszy jaki przychodzi mi do głowy to MAX487. Nie jest to najlepszy przykład, ale ma ograniczenie do 400kHz a nie typowo 1 lub 10MHz.

    Myślę, że wystarczyłoby dać bufory pomiędzy RPi a pierwszą płytką/płytkami. Tam sygnał rozdzielić pomiędzy dwie magistrale.

    0
  • #19 13 Mar 2018 12:38
    2675900
    Użytkownik usunął konto  
  • #20 13 Mar 2018 12:50
    pawel3110
    Poziom 15  

    Piotrus_999
    Ale trzeba to jeszcze oprogramować. Rozumiem, że miałoby to działać jak bufor dwukierunkowy?

    ghost2000
    TTLLV-422 dobry pomysł, ale gdzie w tym konkretnym przypadku miałby zastosowanie? Miedzy Rpi a translatorem napięć czy między translatorem a modułami? tam nie ma dużych odległości, ale suma wszystkich może dopiero stwarzać problemy.

    0
  • #21 13 Mar 2018 12:55
    krzysiek_krm
    Poziom 34  

    pawel3110 napisał:
    TTLLV-422 dobry pomysł, ale gdzie w tym konkretnym przypadku miałby zastosowanie? Miedzy Rpi a translatorem napięć czy między translatorem a modułami? tam nie ma dużych odległości, ale suma wszystkich może dopiero stwarzać problemy.

    Wszystkie linie różnicowe możesz rozciągnąć "wzdłuż" Twoich płytek.
    Odpowiednie układy interfejsu RS422 (nadajniki i odbiorniki) będą przy okazji "robiły" za translatory poziomów logicznych.

    0
  • #22 13 Mar 2018 12:59
    2675900
    Użytkownik usunął konto  
  • #23 13 Mar 2018 13:17
    pawel3110
    Poziom 15  

    Piotrus_999
    Miałem na myśli bufor trójstanowy.

    krzysiek_krm
    To już znacznie podnosi skomplikowanie / koszty układu.

    0
  • #24 13 Mar 2018 15:31
    krzysiek_krm
    Poziom 34  

    pawel3110 napisał:
    krzysiek_krm
    To już znacznie podnosi skomplikowanie / koszty układu.

    No cóż, nie ma lekko, chleb po osiem.
    Z drugiej strony ceny tych dodatkowych elementów też na kolana nie rzucają.

    0
  • #25 13 Mar 2018 18:44
    ghost2000
    Poziom 18  

    pawel3110 napisał:
    To już znacznie podnosi skomplikowanie / koszty układu.

    Ma być tanio i dobrze. Tanio już masz :-)

    0
  • #26 14 Mar 2018 12:49
    pawel3110
    Poziom 15  

    Jako, że po rozplanowaniu elementów w rozdzielnicy zabrakło miejsca na Rpi3, to muszę go przenieść do osobnej szafki. Zmieniła się zatem trochę koncepcja prowadzenia magistrali SPI. Czy teraz obejdzie się bez problemów z jej długością?
    magistrala SPI projekt pcb

    0
  • #27 14 Mar 2018 13:13
    2675900
    Użytkownik usunął konto  
  • #28 14 Mar 2018 13:22
    pawel3110
    Poziom 15  

    Piotrus_999
    Zmienia to długość odcinka magistrali podatnej na zakłócenia, czy się mylę?
    Wprost z dokumentacji MCP23S17:

    Cytat:
    • Three Hardware Address Pins to Allow Up to
    Eight Devices On the Bus

    0
  • #29 14 Mar 2018 13:49
    krzysiek_krm
    Poziom 34  

    Myślę, że powinieneś jednak "rozciągnąć" linie symetryczne RS422 wzdłuż wszystkich płytek i zastosować konwersję RS422 <-> SPI na każdej płytce. Takie rozwiązanie jest jednak bardziej elastyczne - komunikacja SPI, która z natury rzeczy jest niezbyt odporna na zakłócenia, będzie wyłącznie na krótkich odcinkach: od Rpi3 do konwertera oraz lokalnie na płytkach od układów scalonych do konwertera.

    0
  • #30 14 Mar 2018 14:29
    pawel3110
    Poziom 15  

    krzysiek_krm
    Chcę tego uniknąć ze względu na:
    1. koszty
    2. skomplikowanie układu- nie mogę zwiększyć rozmiaru płytki a nie zmieszczę już dodatkowych elementów.

    0