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.

 
W erracie przygotowanej przez producenta (ID15866 rev2) opisano sposób uniknięcia problemów z bootloaderem w starszych wersjach mikrokontrolerów, przy czym są one skuteczne wyłącznie w przypadku układów w obudowach LQFP100.

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

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.

W przypadku braku komunikacji pomiędzy programem Flash bootloader demonstrator i bootloaderem mikrokontrolera pojawi się komunikat jak poniżej.


W takim przypadku należy sprawdzić:

  • poprawność podłączenia linii transmisyjnych mikrokontrolera do konwertera napięć RS232,
  • poprawność wyboru portu komunikacyjnego i trybu pracy bootloadera w początkowym oknie programu Flash bootloader demonstrator ,
  • poprawność konfiguracji linii BOOT mikrokontrolera (po każdej zmianie ich stanu niezbędne jest wyzerowanie mikrokontrolera!).
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)

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. 3. Okno startowe programu Flash bootloader demonstrator 

 

 

Rys. 4. Okno  z wykazem sektorów pamięci i ich statusów 

Rys. 4. Okno z wykazem sektorów pamięci i ich statusów 

 

Rys. 5. Okno  konfiguracji mikrokontrolera i sektorów pamięci

Rys. 5. Okno konfiguracji mikrokontrolera i sektorów pamięci

 

O autorze