Programowanie ISP mikrokontrolerów LPC2000 i AT91SAM7S
Rodzina AT91SAM7S
Inaczej rozwiązała sposób programowania mikrokontrolerów AT91SAM7S firma Atmel. Pierwotnie mikrokontrolery z tej rodziny mogły być programowane wyłącznie za pomocą interfejsu JTAG, ale problemy przestawione na wstępie artykułu najwyraźniej zachęciły producenta do dołożenia większych starań o drobnych klientów, którzy nie chcą lub nie mogą inwestować w kosztowne narzędzia. Programowanie ISP jest więc możliwe wyłącznie w przypadku najnowszych mikrokontrolerów, wyposażonych w bootloader SAM-BA (SAM Boot Assistant), które oznaczono:
– mikrokontrolery AT91SAM7S32/64 – rev. E (product ID: 58814E),
– mikrokontrolery AT91SAM7S128/256 – rev. C (product ID: 58818C – fot. 5).
Fot. 5. Kompletne oznaczenie mikrokontrolerów AT91SAM7S128
Wymienione mikrokontrolery mają wbudowaną w sterowniku wewnętrznej pamięci Flash dodatkową pamięć nieulotną (poza dostępnym obszarem adresowym), w której znajdują się procedury obsługi FFPI (Fast Flash Programming Interface) oraz SAM-BA. Procedury SAM-BA umożliwiają m.in. ładowanie danych do pamięci Flash (co wymaga zastosowania specjalnego programu na PC – SAM-Prog) oraz odtwarzanie bootloadera (czyli SAM-BA), który jest kopiowany do pierwszych dwóch sektorów pamięci Flash (jest to tzw. Boot Recovery). Oprogramowanie SAM-Prog jest udostępniane bezpłatnie.
W odróżnieniu od mikrokontrolerów z rodziny LPC2000, mikrokontrolery AT91SAM7S do programowania wykorzystują specjalny interfejs szeregowy nazywany DBGU (DeBuG Unit) lub wbudowany interfejs USB. Na rys. 6 pokazano podstawowy schemat aplikacyjny mikrokontrolera AT91SAM7S128 z dwoma interfejsami umożliwiającymi programowanie ISP pamięci Flash.
Rys. 6. Podstawowy schemat aplikacyjny mikrokontrolera AT91SAM7S128 z interfejsami umożliwiającymi programowanie ISP pamięci Flash
W przypadku korzystania z DBGU częstotliwości rezonansowe zastosowanych kwarców mogą wynosić 3…20 MHz, ponieważ program SAM-BA wyposażono w autodetekcję prędkości transmisji. W przypadku korzystania z USB częstotliwość rezonansowa kwarcu musi być równa 18,432 MHz, ponadto na potrzeby interfejsu (poza liniami D+ i D-) zajęte muszą być dwie linie I/O (jedna do kontroli pojawienia się napięcia VBUS na złączu USB, druga do włączania rezystora pull-up USB). Należy pamiętać, że sterownik dla interfejsu USB (o nazwie atm6124) jest instalowany automatycznie w systemie Windows podczas instalacji programu sterującego SAM-Prog, dzięki czemu po podłączeniu (obudowanego w peryferia jak pokazano na rys. 6) mikrokontrolera do USB sterownik jest aktywowany automatycznie.
Mikrokontrolery AT91SAM7S przed pierwszym użyciem muszą zostać zainicjalizowane, co wymaga ze strony użytkownika (przy odłączonym zasilaniu) dołączenia wejścia TST i wejść PGMEN0…2 (można je zostawić także niepodłączone, mają bowiem wewnętrzne pull-upy) do linii zasilającej mikrokontroler (+3,3 V), włączenia zasilania i odczekania co najmniej 10 sekund, po którym to czasie zasilanie mikrokontrolera należy odłączyć. Następnie odłączamy wejście TST od linii +3,3 V – mikrokontroler jest gotowy do współpracy z programem SAM-Prog. Niestety producent nie przewidział żadnej sygnalizacji poprawnego przebiegu kopiowania programu SAM-BA do pamięci Flash, więc w niektórych przypadkach procedurę trzeba będzie (być może, autorowi się to zdarzało) powtórzyć. Należy pamiętać, że odtworzenie SAM-BA w pamięci Flash mikrokontrolera jest konieczne za każdym razem, gdy chcemy zaprogramować ją ISP – wymaga to każdorazowo powtórzenia opisanej procedury. Kolejną ważna rzeczą, jaką należy zapamiętać, jest to, że przed ponownym zainicjowaniem SAM-BA pamięć Flash mikrokontrolera należy wykasować. W tym celu na wejście ERASE mikrokontrolera należy podać (przy włączonym zasilaniu) napięcie +3,3 V na czas nie krótszy niż 15 ms.
Rozwiązanie zastosowane przez Atmela nie jest najwygodniejsze, ale pomimo niedociągnięć, sprawdza się w praktyce. Podczas projektowania urządzenia wyposażonego w mikrokontrolery AT91SAM7S warto pamiętać o zastosowaniu zworek lub innych rozwiązań umożliwiających jego wygodne programowanie ISP.
Podsumowanie
Prezentowane w artykule rozwiązania sprzętowe – ze względu na wygodę – powinny być stosowane w systemach docelowych, oczywiście w przypadku, gdy nie wchodzi w grę korzystanie z JTAG-a. W przypadku budowania aplikacji na bazie mikrokontrolera z rodziny LPC2000 można pokusić się o wykonanie prostego programatora, którego schemat pokazano na rys. 8.
Rys. 8. Interfejs spełniający rolę prostego programatora ISP dlamikrokontrolerów LPC2000
Dodatkowe informacje:
|