Skocz do zawartości

Sterownik na ATXMega128A3U z Ethernetem W5100


Pomocna odpowiedź

Napisano (edytowany)

Tym razem podzielę się jednym ze swoich starszych projektów. Płytka powstała ładnych kilka lat temu, kiedy eksperymentowałem z podłączaniem swoich projektów do Ethernetu. Większość moich projektów korzystała wtedy z mikrokontrolerów Atmega oraz sterownika ENC28J60, co niestety dawało bardzo ograniczone możliwości - niewielkie zasoby MCU pozwalały na użycie jedynie mocno okrojonych implementacji stosu TCP/IP, pozostawiając bardzo mało miejsca na kod aplikacji. Do tego układ ENC pracował jedynie w trybie 10 Mbps. Szukałem jakiegoś lepszego rozwiązania, a w tamtym momencie nie czułem się jeszcze na tyle pewnie, żeby przerzucać się na 32bitowe układy z wbudowanym kontrolerem FastEthernet (które w dodatku były wtedy dość drogie).

w3.thumb.jpg.e3fd80c556fed25d08df11b23dd6cbf4.jpgw2.thumb.jpg.caa0ba65653aff2c89cbf405d14c38fa.jpg

Postawiłem na rozwiązanie kompromisowe, używając układu Wiznet W5100 (stosowanego m.in. w Arduino Ethernet Shield). Pierwszym podejściem była płytka z tym układem oraz Atmegą 644, którą już wcześniej opisywałem na forum. No cóż, tamta konstrukcja wyszła mi średnio, głównie dlatego, że użyłem jednostronnej płytki, przy projekcie której popełniłem kilka błędów. Drugie podejście było już trochę lepsze - tym razem zastosowałem mikrokontroler ATXMega128A3U, a użycie dwustronnej płytki pozwoliło znacznie zmniejszyć jej rozmiar. Płytka otrzymała także gniazdo karty microSD.

W tamtym czasie użycie układu XMega wydawało się być potężnym przeskokiem technologicznym. Nie dosyć, że układ był szybszy, miał więcej RAM-u i flasha, to jeszcze oferował sprzętową obsługę USB (device). W dodatku oddelegowanie zadań związanych z obsługą stosu na W5100 pozostawiało mnóstwo miejsca na kod własnej aplikacji. Dzisiaj oczywiście nie wygląda to już tak różowo. W porównaniu z najprostszym nawet STM32, ESP32 czy RP2040 układ posiada bardzo ograniczone parametry.

w4.thumb.jpg.8b1e8c530ea551001ebede211f945b56.jpgw1.thumb.jpg.5851b513787ef62641e2b59d4336acaa.jpg

Niemniej ostatnio przypomniałem sobie o tej płytce. Szukając jakiegoś modułu, którego mógłbym użyć w projekcie z pogranicza automatyki domowej pomyślałem, że może dobrze byłoby zajrzeć do pudełka ze starszymi, niewykorzystanymi konstrukcjami. Postanowiłem dać jej szansę.

Dostosowanie starego kodu źródłowego do nowych realiów wymagało trochę pracy. Oryginalna wersja powstała jeszcze w czasach AVR Studio na Windowsa, zanim Atmel Został przejęty przez Microchipa. Same sterowniki do W5100 też nie były ani specjalnie dopracowane, ani uniwersalne. Najprawdopodobniej pożyczyłem je z jakiegoś prostego przykładu serwera HTTP na AVR z kontrolerem Wiznet. Na szczęście udało mi się znaleźć repozytorium ze współczesnymi driverami do układów tej firmy. Bez większego problemu udało mi się je przeportować pod swoją platformę. Teraz próbuję na tym jeszcze uruchomić na tym bibliotekę WolfMQTT chociaż muszę przyznać, że idzie trochę powoli - lata korzystania z FreeRTOS-a na nowoczesnych mikrokontrolerach trochę mnie rozleniwiły. W dalszej kolejności będę jeszcze musiał przeportować sterownik USB (zwłaszcza CDC) bo oryginalnie w AVR Studio funkcjonalność tę można było wyklikać z konfiguratora, który dodawał i konfigurował odpowiednią bibliotekę dla XMegi.

Edytowano przez atlantis86
  • Lubię! 1

Podoba Ci się ten projekt? Zostaw pozytywny komentarz i daj znać autorowi, że zbudował coś fajnego!

Masz uwagi? Napisz kulturalnie co warto zmienić. Doceń pracę autora nad konstrukcją oraz opisem.

Uwielbiam takie projekty. Płytka, która niby wygląda jak wyrób amatorski, jednocześnie pokazuje, że projektowała ją osoba która nie jest typowym amatorem nieznającym się na rzeczy. Szacuneczek z mojej strony!

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...