Zestaw STM32L0538-DISCO jest interesującym rozwiązaniem wyposażonym w rzadko spotykany wyświetlacz e-paper. W krótkim cyklu artykułów przedstawimy podstawy obsługi tego wyświetlacza, zaczynamy od przybliżenia sposobu przygotowania i konfiguracji środowiska uruchomieniowego ARM-MDK (Keil mVision), które posłużyło autorowi do przygotowania przykładów, które przedstawiamy w kolejnych częściach cyklu.

Zestaw STM32L0538-DISCO (fotografia 1) jest jedynym obecnie na rynku tanim zestawem startowym z graficznym wyświetlaczem cholesterolowym, stosowanym m.in. w czytnikach e-booków. Prezentowany zestaw jest efektownym demonstratorem aplikacji o niewielkim poborze mocy, co wynika z zastosowania w nim mikrokontrolera STM32L053, który jest wyposażony w rdzeń Cortex-M0+.

 

Fot. 1. Wygląd zestawu STM32L0538-DISCO

 Jednostka centralna mikrokontrolera może być taktowania sygnałem zegarowym do 32 MHz, współpracuje ona z pamięcią Flash o pojemności 64 kB oraz RAM o pojemności 8 kB. Użyty w zestawie wyświetlacz ma przekątna 2,04 cala przy wymiarach matrycy 172 x 72 piksele. Tradycyjnie dla zestawów DISCOVERY także STM32L0538-DISCO ma wbudowany programator-debugger ST-Link/v2-1.

Przygotowanie środowiska ARM-MDK krok-po-kroku:

1) Pobieramy oraz instalujemy środowisko MDK-ARM Keil w wersji 5.15 lub nowszej https://www.keil.com/demo/eval/arm.htm

2) Pobieramy oraz instalujemy sterowniki ST-LINK/V2 https://developer.mbed.org/teams/ST/wiki/ST-Link-Driver

3) Podłączamy mikrokontroler poprzez złącze USB komputera i złącze USB Mini-B mikrokontrolera USB ST-LINK.

4) Otwieramy środowisko MDK-ARM Keil i otwieramy Pack Installer za pomocą ikony na pasku.


5) Instalujemy najnowsze biblioteki w Pack Installer poprzez znalezienie w zakładce Packs bibliotek Keil: STM32L0xx_DFP i kliknięcie przycisku Install obok nazwy. Po zakończeniu procesu (wyświetla się tekst Up to date) zamykamy okno Pack Installer. Po instalacji należy zaktualizować lub zainstalować biblioteki ARM::CMSIS w taki sam sposób.


6) Wybieramy opcję New µVision Project z zakładki Projects.

7) Zapisujemy nowy projekt w wybranym folderze i wpisujemy nazwę projektu, np. New_project.uvprojx.

8) Wybieramy z listy mikrokontroler, który powinien się pojawić po zainstalowaniu odpowiednich bibliotek poprzez Pack Installer (STMicroelectronics ? STM32L0 Series ? STM32L053 ? STM32L053C8). Po podświetleniu nazwy klikamy przycisk OK.


9) Pojawia się okno Manage Run-Time Environment. Klikamy przycisk OK i zakończenie tworzenia nowego projektu.


10) Otwieramy folder w którym został zapisany projekt, powinien zawierać pliki nazwa_projektu.uvprojx i nazwa_projektu.uvoptx oraz dwa foldery – Listings i Objects. Tworzymy dwa nowe foldery i nazywamy je Inc oraz Src.

11) Pobieramy paczkę bibliotek STM32CubeL0 http://www.st.com/web/en/catalog/tools/PF260508

12) Kopiujemy folder Drivers z paczki STM32CubeL0 do folderu z projektem.

13) Przechodzimy do ekranu głównego środowiska MDK-ARM Keil. Prawym przyciskiem myszy klikamy na Target 1 w oknie Project i wybieramy Manage Project Items.


14) W oknie Manage Project Items można zmienić domyślną nazwę folderu Source Group 1, Target 1 oraz dodać inne foldery w oknie Groups. Tworzymy kilka grup, np. User, HAL Drivers, CMSIS, BSP, Components oraz dodajemy do odpowiednich folderów wcześniej skopiowanych plików bibliotek za pomocą przycisku Add files.


15) Teraz kopiujemy pliki z katalogów Inc i Src z paczki STM32CubeL0 z folderu Projects/STM32L053C8-Discovery/Templates z do tak samo nazwanych folderów w katalogu naszego projektu. (main.h, stm32l0xx_hal_conf.h, stm32l0xx_it.h, main.c, stm32l0_hal_msp.c, stm32l0xx_it.c). Pliki z rozszerzeniem .c dołączamy do grupy User. Następnie dołączamy wszystkie pliki z folderu Drivers/STM32L0xx_HAL_Driver/Src do grupy HAL Drivers.

16) Znajdujemy plik system_stm32l0xx.c w katalogu Drivers/CMSIS/Device/ST/STM32L0xx/Source/Templates oraz startup_stm32l053xx.s w katalogu Drivers/CMSIS/Device/ST/STM32L0xx/Source/Templates/arm i dodajemy te pliki do grupy CMSIS.

17) Znajdujemy pliki stm32l0538_discovery.c i stm32l0538_discovery_epd.c w katalogu Drivers/BSP/STM32L0538-Discovery i dodajemy ten plik do grupy BSP.

18) Znajdujemy plik gde021a1.c w katalogu Drivers/BSP/Components/gde021a1 i dodajemy ten plik do grupy Components.

19) Tworzymy nowy plik klikając na zakładkę File oraz New… i kopiujemy do niego następujący kod:

/* Initialize the User button */
BSP_PB_Init(BUTTON_KEY, BUTTON_MODE_EXTI);

/* Initialize the EPD */
BSP_EPD_Init();

/* Initialize the Touch sensor */
BSP_TSL_Init();
}
/**
* @brief Configure the touch sensor.
* @param None
* @retval None
*/
void BSP_TSL_Init(void)
{
/* Configure the TSC peripheral */
/* All channel, shield and sampling IOs must be declared below */
/* Initialize the STMTouch driver */
}
/**
* @brief Initializes LEDs, Button, and EPD.
* @param None
* @retval None
*/
void BSP_USB_Init(void)
{
/* Init Device Library */

/* Register the HID class */

/* Start Device Process */
}

Zapisujemy utworzony plik pod nazwą bsp.c klikając File oraz Save as… i dodajemy ten plik do grupy User. Zamykamy okno Manage Projects Items za pomocą przycisku OK.

20) Otwieramy okno konfiguracji projektu przyciskiem Options for Target ‘nazwa’ (domyślnie Target 1) lub wybieramy z zakładki Project polecenie Options for Target.


21) Dodajemy w zakładce C/C++ w polu Define w ramce Preprocessor Symbols następującą definicję:

USE_HAL_DRIVER,STM32L053xx,USE_STM32L0538_DISCO,

Za pomocą przycisku po prawej stronie pola Include Paths dodajemy ścieżki do następujących folderów:

  • .\Inc
  • .\Drivers\STM32L0xx_HAL_Driver\Inc
  • .\Drivers\CMSIS\Device\ST\STM32L0xx\Include
  • .\Drivers\BSP\STM32L0538-Discovery
  • .\Drivers\BSP\Components\gde021a1

22) Wybranie w zakładce Debug opcji Use i ST-Link Debugger.


23) Następnie wejście w ustawienia za pomocą przycisku Settings, wybranie w zakładce Debug portu SW oraz konfiguracja pamięci Flash w zakładce Flash Download na STM32L0 64KB Flash.



Zamknięcie okna ustawień debugowania oraz ustawień Target przyciskiem OK.

24) Kompilacja stworzonego projektu za pomocą opcji Rebuild all target files w zakładce Project lub wciśnięcie odpowiadającego tej opcji przycisku na ekranie głównym.


25) Jeśli kompilacja przebiegła bezbłędnie, można uruchomić tryb debugowania za pomocą opcji Start/Stop Debugging Session w zakładce Debug oraz wgrać do pamięci mikrokontrolera  i uruchomić program za pomocą opcji Run w zakładce Debug lub za pomocą przycisków na ekranie głównym.

Jeśli program został uruchomiony poprawnie, dioda kontrolna w zestawie zamiga i zaświeci się na zielono.

Jakub Górnicki