LinkedIn YouTube Facebook
Szukaj

Newsletter

Proszę czekać.

Dziękujemy za zgłoszenie!

Wstecz
IoT

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

 

Polski portal branżowy dedykowany zagadnieniom elektroniki. Przeznaczony jest dla inżynierów i konstruktorów, projektantów hardware i programistów oraz dla studentów uczelni technicznych i miłośników elektroniki. Zaglądają tu właściciele startupów, dyrektorzy działów R&D, zarządzający średniego szczebla i prezesi dużych przedsiębiorstw. Oprócz artykułów technicznych, czytelnik znajdzie tu porady i pełne kursy przedmiotowe, informacje o trendach w elektronice, a także oferty pracy. Przeczyta wywiady, przejrzy aktualności z branży w kraju i na świecie oraz zadeklaruje swój udział w wydarzeniach, szkoleniach i konferencjach. Mikrokontroler.pl pełni również rolę patrona medialnego imprez targowych, konkursów, hackathonów i seminariów. Zapraszamy do współpracy!