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

Magistrala CAN - poślizg sygnału,zakłócenia i inne...

07 Cze 2008 17:06 3611 20
  • Poziom 35  
    Od dłuzszego czasu bawie sie w zastosowanie magistrali CAN i :

    w teorii wszystko w porzadku....ale

    Z załozenia standardu CAN po stronie procesora i dwóch linii CANTX i CANRX idących do transceivera sygnał puszczony na linie CANTX (dokladniej wymuszenie stanu dominującego) powinien natychmiastowo pojawić się również na linii CANRX, gdyz procesor za pomocą tego pinu na bierząco monitoruje stan magistrali.

    Niestety - pomiędzy wymuszeniem stanu dominującego na CANTX a pojawieniem sie go na CANRX jest poślizg czasowy 2,8us.

    Druga sprawa: Monitoruję również co to znajduje sie ZA transceiverem, czyli CANH i CANL. Sytuacja jest dziwna ponieważ CANL idzie w stan dominujący dokladnie od momentu pojawienia się tego stanu na CANTX, przy czym natychmiastowo znika ułamek mikrosekundy po pojawieniu sie stanu dominującego na CANRX.

    Tego akurat standard chyba juz nie przewidział....:/

    Efektem tego jest, że NIE MOGE osiągnąć wyzszych prędkosci transmisji niz paredziesiąt kbit/s, gdyz kontroler CAN dostaje stan magistrali z opóźnieniem tych 2,8us, tak na polski: wysłał dominujący,dostał recesywny == błąd magistrali...

    Kolejny zonk:

    CAN przewiduje transmisje 1mbit na 40 metrach(!!), mnie sie udało osiągnąć 100kbit/s (niecałe) na 30cm kabelku, bo na metrowym to juz chodzic nie chce i trzeba znacząco zwolnić bitrate....

    Zastosowałem sie do zaleceń stosując terminale na kazdym zakonczeniu magistrali, dane płyną przez ethernetową skrętke (UTP)...i nadal lipa.

    Nie pomaga również superekranowany drogi jak cholera kabel LiY-CY. Zadnej różnicy. Na nieekranowanym kablu LiY-Y to samo.

    O co tu chodzi? Podobno CAN jest fool-proof i powinien chodzic zawsze wg specyfikacji (wszędzie w necie tak piszą) a u mnie nie działa....

    BTW. Wszystkie pomiary zostały przeprowadzone sonda logiczna podłączona do oscyloskopu 200MSa/s, threshold TTL

    Proszę o JAKIES wyjasnienie zjawisk....??

    Pozdrawiam

    PS:
    Wewn. kontroler ECAN [dsPIC33FJ256GP710]
    Transceiver: SN65HVD230 - 3v3
    Złącza magistrali: RJ-45
  • PCBway
  • Poziom 23  
    Hej

    W transceiverze MCP2551 jest pin Rs. Odpowiada on za prędkość narastania sygnału na magistrali. Sprawdz dokumentacje z twojego transceivera.

    "High-speed mode is selected by connecting the RS pin
    to VSS."

    Odpaliłem na tym transceiverze CANa o prędkości 0.5Mbps.

    Mozesz spróbować inny transceiver. Nie interesowałem się tym dokładnie ale podejrzewam że rozkład wyprowadzeń w transceiverach jest taki sam.
  • Poziom 13  
    Potwierdzam :) Rozkład pinów jest identyczny. Ja używam transceivera ATA6660 i jak dotąd żadnych problemów nie było.
  • Poziom 35  
    a wy robiliście to na 3.3v? Mnie sie zdaje ze ww. transceivery są na 5v....

    Również mam podłączony pin RS do masy, bo bez tego to juz nic nie chodzi.

    Mysle ze to jest kwestia jakichs zakłóceń, ścieżek albo cos w tym stylu i chciałbym jakieś wskazówki gdzie szukać błędu...
  • PCBway
  • Poziom 23  
    Tak transceiver był na 5V. ale to bez znaczenia. TI deklaruje 1Mbps i tyle powinieneś wyciągnąć. Może przy ustalaniu częstotliwości transmisji robisz jakiś błąd ? Pamiętam że długości cykli próbkowania CANa itp wziąłem z forum microchipa bo samemu nie potrafiłem zrozumieć opisu z pdfa, wartości z forum ruszyły momentalnie.
  • Poziom 13  
    ATA6660 działa przy 3,3V jak i 5V, ale ten twój transceiver też powinien działać poprawnie.
  • Poziom 35  
    z forum? Chodzi ci o technical support czy oni maja jakies prawdziwe FORUM?....

    Ja akurat zrozumiałem opis z manuala, ale tylko nie czaje czy mozna sobie DOWOLNIE ustalać ile TQ ma przypadać na dany segment bittime?...

    Mnie sie wydaje ze tak....

    Inna kwestia: jak napisalem w pierwszym poscie: na któtkim kabli chodzi dosyc szybko na długim juz nie...

    Czy składowe bittime maja na to wplyw?

    Ja juz zupelnie nic nie czaje...
  • Poziom 23  
    Hej

    Czy mają forum ? Ooooo i to jakie :)
    http://forum.microchip.com/
    wejdz do sekcji CAN :)

    Co do czasów to już nie pamiętam i tak jak pisałem nie mogłem za bardzo tego zrozumieć.
  • Poziom 35  
    No i przetestowalem - nie działa. No nie robi tego i za zadną cene nie chce zacząć....

    Teraz akurat ten przerzut 2,8us daje sie we znaki tak jak napisalem w pierwszym poście. LIPA.

    Piti____:
    Jaki uzyles kabel, jakie sciezki na plytce, wogole CO władowałeś w tor CAN?....

    Dodano po 2 [minuty]:

    btw: NIKT W NECIE nie raczył opisać czy miał kiedykolwiek podobne zjawiska co ja je mam, znaczy POTENCJALNIE to nigdy nie występuje. Dziwne ze akurat u mnie musi :/

    najgorsze jest to ze nawet nie wiem co zrobilem zle...Moze CAN _nie_ bedzie chodzić na wyzszej bitrate przy 3v3?...
  • Poziom 13  
    A do transceivera pomiędzy Vcc i GND dałeś kondensatory: ceramiczny 100nF i elektrolit ok 47uF? Może to jest przyczyną

    Dodano po 4 [minuty]:

    A jeśli chodzi o TQ to aby poprawnie je dobrać trzeba przeprowadzić skomplikowane obliczenia. Z tego co wiem to np. datasheet z AT90CAN128 na stronie 267 ma tabelkę już z odpowiednio obliczonymi TQ dla danych częstotliwości taktowania i prędkości przesyłu, wiec będziesz mógł z nich skorzystać.
  • Poziom 35  
    przy samym transceiverze (pod nim) jest kond 100nF, ale nic wiecej. Na obu nodach. A tam ma byc tez 47uF?...
  • Poziom 13  
    Cytat:

    Inna kwestia: jak napisalem w pierwszym poscie: na któtkim kabli chodzi dosyc szybko na długim juz nie...


    Wartość terminatorów na końcach linii CAN-Low oraz CAN-High zależy od jej długości.
    Np. 0-40m
    Przewód magistrali: rezystancja 70m'Ohm'/m
    przekrój 0,25-0,34mm^2
    Wartość terminatora: 124 'Ohm'
    Max. szybkość transmisji: 1Mbs przy 40m

    Dodano po 3 [minuty]:

    Cytat:

    przy samym transceiverze (pod nim) jest kond 100nF, ale nic wiecej. Na obu nodach. A tam ma byc tez 47uF?...

    Co prawda mam inny transceiver, ale może w tym kondensatorze tkwi problem. W ATA6660 producent zaleca stosowanie dodatkowego kondensatora elektrolitycznego.
  • Poziom 35  
    ja mam kabelki albo UTP (lanowy) chyba 0.14mm^2, albo kabel LIY-Y, tez 0.14mm^2 <--- jakie beda wartosci terminatorów? ja uzywam krótkich kabelków (do 2-3m) w takiej topologii:

    master+terminator<------>slave<---->slave<---->slave<---terminator

    tak moze byc?
  • Poziom 13  
    Hmmm wydaje mi się, że te kabelki na tak krótkiej odległości są odpowiednie. Terminatory na końcach linii najlepiej zrobić tak: 62 Ohm + 62 Ohm, a pomiędzy nimi kondensator ok 100nF (może być mniejszy - 10nF) z drugiej strony do masy. Dodatkowo w każdym slave tak jak wyżej tylko zamiast oporników po 62 Ohmy dajesz po 1,3kOhm. Eliminuje to zakłócenia i sprawia, że magistrala CAN jest lepiej "odizolowana".
  • Poziom 23  
    Tutaj mozesz znalezc schemat mojego układu (w protelu).
    https://www.elektroda.pl/rtvforum/viewtopic.php?t=869714

    Płytkę połączyłem z komputerem zwykłą skrętką, miała długość około 2m. Spróbuj inny transceiver, możliwe że to opóźnienie jest normalne dla CANa i problem jest gdzie indziej.

    Mój układ nie miał nawet przy transceiverze kondensatora 100nF. Był 120om terminator, Rs zwarte do masy Rref wisi w powietrzu.
  • Poziom 12  
    Miałem problemy z komunikacją przy 500kbit - pojawiało sie wiele błedów magistrali - pomogło przewinięcie raz kabelków z magistrali przez ferryta - przewody mam "zwykłe" - 3xLgY0,5 długie 4m. Transceivery- ATA6660, Rs mam podłączone przez 47k do masy
  • Poziom 33  
    A ten transceiver SN65HVD230 jest do pracy z szybkim canem?
    Może potrzebne mu rezystory podciągające do +Vcc na Rx, Tx?
    (nie chce mi się szukać noty katalogowej, jak pytasz o to mógłbyś dać link).
    Pzdr. N.
  • Poziom 35  
    tak, on jest dostosowany do pracy z canem do 1mbit. Tak wynika z datasheeta. ATA6660 - gdzie kupić? Podobno one sa dobre [moze tansze] i tez pracują na 3v3. sn65HVD230/231 kosztuja po dychu albo troche ponad - przydalyby sie tansze.

    W chwili obecnej ten can niby chodzi normalnie - przy 100kbit nie ma problemów - również poprawiłem płytke, sciezki miedzy kontrolerem can (w procku) a transceiverem skróciłem do 2mm, płytka zalana poligonami masy - nieco lepiej to wszystko chodzi.

    Ale i tak chce sie dowiedzieć jak zapanować nad canem w 100%...

    Link do datasheeta transceivera tutaj
  • Poziom 12  
    ATA6660 są nawet tanie, można je kupić w sklepie Seguro. Stosuje je od wielu lat i w porównaniu z PCA82C250 (NXP) sa o wiele mniej niezawodne
  • Poziom 35  
    są MNIEJ niezawodne tzn częsciej sie psują? Czegos nie czaje :]

    z NXP to ja próbowałem uzyc TJA1050 ktore sa na 5v ale z tej technologii trzabyło zrezygnować...
  • Poziom 12  
    Poprawiam sformułowanie - mniej zawodne - bardziej odporne na przypadkowe podanie wysokiego napięcia na CAN, bardziej odporne na zakłócenia, no i pracują już od 2,7V