[ETHM] - Moduł ethernetowy z procesorem LPC2378

Projekty użytkowników forum zarówno sprzętowe, jak i związane z programowaniem w dowolnym języku.
Awatar użytkownika
gaweł
Expert
Expert
Posty: 713
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

[ETHM] - Moduł ethernetowy z procesorem LPC2378

Postautor: gaweł » środa 15 maja 2019, 01:15

Moduł z prockiem LPC2378

ethm_ilu00.jpg


W ramach robienia porządków na dysku i ganiania
duchów przeszłości, natrafiłem w zakamarkach pamięci
na moduł ethernetowy z prockiem LPC2378. Jest to
bardzo wiekowa konstrukcja, pochodzi z czasów,
gdzie nie znałem innych procków z obsługą sieci (dzisiaj pewnie
zrobiłbym to inaczej, niemiej jest jak jest, takie były czasy).
Nawet poniższy tekst pochodzi sprzed kilku lathttps://www.youtube.com/watch?v=HSvaocTnazY


Poniższy moduł, będący aplikacją mikrokontrolera z rodziny ARM wraz z interfejsem umożliwiającym przyłączenie do sieci ethernet, powstał jako eksperyment z zastosowaniem elementów interfejsu sieciowego (do transmisji z prędkością 100 Mb). Generalnie może służyć do „ćwiczenia” aplikacji sieciowych z ewentualną możliwością wykorzystania go później jako gotowego elementu do zabudowy (w tym celu ma wyprowadzone możliwie dużo pinów na złącza modułu).
ethm_ilu00a.jpg
Schemat blokowy przedstawia następujący rysunek:
ethm_ilu01.png
Poszczególne elementy blokowe mają następujący schemat ideowy. Część procesorowa zawiera mikrokontroler LPC2378 wraz z niezbędnymi elementami towarzyszącymi (układ generacji sygnału reset, obwody generacji sygnału zegarowego dla procesora, interfejs do przyłączenia programatora).
ethm_ilu02.png
ethm_ilu03.png
Do budowy interfejsu ethernetowego wykorzystany jest układ obsługi warstwy fizycznej DP83848, który jest „napędzany” sygnałem zegarowym o częstotliwości 50MHz (pracuje w połączeniu z mikrokontrolerem ARM w oparciu o interfejs RMII). Sam układ DP83848 może pracować z podłączeniem MII lub RMII, jednak z racji, że procek umie tylko gadać po RMII, więc taki jest zastosowany sprzęg (odwieczny problem, by się dogadać to konieczne jest osiągnięcie konsensusu). Do komunikacji szeregowej wykorzystano UART0 (z czterech istniejących w mikrokontrolerze LPC2378).
ethm_ilu04.png
ethm_ilu05.png
Cały moduł jest zasilany ze źródła napięcia o wartości 5V (moduł zawiera w sobie stabilizator LDO o napięciu wyjściowym 3,3V niezbędnym do zasilenia wszystkich komponentów modułu).
Do powyższego schematu zaprojektowana jest płyta PCB, której rysunki są następujące.Strona TOP
ethm_ilu06.png
Strona BOTTOM
ethm_ilu07.png
Rozmieszczenie elementów
ethm_ilu08.png
ethm_ilu09.png
Rozmieszczenie istotnych elementów na płycie PCB jest następujące.
ethm_ilu10.png
W module są wyprowadzone punkty pomiarowe dla napięć 5V i 3,3V. Dodatkowo na potencjale GND (oznaczone jako GNDS) znajdują się punkty pomiarowe (do przyłączenia przykładowo oscyloskopu, woltomierza itp.).
ethm_ilu11.jpg
ethm_ilu12.jpg
Z założenia, moduł przeznaczony jest jako urządzenie, do którego mogą być przyłączone inne urządzenia poprzez RS232. Z tego powodu port szeregowy jest wyprowadzony w identyczny sposób jak w komputerach PC. Implikuje to, że do połączenia z komputerem należy użyć przewodu zakończonego złączami damskimi i przewód powinien mieć skrzyżowane linie RxD i TxD.
ethm_ilu13.jpg
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse

Awatar użytkownika
msalamon
Posty: 5
Rejestracja: poniedziałek 18 lut 2019, 20:55

Re: [ETHM] - Moduł ethernetowy z procesorem LPC2378

Postautor: msalamon » środa 15 maja 2019, 12:26

Dobra robota :)
Mój elektroniczny blog -> https://www.msalamon.pl

Awatar użytkownika
gaweł
Expert
Expert
Posty: 713
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: [ETHM] - Moduł ethernetowy z procesorem LPC2378

Postautor: gaweł » środa 15 maja 2019, 22:18

Interfejs programujący mikrokontrolery
z rodziny LPC2000 (ARM)
w trybie IAP

iapo_ilu00.jpg


W ramach wygarniania staroci z dysków i różnych pudełek,
mój własny interfejs do programowania procków z rodziny LPC200.
Rozwiązanie również jest wiekowe jak wyżej opisany moduł.
Klasyka wiecznie młodahttps://www.youtube.com/watch?v=Fnc4T26NslA

Na ostatniej fotce wyżej, do modułu ethernetowego przypięty jest
mały interfejs programujący, więc niejako w komplecie...


Mikrokontrolery ARM z rodziny LPC200 mogą być programowane1 na kilka sposobów. Jedną z najprostszych możliwości jest ładowanie kodu programu poprzez interfejs szeregowy. Uruchamiając program FLASHMAGIC przeznaczony do ładowania kodu programu do mikrokontrolerów produkowanych przez firmę NXP, poprzez prezentowany interfejs tworzony jest kanał komunikacyjny pomiędzy programem FLASHMAGIC uruchomianym w komputerze PC a ... no właśnie. Mikrokontrolery ARM mają wbudowany specjalny program (bootloader), z którym realizowana będzie komunikacja. Program ten po uruchomieniu mikrokontrolera2 testuje odpowiednią linię i ewentualnie przechodzi do nawiązania komunikacji z programem FLASHMAGIC. Testowaną linią jest sygnał zewnętrznego przerwania EINT1 (w mikrokontrolerach LPC213x jest to pin 41). Jeżeli stan tej linii odpowiada logicznemu zeru, to program bootloader próbuje nawiązać połączenie z programem ładującym poprzez kanał transmisji szeregowej UART0. Z powyższego łatwo wywnioskować, że do komunikacji niezbędne są następujące linie:
  • sygnał RESET, by program FLASHMAGIC mógł uruchomić program bootloadera w mikrokontrolerze,
  • sygnał EINT1, by program FLASHMAGIC mógł przekazać programowi bootloadera sygnał prośby o nawiązanie komunikacji,
  • sygnał TxD0 i RxD0, by programy mogły przesyłać między sobą odpowiednie informacje,
  • potencjał GND będący potencjałem odniesienia dla powyższych sygnałów.
W programie FLASHMAGIC można używać do komunikacji standardowego w komputerze PC portu szeregowego. Do transmisji i odbioru danych są używane linie danych portu COM. Do sterowania sygnałem RESET i EINT1 używane są wyjściowe (z punktu widzenia komputera PC) linie modemowe RTS i DTR. Linia RTS odpowiedzialna jest za sterowanie sygnałem EINT1 oraz linia DTR przeznaczona jest do sterowania sygnałem RESET.
Schemat w pełni autonomicznego interfejsu programującego przedstawia rysunek
iapo_ilu01.png
Odpowiadająca schematowi płytka PCB ma następujące rozmieszczenie elementów.
iapo_ilu02.png
Interfejs został opracowany w taki sposób, by można było go użyć dla dużej grupy mikrokontrolerów LPC20000. Niektóre modele mikrokontrolerów tolerują na swoich wyprowadzeniach sygnały o poziomach napięciowych odpowiadających układom logicznym zasilanych ze źródła napięcia o wartości 5V. Inne modele mikrokontrolerów dopuszczają sygnały w amplitudzie napięcia 3,3V. Do określenia standardu napięciowego służy zworka J802.
iapo_ilu03.png
Rysunki poszczególnych warstw płytki PCB są następujące:
iapo_ilu04.png
iapo_ilu05.png
Do połączenia z systemem docelowym przewidziane jest złącze P802. Czasami może okazać się przydatna funkcja RESET dla docelowego systemu (przycisk SW802).
Istotnym elementem interfejsu jest sterowanie sygnałem SELCET. Do tego służy przycisk SW801 lub zworka J801. W systemie docelowym, do współpracy z interfejsem programującym, można zaproponować kilka rozwiązań. Najbardziej funkcjonalny wariant przedstawia schemat.
iapo_ilu06.png
Koncepcja opiera się o zastosowanie multipleksera, którego zadaniem jest przyłączenie do mikrokontrolera na czas programowania sygnałów programujących i po zakończeniu programowania przełączenie ich do układów aplikacji. Samym przełączeniem steruje sygnał SELECT. W środowisku mikrokontrolera sygnał sterujący wyborem wejść (wejście A, B, C układu U102) jest wstępnie spolaryzowany do stanu logicznej jedynki co jednocześnie łączy wybrane (EINT1, RXD1 i TXD1) wyprowadzenia mikrokontrolera ze środowiskiem cyfrowym urządzenia. Podanie na to wejście sygnału logicznego zera (wymuszonego przez przycisk SW801 lub zworka J801) łączy wyprowadzenia mikrokontrolera z interfejsem programującym. Wysterowanie sygnału SELECT w interfejsie programującym może być zrealizowane na stałe (założona zworka na J801) lub tylko na czas programowania (tu pomocne może okazać się użycie SW801).
Istnieje możliwość pewnych uproszczeń układowych związanych z interfejsem programującym. Jeżeli w urządzeniu nie jest przewidywane użycie kanału transmisji szeregowej UART1 oraz przerwania zewnętrznego EINT1, można pominąć układ U102 i złącze programatora przyłączyć bezpośrednio do wyprowadzeń mikrokontrolera. Redukuje to schemat o układ U102, ale należy pamiętać, że co najmniej wejście EINT1 musi być wstępnie spolaryzowane rezystorem do stanu logicznej jedynki (gdy odłączony jest interfejs programujący, wejście EINT1 może jako nieprzyłączone do niczego mieć nieokreślony stan logiczny, co z kolei może doprowadzić program bootloader'a do niewłaściwej decyzji).
Do obsługi interfejsu programującego zalecany jest bezpłatny program FLASHMAGIC (można go pobrać ze sponsorowanej między innymi przez firmę NXP, strony internetowej http://www.esacademy.com). Instalacja programu nie zawiera żadnych “trudnych” elementów. Po uruchomieniu programu należy uszczegółowić pewne parametry:
iapo_ilu07.png
W szczególności:
  • określić port komunikacyjny; okienko: COM Port,
  • określić prędkość komunikacyjną programu FLASHMAGIC z mikrokontrolerem ARM (im większa szybkość, tym mniej czasu potrzeba na zaprogramowanie mikrokontrolera, lecz powyżej prędkości 38400 bps pojawiają się błędy); okienko Baud Rate,
  • określić model mikrokontrolera w systemie docelowym, tu użyty jest LPC2134; okienko Device,
  • częstotliwość sygnału taktującego pracą mikrokontrolera ARM wyrażoną w MHz; okienko Oscillator Freq.,
  • zaznaczyć tryb kasowania pamięci FLASH mikrokontrolera (albo cała pamięć: Erase all Flash lub tylko obszar zajmowany przez ładowany program: Erase blocks used),
  • określić plik zawierający ładowany do pamięci FLASH program (okienko Hex File),
  • można zaznaczyć opcję: Verify after programming do weryfikacji załadowanego kodu,
  • można zaznaczyć opcję: Set Code Read Prot do zablokowania możliwości odczytu zapisanego w pamięci FLASH kodu programu.
Programowanie rozpoczyna się przyciskiem Start.
iapo_ilu08.jpg
Do właściwego wysterowania sygnału RESET i EINT1, należy zaznaczyć opcje: Use DTR and RTS to control RTS and P0.14 (Options -> Advanced Options -> Hardware Config) jak pokazuje ilustracja.
iapo_ilu09.png
Programator w akcji:
iapo_ilu10.jpg
iapo_ilu11.jpg
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse

Awatar użytkownika
gaweł
Expert
Expert
Posty: 713
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: [ETHM] - Moduł ethernetowy z procesorem LPC2378

Postautor: gaweł » piątek 17 maja 2019, 13:11

Interfejs programujący mikrokontrolery
z rodziny LPC2000 (ARM)
w trybie IAP
redesign


iapn_il00.jpg


https://www.youtube.com/watch?v=Xew8SXUMxsE

Opisany wyżej interfejs programujący miał wady. Po pierwsze wymagał zewnętrznego zasilania oraz w trakcie programowania należało trzymać (palcem) naciśnięty przycisk (ten, który przełącza układ CD4053). Naturalnym jest, że z dotychczasowej eksploatacji wyciąga się wnioski, w wyniku których dokonuje się korekty. Tak też i było tym razem. Postanowiłem zasilić interfejs z urządzenia, w którym zawarty jest programowany mikrokontroler z serii LPC2000 oraz zastąpić zwykły mikroprzycisk przełącznikiem bistabilnym. Nowa odsłona interfejsu jest następująca:
iapn_il01.png
I PCB do schematu:
iapn_il02.png
iapn_il03.png
iapn_il04.png
iapn_il05.png
Interfejs w akcji:
iapn_il06.jpg
iapn_il07.jpg
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse


Wróć do „DIY”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 3 gości