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

Szybki przesył danych z użyciem uC na USB

kamil7165 31 Sie 2013 19:53 1494 2
  • #1 31 Sie 2013 19:53
    kamil7165
    Poziom 11  

    Witam. Zastanawiam się nad realizacją pewnego urządzenia, którego część miałaby za zadanie komunikację z PC-tem przy pomocy USB. W zasadzie najprościej byłoby użyć jakiegoś AVR i napisać program, który umożliwiałby komunikację przez USB. Niestety, pojawiają się komplikacje. Dane powinny być przesyłane z USB z szybkością min. 100 Mb/s i nie bardzo wiem jak sobie z tym poradzić.
    Może coś więcej na temat urządzenia: Ma ono służyć do wysyłania danych do i z komputera. Prosty program będzie wysyłał wskazany plik przez port USB, a samo urządzenie będzie się komunikowało z identycznym, które z kolei będzie te dane przekazywało innemu komputerowi. Komunikacja pomiędzy tymi urządzeniami to już kwestia drugorzędna, z którą myślę, że dam sobie radę. Istotne jest jedynie, by to uC po odebraniu pakietu danych od PC-ta wystawił przesłane dane na swoje porty, z których będzie korzystał jakiś rejestr. Niestety, w tej chwili jestem mocno na bakier z AVR i nie potrafię ocenić, czy to zadanie jest wykonalne na jakiejś kości tej firmy. Czy ktoś byłby w stanie ocenić czy jest takie coś wykonalne przy użyciu jakiegokolwiek układu ze stajni firmy Atmel, czy może powinienem się zainteresować układami ARM? Jeżeli będzie trzeba, to przyłożę się do nauki programowania ARM'ów, ale najpierw chciałbym wysłuchać sugestii bardziej wtajemniczonych. Z góry dziękuję.
    Pozdrawiam

    0 2
  • #2 31 Sie 2013 20:09
    190175
    Użytkownik usunął konto  
  • #3 31 Sie 2013 20:41
    __Grzegorz__
    Poziom 27  

    Mam za sobą projekty na SAM3U4C Atmela z HighSpeed USB na pokładzie.

    Przepustowość szyny masz 60MB/s, po odjęciu narzutu protokołu USB, w trybie bulk, w idealnym przypadku do osiągnięcia jest ok 52MB/s (teoretycznie).

    W praktyce, podczas testów, udało się uzyskać transfery ponad 37MB/s (~300Mbit/s).
    Przy założeniach:
    - SAM3U4C pracował na 96MHz,
    - nie robił NIC poza przesyłaniem danych z RAM do określonego endpointa,
    - procedury obsługi USB umieszczone zostały w RAM, aby działało to szybciej,
    - od strony PC dane odbierała aplikacja napisana w oparciu o LibUSB 0.1 (pod Windows).

    Przy docelowym ciągłym transferze rzędu 4MB/s procesor robi jeszcze wieeele innych rzeczy i się spokojnie wyrabia...

    0