logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Przesyłanie danych 500ksps z uC do PC: USB, Ethernet, FireWire?

xdrt 21 Lis 2007 00:01 3064 16
  • #1 4503667
    xdrt
    Poziom 12  
    Posty: 19
    Ocena: 3
    Witam
    Muszę przesłać duży strumień danych z przetwornika A/C do PC.
    Orientacyjnie będzie to: 500ksps * 8bit ~ 500kBps ~ 4Mbps.
    Od dłuższego czasu analizuję możliwe rozwiązania:
    - rs232 - nie widziałem układu 4Mbps
    - lpt - też raczej za wolne, czy może ktoś testował maksymalny transfer?
    - firewire - nie mam pojęcia jak to ugryźć (nie znalazłem przykładu przez google)
    - usb - przejściówka usb <=> rs232 będzie za wolna, czy istnieje w ogóle coś takiego jak usb <=> parallel 8bit?
    - ethernet - czytałem o module wiznet 7010a
    - scsi - stare fast scsi ma przepustowość 10MBps, nie znalazłem w sieci przykładu
    - karta pci z przetwornikiem a/c - raczej nie pójdę na łatwiznę, a już na pewno nie zapłacę 2kpln za coś działającego tylko pod m$.

    Najchętniej wykorzystałbym do tego mikrokontroler AVR.
    Na obecną chwilę realne wydają mnie się 2 rozwiązania:
    - ethernet w postaci modułu wiznet, ale do transmisji równoległej potrzeba dużo pinów uC, a szeregowa w przypadku AVR może być za wolna
    - scsi - znalazłem na allegro kartę pcmcia fast scsi za 19,90 adaptec 1460b , magistrala danych 8bit, ale protokół scsi jest "troszkę" skomplikowany, z tego co przeczytałem do tej pory jest szansa, ale nie mogę znaleźć w sieci żadnego projektu typu uC+scsi - niewykonalne? istnieje tańsze rozwiązanie?

    Niestety 500ksps i 8bit to minimalne wartości do zaakceptowania, także nie ma jak zmniejszyć strumienia :(
    Bardzo proszę o podpowiedź!
  • Pomocny post
    #2 4503828
    piotr_go
    Konstruktor DIY elektronika
    Posty: 2904
    Pomógł: 94
    Ocena: 3337
    rozwiązanie nr.1 - FT245xx czyli "USB to parallel FIFO interface", w pdfie podają że wyciąga 1MBps
    http://www.ftdichip.com/Products/FT245R.htm
    http://www.ftdichip.com/Products/FT245BM.htm
    rozwiązanie nr.2 - jakiś ARM z wbudowanym USB
  • #3 4503905
    arturt134
    Poziom 27  
    Posty: 792
    Pomógł: 76
    Ocena: 24
    Albo USB, albo ethernet.
  • #5 4504222
    Jdsoul
    Poziom 23  
    Posty: 501
    Pomógł: 47
    Ocena: 10
    OK

    xdrt
    Cytat:
    Muszę przesłać duży strumień danych z przetwornika A/C do PC.
    Orientacyjnie będzie to: 500ksps * 8bit ~ 500kBps ~ 4Mbps.


    I co dalej:

    Samo przesłanie danych to jedno, druga sprawa to ich obsługa.
    Masz zamiar przesyłać strumień, czy tworzyć plik, w jaki sposób masz zamiar zbudować aplikację po stronie PC :), jak masz zamiar sterować przepływem danych i co ma być efektem akwizycji - wykres, średnia, rejestracja ciągła ??

    Może się okazać, że docelowe wymagania aplikacji wymuszą kontrolę błędów, obsługę ciągłości przesyłu danych lub odwrotnie jej pakietowanie.

    W skrajnym przpadku może się okazać, że najlepiej będzie zasiąść na magistrali PCI na oddzielnym kontrolerze, np. jak w karcie audio lub w karcie graberującej Video.

    Inny problem, który ci się pojawi to obróbka danych - wiesz wbrew pozorom już po kilku sekundach pracy takiego zestawu zaczynają się gromadzić spore ilości danych.

    Jeśli chciałbyś zastosować Ethernet to masz opóźnienia i przesunięcia czasowe związane z obsługą protokołu po obu stronach, więc musisz skompensować szybkością obsługi łącza i buforowaniem nieciągłość dopływu danych.
    Wbrew pozorom całkiem podobnie jest z USB i FireWire, sporo miejsca zabiera warstwa fizyczna i transportowa. Sama wydajność transmisji jest obciążona poprawnością działania kanału komunikacyjnego i jeszcze jest właściwie regulowana.

    Ostatnia sprawa przy takich zastosowaniach to "System Operacyjny" i nadanie twojemu procesowi wyłączności dostępu do zasobów, co przy szybkiej akwizycji danych jest bardzo cenne, po co ci problemy z innymi urządzeniami jeśli chcesz "ssać dane"

    Więc ubierz swoją analizę w pozostałe fakty i zacznijmy zastanawianie się nad aplikacją od początku. :)
    Pzdr

    Dodano po 40 [minuty]:

    Co zaś do działania tylko po $M to nie masz racji sporo kart ma obsługę w Linuchu
  • #6 4504603
    xdrt
    Poziom 12  
    Posty: 19
    Ocena: 3
    Dziękuje za wszystkie odpowiedzi!
    Bardzo zaciekawił mnie ft245 - spadł mi z nieba po prostu :)
    Znalazłem gotowy moduł propox mmusb245 w cenie ~40pln. Taniej raczej już nie znajdę, także chyba się na niego zdecyduję. Zabawę rozpocznę od dokompilowania modułu i próby odbioru danych - strasznie mnie ciekawi, jaki transfer osiągnie. Do tej pory na usb bawiłem się jedynie przejściówkami rs232 z allegro i transfery były niestety żenujące, o innych niespodziankach nawet nie wspominając. Co do kart pomiarowych/akwizycji pci (>=500ksps) to albo nie trafiłem na odpowiednią stronkę, albo nie ma kart w cenie kilkuset pln ze sterownikami pod linuksa. Jeśli ktoś ma pełniejsze informacje na temat gotowych kart pci to bardzo proszę o wypowiedź z linkiem, bo być może cała ta zabawa z usb nie ma uzasadnienia ekonomicznego :)
  • #7 4504949
    mj_2000
    Poziom 15  
    Posty: 155
    Pomógł: 17
    Ocena: 7
    Nie chce nikomu robić antyreklamy, ale firma Propox to nieporozumienie... Jak teraz zamówisz ten moduł, to może dostaniesz go na początku przyszłego roku... ewentualnie, przy odrobinie szczęścia - pod choinkę będzie.
    Ten układzik wymaga dosłownie kilku elementów zewnętrznych i można go kupić za około 15zł chociażby w tme.
  • #8 4504987
    xdrt
    Poziom 12  
    Posty: 19
    Ocena: 3
    lol dzięki za ostrzeżenie! No to rzeczywiście nieładnie się zachowują :(
    Akurat teraz to mnie się specjalnie nie spieszy. Rzeczywiście na samym początku znalazłem tego scalaka za 15zł, ale troszkę przestraszyłem się obudowy :) Nie no żartuję oczywiście, w takim razie dolutuję kabelki i złożę wszystko na płytce prototypowej.
  • #9 4505027
    bis
    Poziom 21  
    Posty: 274
    Pomógł: 54
    Ocena: 3
    Zanim wywalisz kasę to poczytaj sobie o trybach EPP i ECP portu drukarki
    http://www.lvr.com/parport.htm
    prawie bez wydatku uzyskasz to co potrzebujesz a i z uruchomieniem i oprogramowaniem będzie dużo prościej
    bis
  • #10 4505123
    xdrt
    Poziom 12  
    Posty: 19
    Ocena: 3
    EPP - 900KB-1.2MB/sec both reverse and forward mode - wow!
    Szczerze mówiąc, to już się napaliłem na usb i tak łatwo raczej mi nie przejdzie :) A dlaczego? Układ na usb może współpracować także z laptopem, w przypadku lpt potrzebna jest przejściówka - dochodzimy znowu do problemu przejściówki :/ Jeśli ft245 okaże się lipą pod linuksem to teraz mam alternatywę. Dzięki za linka!
  • #11 4505139
    piotr_go
    Konstruktor DIY elektronika
    Posty: 2904
    Pomógł: 94
    Ocena: 3337
    ft245 działa pod linuksem, z jaką prędkością to nie wiem
  • #12 4508577
    retsef
    Poziom 14  
    Posty: 151
    Pomógł: 1
    Ocena: 13
    Wydaje mi sie że usb bylo by najprostszym rozwiazaniem. Eth może bardziej wyrafinowane i nawet szybsze, ale realizacja bardziej skomplikowana.
  • #13 4510706
    xdrt
    Poziom 12  
    Posty: 19
    Ocena: 3
    Chyba masz rację, nawet przy wykorzystaniu modułu 7010 wiznetu obsługa od strony mikrokontrolera będzie trudniejsza niż przy ft245. Z drugiej strony kabla ethernet ma jednak same zalety, tzn. banalna obsługa socketów w C, lub jeszcze banalniejsza przy wykorzystaniu Qt. Jeśli chodzi o przenośność to ethernet+Qt byłoby chyba najlepszym rozwiązaniem. Raz napisany kod pójdzie pod linuksem, m$ i Mac OS'em. No i długość kabla, 100m naprzeciw kilku dla usb :/ Mnie na przenośności ani na długości kabla nie zależy, także stawiam na razie na tańsze rozwiązanie, czyli ft245 za 15pln zamiast 7010 za 140pln.
  • #14 4534807
    xdrt
    Poziom 12  
    Posty: 19
    Ocena: 3
    W końcu się doczekałem na paczkę z kamami.pl (btc?). Kolesie z kamami "lekko" przesadzili z pudełkiem, do którego weszły by ze cztery książki... Tak się patrzę na te układy i jednak nie wiem, jak przylutować druty do elektrod :( Chyba będę musiał zrobić przelotkę na DIP. AVR'ek wygląda przy tym jak godzilla :)
    Przesyłanie danych 500ksps z uC do PC: USB, Ethernet, FireWire?Przesyłanie danych 500ksps z uC do PC: USB, Ethernet, FireWire?
  • #15 4748224
    Jdsoul
    Poziom 23  
    Posty: 501
    Pomógł: 47
    Ocena: 10
    No dobrze masz już FTDI245 i AVR-ka.
    I co dalej :)
    Praca z oknem terminala, czy jakaś aplikacja korzystająca z USB :)

    uC ma dość niewielkie zasoby, więc może kolejna karta akwizycji danych, jakiś dekoder etc.

    Daj znać co to będzie za projekcik.
  • #16 4750232
    adamusx
    Poziom 27  
    Posty: 977
    Pomógł: 94
    Ocena: 28
    FT232RL ma możliwosc pracy z predkoscia maksymalna 3Mbps. Wystarczy użyc driverow D2XX dostarczanych przez FTDI i w aplikacji pod Borlandem/ Visual C++(są gotowe przyklady korzystajace z tych bibliotek) odpowiednio obrabiac dane. ATmega tez da rade z 2,5Mbps po UARCie. Pytanie tylko czy taka porcje danych chcesz przesyłać co sekundę ?
  • #17 4751849
    Fyszo
    Poziom 37  
    Posty: 3987
    Pomógł: 223
    Ocena: 115
    Marnie widzę te transfery. Producenci czesto idealizują swoje układy (teoretyczny wynik). Druga sprawa poruszona już przez Jdsoul, to czy system nadąży obrabiać te dane. Trzecia sprawa do zasób czasu który musi istnieć bo wszystko się zapcha. Czyli dla 4Mb/s musisz dysponować łaczem szybszym np. 5Mb/s a nie wolniejszym. Są kontrolery dedykowane do USB. W PC możesz użyć również PCMCIA lub w starych ISA. Nawet IDE na upartego. Ale Jeśli załatwisz kontroler z wbudowanym USB to nie trzeba się bawić. No i druga sprawa że od strony programu nie masz kontroli nad sprzętem w przypadku ISA,PCMCIA, lub IDE. Musiałbyś to robić w trybie rzeczywistym i bezpośrednio na portach.

Podsumowanie tematu

✨ Tematem dyskusji jest przesyłanie strumienia danych o przepływności około 500ksps przy 8 bitach (około 4Mbps) z mikrokontrolera do komputera PC. Rozważane technologie to m.in. RS232 (zbyt wolne), port LPT (potencjalnie możliwy tryb EPP/ECP z transferem do 1,2MB/s), FireWire (brak przykładów i doświadczeń), USB (standardowe konwertery USB-RS232 zbyt wolne, ale układy FT245xx oferują interfejs USB do równoległego FIFO z prędkością do 1MB/s), Ethernet (moduł Wiznet W7010a, jednak wymaga więcej pinów i bardziej skomplikowanej obsługi), SCSI (stary Fast SCSI ma przepustowość 10MB/s, ale brak przykładów), oraz karty PCI z przetwornikami A/C (drogie i często zależne od systemu Windows). Najbardziej praktycznym rozwiązaniem wydaje się układ FT245R firmy FTDI, który umożliwia prostą implementację USB do równoległego interfejsu FIFO i jest wspierany pod Linuksem. Alternatywnie rozważano tryby EPP/ECP portu drukarki jako tanią i prostą metodę transmisji danych. Dyskutowano także o problemach związanych z obsługą danych po stronie PC, koniecznością buforowania, kontroli błędów i przetwarzania dużych ilości danych. Autor zdecydował się na zakup modułu FT245 (np. propox mmusb245) i planuje testy transferu. Wskazano, że Ethernet z Qt zapewnia przenośność i dłuższy zasięg kabla, ale jest bardziej złożony w implementacji. W dyskusji pojawiły się także uwagi dotyczące dostępności i cen modułów oraz praktycznych aspektów lutowania i montażu układów.
Wygenerowane przez model językowy.
REKLAMA