Skocz do zawartości

[Programowanie] Tani ARM - LPC1114


Elvis

Pomocna odpowiedź

A odbiegając od kitu, jeśli chcę użyć programatora którego mam Usbasp, bo z dokumentacji wynika że mogą być programowane przez ISP. To jakiego wysyłacza użyć i pod które piny podpiąć, bo ma więcej zestawów SPI 0 i 1?

Link do komentarza
Share on other sites

SPI to nie to samo co ISP. O ile wiem, nie można LPC111x programować za pomocą SPI.

ISP to skrót od In-System Programming. Czyli programowanie za pomocą sofware-u.

Polega to na tym, że bootloader (który jest programem) programuje pamięć flash.

Natomiast do LPC111x wystarczy konwerter RS-232<->UART, nic więcej do programowania nie jest niezbędne.

Link do komentarza
Share on other sites

Cytując zdanie z pierwszej strony dokumentacji http://www.kamami.pl/dl/lpc1111.lpc1112.lpc1113.lpc1114.pdf

"In-System Programming (ISP) and In-Application Programming (IAP) via on-chip

bootloader software."

następnie patrząc na Fig1. (str.4) widzimy 2 zestawy SPI0 i SPI1, które mają piny nazwane identycznie jak programator ISP.

Edit: z tego co ja wiem SPI to jest protokół, a ISP system wgrywania programu, który bazuje na protokole SPI. Można dojść do wniosku że powinno się wykorzystać SPI0 do tego celu, bo tylko w obudowie LQFP48 i PLCC44 występuje SPI1. A wcześniej analizowałem LPC17xx gdzie jest SPI0, SSPI0 i SSPI1.

EDIT2:

Cytując zestaw który promujesz:

"Zestaw uruchomieniowy z mikrokontrolerem LPC1114 i programatorem ISP (USB)

ZL32ARM z mikrokontrolerem LPC1114 (rdzeń Cotrex-M0) dzięki wbudowanemu programatorowi ISP jest kompletnym zestawem uruchomieniowym.

Podstawowe właściwości zestawu:

* mikrokontroler LPC1114FBD48/301 z rdzeniem Cortex-M0 (32 kB Flash, 8 kB RAM, obudowa LQFP48)

* rezonator kwarcowy 12 MHz

* wbudowany programator USB dla układów LPC1000

* możliwość odłamania programatora i wykorzystania go z innymi zestawami ewaluacyjnymi

* dwie diody LED

* 5-pozycyjny joystick

* potencjometr dołączony do przetwornika A/C wbudowanego w mikrokontroler

* przycisk reset

* złącza I2C i SPI zgodne ze standardem Kamami do dołączenia dodatkowych modułów

* linie I/O mikrokontrolera wyprowadzone na złącza szpilkowe

* zasilanie z portu USB

"

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

O ile wiem, nie ma możliwości wgrywania programu przez SPI. Tak jest w AVR.

Natomiast można przez UART, czasem nawet przez CAN i oczywiście SWD.

A co do dokumentacji, to więcej jest w User's Manual-u: http://ics.nxp.com/support/documents/microcontrollers/pdf/user.manual.lpc11xx.lpc11cxx.pdf

W okolicach strony 275 jest dokładnie wszystko opisane.

Link do komentarza
Share on other sites

Ale ISP różnych uC się różnią. Np. w ATmedze 128 programuje się bodajże poprzez piny od UARTa + SCK, ale programator ISP od ARMA nie zadziała.

Z prockami jest tak, że dostaje się to za co się zapłaciło. Jak porównywałem parametry tanich ARMów... są słabe. Najciekawszym tanim jest LPC2103, bo ma więcej pamięci od wszystkich tańszych lub zbliżonych, oraz ma dużo szybsze taktowanie (STM32F100 mają do 25MHz-45MIPS), lub są po prostu niedostępne. LPC111x maja moc obliczeniową podobną (nadrabiają MHz za pomocą instrukcji/takt), ale są an razie trudno dostępne, więc spodziewam się, że jak się pojawią w więskzej ilości to ceny LPC21xx spadną.

edit:

pomijając już to, że same komendy (i reszta protokołu) będą się różnić pomiędzy rodzinami. Tak samo przez ISP nie zaprogramujesz Xmegi.

Link do komentarza
Share on other sites

LPC21xx to już nieco stara rodzina - rdzeń ARM7TDMI.

Natomiast nowe to niewątpliwie Cortex. Odpowiednio Cortex-M3 - LPC17xx i Cortex-M0 - LPC11xx.

Jest duża szansa, że ceny M0 będą spadać, więc mogą poważnie zagrozić 8-bitowcom.

Oczywiście M0 mają być słabsze niż M3. Ale w porównaniu z małym AVR mają się czym pochwalić.

[ Dodano: 13-11-2010, 22:05 ]

Natomiast LPC2103 nie polecam z jednej przyczyny - stare LPC wymagały 2 napięć zasilających. Więc trzeba dać 3.3V i 1.8V. W nowszych już jest wbudowana przetwornica.

Link do komentarza
Share on other sites

Ciii, magisterkę robię na nim 😉 po załataniu problemów z SS oraz pinami od I2C działa jak żyleta 😉 Chociaż te 1.8V jest upierdliwe i podbija koszt o 1zł + konieczność szukania sklepu ze stabilizatorem.

Mnie zastanawia jedna rzecz: 95% osób AVRy programuje zwykłym programatorem, a nie JTAGiem. Natomiast do ARMów prawie wszyscy wolą JTAGi, aż uwierzyłem, że inaczej się nie da (szczerze to zanim zaczął się kurs na diodzie byłem o tym święcie przekonany) . To jak to właściwie jest? Jak programować poszczególne szybkie mikrokontrolery, ale _tanio_, bez kupowania potwornie drogich JTAGów? Przecież dodanie JTAGa (szczególnie w ARMach) powoduje ogromne komplikacje na płytce. Szczególnie, że gniazdo jest bardzo duże z niewiadomych powodów, starczyłaby połowę mniejsza ilość pinów. W ARM7TDMI już wiem - P0.14 + RST + UART. W Cortexach cos chodzi o nóżki boot, ale nie mam zielonego pojęcia co i jak - i chętnie bym się dowiedział. Tak samo dzisiaj się dowiedziałem (chyba od TIMONka, albo od nesa), że w Xmegach też można programować bez JTAGa - i też chętnie bym się dowiedział jak. Rozumiem, że w droższych uC i skomplikowanych aplikacjach JTAG jest bardzo przydatny, ale kupowanie JTAGa za >200zł do uC za <10zł jest głupie (do tych nieco droższych też).

Mam również jeszcze pytanie dotyczące LPC2103 - chciałem spróbować w keilu - w darmowej wersji akurat limit jest taki ile wynosi rozmiar pamięci uC. Jednakże nie rozumie w C komendy assemblera (funkcja void timer0_init(void) z kursu) oraz nie potrafi zaprogramować. Narzędzie jest ciekawe chociażby ze względu na fajny debugger-symulator.

Link do komentarza
Share on other sites

czyli wystarczy że podłącze jakiegoś(dowolnego?) cortexa pod ft232rl i mogę przez bootloadera go programować? Mógłby ktoś z was dołączyć jakiś bazowy schemat? 🙂

Bardzo fajny art!

Link do komentarza
Share on other sites

Najprościej jest wykorzystać programator jak w zestawie ZL32ARM: http://www.kamami.pl/dl/zl32arm.pdf

W dokumentacji jest schemat, można samemu wykonać.

Warto dodać sterowanie resetem i uruchamianiem bootloadera (P0.1) - inaczej trzeba ręcznie sterować pinami.

Można jeszcze taniej zrobić przejściówkę RS-232 <->UART. Schematy są na stronach Kamami - trzeba zobaczyć inne zestawy, np. ZL1ARM.

Jak chodzi o interfejsy, to nowe cortex-y odchodzą od JTAG-a, zamiast nich używany jest SWD. Nie wiem jak jest z programatorami, ale oryginalny Keil-a jest baaaardzo drogi.

Główny powód używania JTAG-a, czy SWD to możliwość debugowania programów.

Jeśli nie chcemy debugować, to najlepiej programować przez UART - czyli przejściówkę RS-232 lub USB.

Jak chodzi o podłączenie - SWD wymaga tylko 2 linii.

Link do komentarza
Share on other sites

właśnie, jak dodać włączanie bootloadera? Na schemacie widzę podciągnięcie pod zasilanie rezystorem. Jakbym dał np zworkę do masy/vcc to wtedy wybierając masę nie wchodziłby w tryb bootloadera?

Link do komentarza
Share on other sites

Działanie bootloadera opisałem tutaj: https://www.forbot.pl/forum/topics20/kurs-programowania-arm-cz11-rs-232-cd-2-bootloader-vt4392.htm

W przypadku LPC111x jest tak samo - zmienia się tylko pin P0.1 zamiast P0.14.

Pull-up jest po to żeby bootloader się nie uruchamiał. Jeśli P0.1 zewrzemy do masy (np. zworką) to bootloader wejdzie w tryb programowania (po resecie).

Jeśli wykonamy wszystko wg. schematu ZL32ARM - reset i sterowanie P0.1 będzie automatyczne.

[ Dodano: 14-11-2010, 10:20 ]

OldSkull w Keil-u trzeba zmienić deklarację funkcje przerwania:

void timer0(void) __irq {
} 

A jak chodzi o asemblera, to najłatwiej wydzielić kod do nowej funkcji:

volatile __asm void enable_irq() {
	STMDB	SP!, {R0}	
	MRS	R0, CPSR	
    ...
}
Link do komentarza
Share on other sites

UWAGA! W dokumentacji do układu jest błąd. Na stronie 8 dokumentacji, gdzie pisze o podłączeniu ledów, napisali, że ledy są podłącznie do pinów PIO_5 i PIO_6, a w rzeczywistości są podłączone do pinów PIO_7 i PIO_8, co jest poprawnie napisane na schemacie. Znaleźliśmy ten błąd z Bobbim po moich długich męczarniach nad zmianą diody która miga.

Link do komentarza
Share on other sites

Pojawił się problem ze stroną Flash Magic - nie można tego ściągnąć, patrzałem na innych serwerach, ale nie mogę znaleźć. Może ktoś polecić coś innego tudzież ma na dysku instalkę flashmagica?

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.