Programowanie pamięci Flash mikrokontrolera na płytce STM32Butterfly przez RS232
Pamięć Flash mikrokontrolerów STM32 można programować poprzez interfejs JTAG lub – w przypadku gdy nie jest konieczne bieżące debugowanie pracy mikrokontrolera – z wykorzystaniem bootloadera ulokowanego w pamięci systemowej mikrokontrolerów z tej rodziny.
Zestaw STM32Butterfly wyposażono w mikrokontroler z podrodziny ConnectivityLine oznaczony symbolem STM32F107. Mikrokontrolery te, podobnie do STM32F105 (także należą do podrodziny ConnectivityLine , ale nie wyposażono ich w interfejs Ethernet MAC) fabrycznie wyposażono w oprogramowanie spełniające rolę bootloadera, obsługujące kilka kanałów komunikacyjnych: USB, CAN i RS232. Pozostałe podrodziny mikrokontrolerów STM32F (100, 101, 102, 103) także wyposażono w bootloader, ale obsługuje on wyłącznie interfejs UART (tab. 1).
Tab. 1. Zestawienie dostępnych kanałów komunikacji bootloadera z otoczeniem w podrodzinach STM32
Podrodzina |
USART1 |
USART2 |
CAN2 |
USB |
Xtal [MHz] |
|||
F101/102/103 | TX-PA9 | RX-PA10 | – | – | – | – | ||
F105/107 | TX-PA9 | RX-PA10 | TX-PD5 | RX-PD6 | TX-PB6 | RX-PB5 | DP-PA12
DM-PA11 ID-PA10** VBUS-PA9 |
-/8, 14,7456, 25* |
* – zewnętrzny rezonator jest niezbędny wyłącznie podczas korzystania z bootloadera USB i CAN
** – linia używana wyłącznie gdy interfejs USB mikrokontrolera pracuje w trybach host i device USB-OTG
Niektóre mikrokontrolery STM32F105/107 w wersji krzemu „Z” (aktualnie produkowanej) mają problemy z działaniem bootloadera. Kłopoty napotkają użytkownicy mikrokontrolerów z kodem daty poniżej 937, w nowszych wersjach mikrokontrolerów wada ta nie występuje.
|
Sprzęt i oprogramowanie
Do zaprogramowania mikrokontrolera poprzez interfejs RS232 z wykorzystaniem bootloadera konieczny jest konwerter poziomów logicznych TTL/RS232 dołączony do wybranej pary linii GPIO: PA9 (TxD) i PA10 (RxD) lub PD5 (TxD) i PD6 (RxD).
Schemat elektryczny przykładowego konwertera pokazano na rys. 1,pokazano na nim także miejsce dołączenia go do płytki zestawu STM32Butterfly. Do komunikacji z PC wybrano interfejs USART2, ponieważ jego linie TxD i RxD są przez bootloader przemapowywane do linii GPIO PD5 i PD6, które wyprowadzono na 10-stykowe złącze gold-pin przeznaczone do wykorzystania w aplikacji użytkownika.
Rys. 1. Schemat elektryczny interfejsu TTL/RS232 i sposób jego podłączenia do płytki STM32Butterfly
Obsługę transferu danych pomiędzy PC i mikrokontrolerem zapewnia oprogramowanie Flash bootloader demonstrator , przystosowane do obsługi wszystkich dostępnych kanałów transmisji danych: CAN, USB i RS232. Program jest dostępny bezpłatnie na stronie firmy STMicroelectronics ( http://www.st.com/stm32), wymaga on standardowej instalacji w systemie Windows.
Jak wspomniano, bootloader jest ulokowany w pamięci systemowej mikrokontrolerów STM32, jego automatyczne uruchomienie nastąpi po ustawieniu na liniach: BOOT0 = 1 i BOOT1 = 0. Prawidłowe ustawienie zwor konfiguracyjnych na płytce STM32Butterfly pokazano na fot. 2. Po dołączeniu zestawu STM32Butterfly z interfejsem RS232 do komputera PC i uruchomieniu wcześniej zainstalowanego programu Flash bootloader demonstrator , należy wybrać kanał komunikacyjny (rys. 3), następnie zrestartować mikrokontroler (naciskając przycisk RESET na płytce zestawu) i nacisnąć przycisk Next . Jeżeli inicjalizacja nastąpi poprawnie, zostanie wyświetlone okno z informacją o pojemności pamięci programowego mikrokontrolera, następnie okno z wykazem sektorów Flash i ich statusów (rys. 4). W kolejnych oknach użytkownik może wybrać plik zawierający dane do zapisania w pamięci Flash, ustalić ręcznie lub pobrać z zewnętrznego pliku konfigurację programowanego mikrokontrolera, włączyć lub wyłączyć zabezpieczenie odczytu zawartości pamięci Flash i poszczególnych sektorów pamięci (rys. 5) itp. Po ustaleniu konfiguracji mikrokontrolera można rozpocząć programowanie jego pamięci.
Sposób pracy działania bootloaderów zastosowanych w mikrokontrolerach STM32 został szczegółowo opisany w dokumentacji udostępnionej bezpłatnie przez firmę STMicroelectronics na stronie http://www.st.com/stm32. Opis bootloaderów mikrokontrolerów STM32F101/102 i 103 jest dostępny w nocie aplikacyjnej AN2606, a bootloader mikrokontrolerów STM32F105/107 opisano w nocie aplikacyjnej AN2662. W obydwu przypadkach szczegółowo opisano algorytm działania bootloaderów, sposób wymiany danych z PC, a także polecenia obsługiwane przez bootloader. Szczegółową instrukcję obsługi programu Flash bootloader demonstrator producent zawarł w dokumencie UM0462. Opisano w nim m.in. sposób korzystania z programu wywoływanego z linii poleceń, co pozwala na jego integrację z różnymi środowiskami programistycznymi. |
Fot. 2. Po ustawieniu zwor na liniach BOOT w sposób pokazany na rysunku mikrokontroler należy zrestartować, a po zakończeniu programowania przestawić zwory i wykonać ponowny restart (zerowanie)
Rys. 3. Okno startowe programu Flash bootloader demonstrator
Rys. 4. Okno z wykazem sektorów pamięci i ich statusów
Rys. 5. Okno konfiguracji mikrokontrolera i sektorów pamięci