-
Data: 2014-11-01 09:15:32
Temat: Re: Jak zacząć ENC28J60 i STM32F103RBT6 ?
Od: Atlantis <m...@w...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]W dniu 2014-10-30 13:05, pytajacy pisze:
> Ale chciałem podłączyć jeszcze jakiś interfejs ETHERNET i pomyślałem
> że układ z ENC28J60 będzie dobry bo łatwo podłącze do tej płytki.
W gruncie rzeczy od strony programowej potrzebujesz dwóch rzeczy, żeby
komunikować się ze światem za pomocą ENC28J60:
1) Drivera, czyli zbioru niskopoziomowych procedur, które są
odpowiedzialne za odczytywanie/zapisywanie informacji z/do rejestrów i
buforów układu za pośrednictwem magistrali SPI. Kod drivera jest rzecz
jasna specyficzny dla konkretnej rodziny procesorów (a w pewnym zakresie
także do konkretnego modelu). Musisz znaleźć driver przygotowany dla
twojego procesora, bądź też przygotować go samodzielnie, np. modyfikując
kod napisany pod jakąś inną rodzinę.
2) Stosu TCP/IP. Ta część odpowiada za przetwarzanie informacji
pobranych z lub wysyłanych do bufora ENC28J60. Kod sprawdza z jakim
typem pakietu mamy do czynienia (ARP, ICMP, TCP, UDP) i podejmuje
odpowiednie akcje - ustawia odpowiedni adres IP, odpowiada na ping, albo
udostępnia nam otrzymaną wiadomość. To samo w drugą stronę. Ta część
jest bardziej uniwersalna i mniej zależna od platformy, co nie znaczy
wcale, że z miejsca się skompiluje - być może trzeba będzie się pozbyć
elementów typowych dla określonej rodziny, jak np. PROGMEM w AVR-ach.
Generalnie masz kilka różnych stosów do wyboru, miedzy innymi:
1) Tuxgraphics.org - przygotowany pod AVR-y, ale pewnie bez problemu
będzie się dało go przeportować pod STM-y (może ktoś już to zresztą
zrobił). Gdy idzie o przesyłanie małych ilości danych, jest bardzo
prosty w obsłudze, nie zużywa dużych zasobów, dlatego też świetnie
sprawdza się na małych MCU. Te zalety mają jednak swoją cenę - cały
komunikat musi się mieścić w jednej ramce Ethernetowej, nie można też
utrzymać trwającej sesji TCP, więc nie da się na tym zrealizować np.
obsługi telnetu.
2) uIP - wciąż lekki stos, o nieco większych możliwościach. Istnieją
wersje pod różne platformy, więc nie powinno być problemów z STM-ami.
3) lwIP - cięższy stos, wymagający większych zasobów sprzętowych. Z tego
powodu nie bardzo nadaje się do stosowania z ośmiobitowymi MCU, ale
doskonale pasuje do STM32. Z tego co czytałem, to trzeba poświęcić
dłuższą chwilę na jego opanowanie. Od strony programistycznej obsługa
zbliżona do połączeń sieciowych na "dużych" komputerach.
Jest też całkiem rozbudowany i funkcjonalny stos od Mircochipa, ale on
działa tylko na PIC-ach, a licencja z tego co wiem zakazuje portowania
na inne platformy.
> Ale wyczytałem że jest jeszcze coś takiego jak W5100/W5500 - tylko
> że droższy.
W5500 jest w praktycznie tej samej cenie co ENC28J60 (mam tu na myśli
oczywiście sam układ, a nie całe moduły, bo tu faktycznie może być różnie).
Układy Wiznetu to trochę inna szkoła niż to, co opisałem powyżej. Tam
układ zajmuje się całą komunikacją, więc twój MCU nie musi dźwigać
ciężaru przetwarzania poszczególnych warstw stosu. Rejestry i bufory
wewnątrz zorganizowane są w sposób przypominający typowe sockety POSIX,
a ty jedynie musisz zapisywać i odczytywać z nich/do nich dane i
metadane. W paru miejscach trzeba też podejmować odpowiednie decyzje, w
zależności np. od statusu połączenia.
To chyba najprostszy sposób realizacji komunikacji sieciowej. Zwłaszcza,
jeśli znajdziesz dobrą i dopracowaną bibliotekę.
Oczywiście są jeszcze inne rozwiązania. Ostatnio coraz większą
popularnością cieszą się moduły WiFi, ze śmiesznie tanim ESP8266 na
czele. Dane przez Internet możesz też przesyłać za pośrednictwem modułów
GSM, np. SIM900 - dobre rozwiązanie, gdy w pobliżu nie masz żadnej
końcówki sieci lokalnej. Sam myślę o zrobieniu na tym systemu nadzoru
nad działką. ;)
Następne wpisy z tego wątku
- 01.11.14 09:59 Marek
- 01.11.14 10:11 Atlantis
- 03.11.14 19:13 Grzegorz Niemirowski
- 03.11.14 22:49 Atlantis
- 04.11.14 11:01 Bool
- 04.11.14 13:03 Marek Borowski
- 04.11.14 17:58 Atlantis
- 04.11.14 18:41 Bool
- 04.11.14 19:54 Atlantis
- 05.11.14 09:53 Bool
- 10.11.14 20:50 pawel
- 10.11.14 22:24 platformowe głupki
- 10.11.14 23:53 butek
- 11.11.14 10:58 platformowe głupki
- 11.11.14 12:14 platformowe głupki
Najnowsze wątki z tej grupy
- e-paper
- 60 mA dużo czy spoko?
- Dziwne zachowanie magistrali adresowej w 8085
- Współczesne mierniki zniekształceń nieliniowych THD audio, produkują jakieś?
- Jaki silikon lub może klej?
- Smar do video
- Litowe baterie AA Li/FeS2 a alkaliczne
- "ogrodowa linia napowietrzna"
- jaki zasilacz laboratoryjny
- jaki zasilacz laboratoryjny
- Puszka w ziemię
- T-1000 was here
- Ściąganie hasła frezem
- Koszyk okrągły, walec 3x AA, na duże paluszki R6
- Brak bolca ochronnego ładowarki oznacza pożar
Najnowsze wątki
- 2025-02-14 Zdalne załączanie grzałki bojlera elektrycznego
- 2025-02-14 Warszawa => Kierownik ds. kluczowych Klientów <=
- 2025-02-14 Częstochowa => Product Manager - Systemy infrastruktury teleinformaty
- 2025-02-14 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2025-02-14 Warszawa => Data Engineer (Tech Leader) <=
- 2025-02-14 Czy ma sens grupa news:pl.soc.polityka-prawna ? :-)
- 2025-02-14 e-paper
- 2025-02-14 Gliwice => Business Development Manager - Network and Network Security
- 2025-02-14 Warszawa => System Architect (Java background) <=
- 2025-02-14 Katowice => Senior Field Sales (system ERP) <=
- 2025-02-14 Wrocław => Specjalista ds. Sprzedaży (transport drogowy) <=
- 2025-02-14 Re: Dlaczego nie było (pełzającego) zamachu stanu? Bo minister Bodnar już "zawiesił" prokuratora Ostrowskiego
- 2025-02-14 e-paper
- 2025-02-14 Warszawa => Architekt rozwiązań (doświadczenie w obszarze Java, AWS
- 2025-02-14 Warszawa => International Freight Forwarder <=