ATNEL tech-forum
https://forum.atnel.pl/

SPI długość linii
https://forum.atnel.pl/topic18555.html
Strona 1 z 1

Autor:  r03c10 [ 3 cze 2017, o 21:03 ]
Tytuł:  SPI długość linii

Witam,

Mam pytanie o maksymalną długość magistrali SPI. Otóż podłączam 3 czujniki BME280 do linii SPI. Kiedy robiłem testy na krótkich przewodach (około 15 cm) wszystko było ok. Natomiast teraz podłączyłem je na przewodach o długości 1 metra i klops... Wszystko się sypie. Ewentualnie udało mi się zmusić do działania 2 czujniki naraz. Zjechałem z prędkością magistrali już do 1 KBit/s i nadal efekty są słabe. Zanim zacznę szukać dziwnych przyczyn takiej usterki czy ktoś mógłby mi powiedzieć czy to w ogóle ma prawo działać na tak długiej linii?

Autor:  gizmo5418 [ 3 cze 2017, o 21:54 ]
Tytuł:  Re: SPI długość linii

Witam,

Przy takiej długości linii - zapomnij o prawidłowej pracy, na dodatek przy logice o poziomach 3.3V.
Jeżeli się upierasz na SPI i taką długość linii, to do zastanów się nad dodaniem dodatkowych układów typu nadajnik - odbiornik linii.

Autor:  r03c10 [ 3 cze 2017, o 21:58 ]
Tytuł:  Re: SPI długość linii

Nie upieram się koniecznie przy 1 metrze, ale czujniki muszą być w pewnej odległości od mikrokontrolera, więc chociaż 50 cm chciałbym uzyskać. Będę to testował i może zadziała. A jakie układy pośredniczące kolega poleca?

Autor:  micky [ 4 cze 2017, o 09:23 ]
Tytuł:  Re: SPI długość linii

I2C i SPI służą do komunikacji na krótkie odległości w obrębie jednego urządzenia jak płyta główna, telewizor itp. Pomyśl nad użyciem RS485 (co będzie wymagało dodanie do każdego z czujników mikroprocesora i stworzenie jakiejś prostej komunikacji).

Sent from my Mi-4c using Tapatalk

Autor:  r03c10 [ 4 cze 2017, o 09:54 ]
Tytuł:  Re: SPI długość linii

Już myślałem nad zastosowaniem CAN i dodaniem właśnie jakiegoś małego STM32 do płytki z czujnikiem, ale tutaj idę w koszty (gdybym takich czujników potrzebował powiedzmy 100). Poza tym muszę na szybko rozwiązać ten problem i nie ma już czasu na tworzenie płytek od nowa. No nic, chyba poskracam przewody i tyle.

Autor:  micky [ 4 cze 2017, o 10:04 ]
Tytuł:  Re: SPI długość linii

Jeśli nie miałeś do czynienia wcześniej z CANem to go odradzam, bo jest bardziej czasochłonny do ogarnięcia niż RS485/422, który jest bardzo zbliżony do RS232.
P. S. Jak sie bardzo uprzesz to możesz skorzystac z układów zwiększających zasięg SPI.

Sent from my Mi-4c using Tapatalk

Autor:  r03c10 [ 4 cze 2017, o 11:55 ]
Tytuł:  Re: SPI długość linii

Właśnie ostatnio się bawiłem CANem i ładnie mi działa, więc to właśnie jego bym użył, ale tak jak mówię nie chcę komplikować płytek i dodawać mikrokontrolera. Trochę muszę kombinować pod górkę teraz.

Autor:  micky [ 4 cze 2017, o 14:04 ]
Tytuł:  Re: SPI długość linii

Do CANa potrzebujesz procka z kontrolerem CANa a do rs422/485 tylko takiego z uartem :)

Sent from my Mi-4c using Tapatalk

Autor:  r03c10 [ 4 cze 2017, o 14:23 ]
Tytuł:  Re: SPI długość linii

I to jest dobry argument :D W sumie może jakiegoś małego Attiny można by tam wsadzić. Ale i tak w najbliższym czasie muszę pozostać przy SPI. Zmieniłem przewody na 0.5 m i na razie nie zauważyłem błędów.

Autor:  micky [ 4 cze 2017, o 15:12 ]
Tytuł:  Re: SPI długość linii

Właśnie o to chodzi. Nawet attiny102 dałby radę :)

Sent from my Mi-4c using Tapatalk

Autor:  Rafał555 [ 4 cze 2017, o 16:56 ]
Tytuł:  Re: SPI długość linii

Kiedyś walczyłem z problemem długich kabli na SPI.
To było to 5 modułów z rejestrami przesuwnymi podłączonych kaskadowo. długość kabli przekraczała 1m.
Ostatecznie powstał taki kod z dalayami:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Urządzenie pracuje koło roku i nie zauważyłem błędów.

Autor:  mirekk36 [ 4 cze 2017, o 18:26 ]
Tytuł:  Re: SPI długość linii

Rafał555 napisał(a):
Urządzenie pracuje koło roku i nie zauważyłem błędów.

Na Filipinach i nie tylko żyją tacy ludzie, którzy mogą spokojnie dłonią dotykać się do linii z napięciem 230V i nic im nie jest, nie zabija ich to, i tu już grubo od ponad roku ;) ...

A pomimo to jednak nie zaleca się takich praktyk.

Więc jak myślisz - to że tobie to akurat działa to oznacza, że wynalazłeś nowy standard dla magistrali SPI i że między bajki można sobie włożyć fizykę i wyliczenia, wg których przyjmuje się że takie magistrale jak SPI czy i2c albo podobne mogą pracować wewnątrz urządzenia - nie zaś służyć do transmisji danych między urządzeniami ? ...

Proszę Was Panowie nie piszcie bzdur .... Bo pewnie zarówno autor wątku jak i kolega Rafał555 ... mieli to nieszczęście, że trafili właśnie na tego typu fora na których znaleźli BZDURY - i nigdy nie doczytali o zasadach jakie są związane z typem konkretnej magistrali i teraz powielają te bzdury dalej.

Z tego powodu aby zatrzymać POWIELARKĘ BZDUR - reaguję i piszę to co piszę ....

Do komunikacji między urządzeniami służą takie magistrale jak podpowiadali koledzy wyżej czyli np RS232, RS485, RS422 itp .... one właśnie do tego są stworzone. Tyle, że jak widać podpowiedzi idą jak krew w piach ... Ja już nawet czytając ten wątek i widząc, że kolega micky miał nadzieję, że autor zrozumiał, że nawet na ATtiny102 dałoby to radę zrobić - a tu BACH ! ;)

obciąłem kable z 1m do 50cm i teraz coś działa ;) no masakra ....

za chwile wchodzi następny kolega i odkrywa Amerykę - że u niego to działa na ponad 1 m !!! od ponad roku więc pewnie twórcy magistral SPI czy I2C kłamią ! ;)

Pamiętam jak kiedyś (już nawet nie wiem czy to na naszym forum czy innym) jakiś kolega pisał że wciąż ma problemy z wyświetlaczem LCD2x16 bo co jakiś czas pojawiają mu się krzaki i się zawiesza - musi resetować całe urządzenie ....

Wszyscy mu doradzali a to filtrowanie dodatkowe zasilania bo oczywiście nie miał, a to sprawdzenie czy na innym LCD też tak będzie i okazywało się że na innym było lepiej na jeszcze innym gorzej ... chociaż jeden pracował prawie 2 miesiące bez zawieszenia

ale nikt jakoś nawet nie zapytał jak długą taśmę dał autor pomiędzy prockiem a LCD bo pisał że LCD był na tasiemce ...

Więc ja w końcu zapytałem .... i autor bez zażenowania i krępacji odpisał na forum, że dokładnie nie wie ale z piwnicy na poddasze będzie ponad jakieś 6-7 m !!!!

Jakiż on był zdziwiony gdy posypały się na niego gromy, że od razu tego nie napisał bo większość ludzi w ogóle nie poświęcałaby czasu na doradzanie przy takiej odległości ,,, bo po co ?

Oczywiście autor ujął się honorem , napisał po jakimś czasie, że problem rozwiązany bo dodał kondensatoy 4x 4700uF przy LCD na poddaszu i od kilku miesięcy wszystko pracuje prawidłowo ....


OK PODSUMOWUJĄC - warto się uczyć i rozumieć do czego są zaprojektowane magistrale ... i nawet jak się zrobiło głupiego babola - to warto jednak zmienić projekt i zrobić go porządnie - a nie naprawiać przez wzięcie nożyczek i odcinaniu po ileś cm kabla żeby tylko zadziałało - a później to "jakoś tam będzie"

Autor:  rudy.ini [ 4 cze 2017, o 20:23 ]
Tytuł:  Re: SPI długość linii

SPI czy też RS485 to linie transmisyjne dla których trzeba uwzględnić zjawisko linii długiej: https://pl.wikipedia.org/wiki/Linia_d%C5%82uga, https://en.wikipedia.org/wiki/Transmission_line. W wielkim skrócie: jeżeli długość fali (prędkość światła/częstotliwość) jest krótsza od przewodu to sygnał może się wytłumić a nawet "zanegować", dlatego przycinanie dłuższych przewodów może przynosić mizerne rezultaty. Dlatego do komunikacji na dłuższe odległości służy np RS485.

Autor:  r03c10 [ 4 cze 2017, o 22:06 ]
Tytuł:  Re: SPI długość linii

mirekk36 napisał(a):
Z tego powodu aby zatrzymać POWIELARKĘ BZDUR - reaguję i piszę to co piszę ....


Poczułem się wywołany do tablicy, więc odpowiadam. Ja sobie zdaję sprawę, że popełniłem błąd i właśnie dlatego żeby wyjaśnić sytuację założyłem ten wątek. Skróciłem przewody bo muszę na szybko uruchomić urządzenie. Na pewno w najbliższym czasie wykonam jego drugą wersję, gdzie interfejs będzie odpowiedni. I wiem, że zarówno SPI jak i I2C przystosowane są do krótkich połączeń i nigdy by mi nie przyszło do głowy stosować je na powiedzmy kilku metrach. Jednak sytuacja jest taka, że muszę trochę improwizować w tym momencie.

Podsumowując, cała sytuacja jest spowodowana moim gapiostwem. Miesiąc temu wykonałem sobie moduły czujników nie przywiązując uwagi do interfejsu i zająłem się częścią właściwą sterownika. I wczoraj wyszedł mój błąd. Ale w końcu po coś są kolejne wersje urządzeń, które pozwalają poprawić swoje błędy, co na pewno uczynię :D

Autor:  mirekk36 [ 4 cze 2017, o 22:50 ]
Tytuł:  Re: SPI długość linii

r03c10 napisał(a):
Ale w końcu po coś są kolejne wersje urządzeń, które pozwalają poprawić swoje błędy, co na pewno uczynię

No i przynajmniej tego typu wnioski to ja rozumiem ;)

Autor:  micky [ 5 cze 2017, o 05:55 ]
Tytuł:  Re: SPI długość linii

Kolga rudy.ini miał chyba na myśli SPI i I2C.

Sent from my Mi-4c using Tapatalk

Autor:  SylwekK [ 5 cze 2017, o 09:02 ]
Tytuł:  Re: SPI długość linii

A może 1-wire jak nie zależy na dużej prędkości. W końcu, np. takie DS-y chodzą bez problemu na kablach co najmniej kilkanaście metrów.

Autor:  r03c10 [ 5 cze 2017, o 15:54 ]
Tytuł:  Re: SPI długość linii

Dziękuję za wszystkie odpowiedzi. W nowej wersji zastosuję jakiś mały Attiny i transciever RS485 bo tak patrzę na ceny i to będą faktycznie grosze. Nie wiem czemu, ale zawsze podchodziłem do RS485 jak do jeża, a teraz sobie przynajmniej potestuję.

Natomiast w ramach usprawiedliwienia jeżeli chodzi o moje przygody z SPI (nadal czuje się wywołany przez Mirka :D ) to podrążyłem temat i okazuje się, że nawet w literaturze można znaleźć takie tabelki, z których wynika że SPI może działać nawet na kilku metrach. Oto dowód:

Obrazek

Musiało mi kiedyś coś podobnego wpaść w oko i nie doczytałem, że interfejs jest przeznaczony wyłącznie do pracy w obrębie jednej płytki i może dlatego byłem pewien, że robię to dobrze :D

Autor:  mirekk36 [ 5 cze 2017, o 16:59 ]
Tytuł:  Re: SPI długość linii

jest taka prosta i odwieczna zasada - jeśli powołujesz się na jakąś literaturę to ZAWSZE ale to ZAWSZE trzeba podać informację co to za literatura, czyli tytuł książki, nazwę noty PDF, nazwę dokumentu. Tytuł , stronę itp itd

zamiast podawać takie wyrwane z kontekstu informacje - pisząc, że "w literaturze" ... a skąd wiadomo czego ta literatura którą cytujesz dotyczy dokładnie? jakich warunków ? o czym w niej mowa dokładnie ... co to jest w ogóle.

Wtedy można się jakoś odnieść i dyskutować a tak ? .... a tak - to sam chyba czujesz jak się ma taka informacja do rzeczywistości o której dyskutujemy.

Autor:  r03c10 [ 5 cze 2017, o 19:36 ]
Tytuł:  Re: SPI długość linii

Proszę bardzo, link:

https://books.google.pl/books?id=1_46Cg ... th&f=false

Ja to wrzuciłem tylko w ramach ciekawostki, a nie żeby na nowo rozpoczynać dyskusję :D Wiem, że później jest uszczegółowione, że ma to być w obrębie jednego PCB, ale ta tabela po prostu najbardziej rzuca się w oczy. Po prostu wydaje mi się, że kwestie długości linii dla poszczególnych interfejsów są mocno niejednoznacznie określone, ale to chyba wynika z faktu, że zbyt wiele czynników może wpływać na jakość sygnału.

Autor:  mirekk36 [ 5 cze 2017, o 20:18 ]
Tytuł:  Re: SPI długość linii

r03c10 napisał(a):
Ja to wrzuciłem tylko w ramach ciekawostki, a nie żeby na nowo rozpoczynać dyskusję

Ale dyskutować zawsze warto, czemu nie ...

r03c10 napisał(a):
Po prostu wydaje mi się, że kwestie długości linii dla poszczególnych interfejsów są mocno niejednoznacznie określone,

Bo NIGDZIE nie znajdziesz odpowiedzi ILE DOKŁADNIE cm albo m może mieć jakaś magistrala - to całkiem normalne. Zależy to jak pisali wyżej koledzy od
wielu parametrów technicznych magistrali, wartości podciągania, prądów, pojemności , ilości układów na magistrali nawet itp itd ....

Trzeba wiedzieć jednak o tym KIEDY JAK I PO CO projektowano pewne rodzaje magistral, to nie jest wiedza tajemna.

Więc jeszcze raz przypomnę że takie magistrale jak i2c, spi powstały do pracy w obrębie JEDNEGO PCB w urządzeniu albo ... albo do pracy w ramach jednego urządzenia, gdzie jest np kilka modułów (kilka PCB) połączonych magistralą za pomocą taśm itp ... W takich warunkach stosunkowo łatwo zaprojektować magistralę i przewidzieć jej działanie ...

Jeśli zaś ktoś potrzebuje komunikacji między dwoma urządzeniami i chwyta się za i2c albo SPI to robi sobie strzał w kolano i stopę jednocześnie a później się dziwi ... ŁOOOJ dlaczego mi to nie działa, albo działa w kratkę? Albo np ... co gorsze panie kochany - dlaczego np mój projekt nie przeszedł badań CE ... i wtedy płacz, że kupa kasy poszła się rąbać ....

Gdy mamy połączyć dwa urządzenia to pierwsze co należy pomyśleć o RS232 przynajmniej, no ale tu też nie ma co myśleć o odległościach jak w tej książce z której tabelkę pokazałeś bo niestety dla RS232 1km ???!!!??? i to z prędkością 10Mbit ????? a do tego taki kwiatek jak "MAX NODES 256" !!! to już niestety (nie chcę nikogo obrażać, bo w książkach też zdarzają się błędy ;) w moich również - ale akurat dla RS232 MAX NODES może być TYLKO i WYŁĄCZNIE = 2 ;) chyba że ktoś zaczyna się bawić w lekką zmianę standardu i wprowadza mnożenie sygnałów za pomocą diod ... owszem można - ale to będzie zapchaj dziura w zamian za RS485 i na dodatek DŁUGOŚĆ TAK zmodyfikowanej magistrali zmniejszy się DRAAASTYCZNIE ;)

krótko mówiąc tabelka zawiera treści niestety z KOSMOSU :)

Druga sprawa w tabelce jest I2C - długość 8m !!!! O Maj GAD! ;) a do tego max 1023 nodes? Mam nadzieję, że te 1023 nodes to nie na tych 8 metrach ;) nawet ciężko to komentować już nie wspomnę o 5Mbit przy 8 metrach

------------------------------------------------------------------------------------------

Gdy potrzebna była komunikacja między urządzeniami w odległości do kilku m - powstał RS232, ale okazało się, że przydałoby się zwiększyć odległość - więc trzeba było przejść na transmisję różnicową i tak powstał RS485/422 później LIN i CAN ... tu już można liczyć na komunikację do kilku km.

Powiedz mi czy ciężko zapamiętać taki podział rodzajów magistral - przecież no prościej nie da się wyjaśnić i opisać. Bo nawet wewnątrz jednego urządzenia jak się źle poprowadzi magistralę i2c czy SPI, nie zadba się o odpowiednie prądy podciągania i pojemności w zależności od ilości urządzeń, o poprawne prowadzenie ścieżek - to też mogą być problemy. Gdy trzeba łączyć moduły PCB tasiemkami jest jeszcze gorzej bo np rezystancje zestyków dochodzą itp itd .... a wywalenie kabli do tego na zewnątrz obudowy - to jak wystawienie anteny i zbieranie zakłóceń z kosmosu.

Dlatego nie warto szukać na siłę dowodów na istnienie innej rzeczywistości w której magistrale stosuje się inaczej.

Owszem są scalaki jak pisał zdaje się kolega micky do przedłużania długości tych magistral ale jak myślisz - dlaczego scalaki ? a nie po prostu dolutowanie paru metrów kabla ? ... coś w tym jest co ? ;)

Autor:  r03c10 [ 5 cze 2017, o 21:22 ]
Tytuł:  Re: SPI długość linii

Dla mnie też wartości w tej tabelce są delikatnie mówiąc dziwne. Wrzucam to tutaj tylko dla ciekawostki jak mówiłem.

mirekk36 napisał(a):
Dlatego nie warto szukać na siłę dowodów na istnienie innej rzeczywistości w której magistrale stosuje się inaczej.


Nie szukam alternatywnej rzeczywistości tylko staram się wydedukować skąd wziął się mój błąd. Chcę tylko pokazać, że różne, wydawać by się mogło wiarygodne źródła mogą człowieka wprowadzić w błąd.

A prawda jest taka, że człowiek się uczy na błędach i teraz widząc naocznie, że mi to źle działa i mając konstruktywne porady z tego wątku, na pewno już nigdy czegoś takiego nie wykonam. Niestety widocznie trzeba raz coś sknocić żeby potem robić to dobrze :D

Autor:  SunRiver [ 5 cze 2017, o 21:36 ]
Tytuł:  Re: SPI długość linii

dlatego dokumentacja producenta jest wiążąca , -- chcesz znac prawdę o I2C szukasz u Philipsa itd ..
najlepsze źródło informacji o CAN to dokumentacja Bosha a nie protezy open

a po za tym u mnie HD44780 śmiga na 30m skrętce bez zwiechy i problemów ... i co ?>?

a no to że śmiga ale na 2ch przewodach z modułem SunSERLCD-02 :)

CAN jest prosty , Lin oszczędny , to przemysłowe media do silnie zakłóconych środowisk
ale tak naprawdę niema znaczenia czy tym RSem czy Canem czy linem , czy lorą bezprzewodowo na 10km puścisz .... trzeba to zrobić z głową :)

jak masz problem z przeprowadzaniem przewodów pomyśl może radiowo ?? LORA 433Mhz , WIFI , czy przemysłowe ZigBEE

Autor:  mirekk36 [ 5 cze 2017, o 22:46 ]
Tytuł:  Re: SPI długość linii

SunRiver napisał(a):
a no to że śmiga ale na 2ch przewodach z modułem SunSERLCD-02

No bo jak się wie jak zrobić to MUSI działać ;) ...

Autor:  micky [ 6 cze 2017, o 05:54 ]
Tytuł:  Re: SPI długość linii

Mirku, w tej książce pod pozycją UART kryje się wg. dalszego opisu RS 232/422/485 i stąd pewnie ta ilość 'node'. Co nie zmienia faktu, że zestawienie przez nich pokazane nie do końca odzwierciedla rzeczywistość.

Sent from my Mi-4c using Tapatalk

Autor:  mirekk36 [ 6 cze 2017, o 07:24 ]
Tytuł:  Re: SPI długość linii

micky napisał(a):
Mirku, w tej książce pod pozycją UART kryje się wg. dalszego opisu RS 232/422/485


No ale zobacz sam, skoro pod pozycją UART ukryli RS485/422 to hmmm czemu nie ukryli od razu pod jakąś jedną nazwą wszystkiego ? ;) Wyszłaby jedna pozycja w tabelce ;) długość magistrali 10 km ;) ... 1024 nodes itp

a na poważnie ta tabelka, jak to pisał i słusznie kolega autor wątku

r03c10 napisał(a):
ale ta tabela po prostu najbardziej rzuca się w oczy.


więc nie ma co się dziwić, że jeśli ktoś nie ma jeszcze doświadczenia w tej dziedzinie - to cóż, rzuci okiem i co? zrobi magistralę i2c na 8 m .... uznając, że będzie ok bo przecież tak było w tabelce w książce.

Moim zdaniem takie zestawienie danych w tej tabeli jest mocno nieszczęśliwe po prostu.

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/