- Wybór narzędzi programistycznych i sprzętowych
- Rozwój STM8S103F3P6
- Programator STM8S103F3P6
- STM8S103F3P6 IDE i kompilator
- STM8S z Arduino za pomocą Sduino
- Pobieranie wymaganego oprogramowania
- Konfigurowanie kompilatora STVD i Cosmic C.
- Standardowa biblioteka urządzeń peryferyjnych dla STM8S103F3P6
- Kompilowanie pierwszego programu
- Przesyłanie kodu z STVD do płytki rozwojowej STM8S za pomocą ST-Link V2
STM8 to seria 8-bitowych mikrokontrolerów z STMicroelectronics, który stał się wspólny wybór mikrokontrolera do kosztów wrażliwe rozwoju produktu. Wcześniej pracowałem z AVR, PIC i kilkoma innymi mikrokontrolerami ARM Cortex, ale z pewnością w niektórych aplikacjach stają się one przesadą i znacznie zwiększają koszt BOM. Niedawno, po zburzeniu kilku tanich chińskich produktów, stwierdziłem, że większość z nich ma w sobie mikrokontroler STM8. Układ scalony jest nie tylko tani, ale także zawiera wiele funkcji i opcji, dzięki czemu nadaje się do wielu różnych zastosowań. Na przykład STM8S Seria kontrolerów (których nauczymy się w tej serii samouczków) to kontrolery ogólnego przeznaczenia, ale istnieją inne serie, takie jak STM8A dla projektów motoryzacyjnych i STM8L dla projektów zasilanych bateriami o niskiej mocy, które rozszerzają zastosowanie tych kontrolerów.
W tej serii samouczków nauczymy się programować mikrokontrolery STM8S, a dokładniej STM8S103F3P6. Powodem rozpoczęcia pracy z tym konkretnym numerem części jest tylko stosunek ceny do wydajności. Lubić!! wystarczy spojrzeć na to tylko za 0,25 $ (ok. 20 rupii) otrzymujemy 8-bitowy mikrokontroler z wewnętrznym oscylatorem 16Mhz, 8kB Flash, 10-bitowym ADC, UART, SPI i I2C. Kto nie byłby zaintrygowany? Ponadto STM8S103F3P6 jest bardzo popularny, a zatem jako początkujący znajdziesz wystarczające wsparcie, jeśli potrzebujesz pomocy poza samouczkami. Zaczynając od tego, będziemy mieli sekwencję samouczków, podobnych do samouczków programowania PIC, w których nauczymy się programować ten kontroler od podstawowego migania do różnych interfejsów wyświetlacza i czujników. Jeśli interesują Cię 32-bitowe mikrokontrolery STM, możesz również zapoznać się z samouczkiem STM32F103C8 i projektami.
Wybór narzędzi programistycznych i sprzętowych
Teraz, gdy mamy już zabójcę mikrokontrolera, będziemy musieli wybrać narzędzia programistyczne i sprzętowe, aby rozpocząć proces uczenia się. Istnieje wiele opcji, tutaj wybrałem te, które są bezpłatne i łatwo dostępne dla każdego.
Rozwój STM8S103F3P6
Oficjalna płytka rozwojowa dla 8-bitowego mikrokontrolera ST nosi nazwę zestawu STM8 Discovery, ale użyjemy innej niedrogiej płytki rozwojowej, którą można łatwo znaleźć u lokalnego dostawcy lub w sklepie internetowym. Obraz płytki rozwojowej STM8S103F3P6, której będziemy używać w tym samouczku, jest pokazany poniżej.
Płyta składa się tylko z minimum komponentów, które są wymagane do rozpoczęcia projektowania. Jest przyjazny dla płytki prototypowej i nadaje się do kompaktowych zastosowań. Schemat obwodu wewnętrznego płytki rozwojowej przedstawiono poniżej.
Przyglądając się bliżej, zauważysz, że oprócz kontrolera STM8S103F3p6 mamy przycisk resetowania do resetowania kontrolera. Dioda zasilania i dioda testowa podłączone do PB5 (Port B, pin 5) oraz regulator napięcia AMS1117, który przekształca 5 V z portu USB na 3,3 V dla kontrolera. W razie potrzeby sterownik może być również przystosowany do pracy przy napięciu 5 V. Poniżej zaznaczono różne części kontrolera. Mamy również 4 piny programatora, a mianowicie 3,3 V, GND, SWIM i NRST, które można wykorzystać do łatwego programowania i debugowania naszego mikrokontrolera.
Programator STM8S103F3P6
Do programowania naszego sterownika użyjemy ST-LINK v2, który jest tani i łatwo dostępny online. Istnieje wiele wariantów tej płyty ST-LINK v2 (metalowa, plastikowa, złota, różowa, goła) i wszystkie służą temu samemu celowi. Mój jest pokazany poniżej, ale możesz użyć dowolnego programatora ST-LINK, wyprowadzenia będą się różnić, więc upewnij się, że poprawnie odczytałeś wyprowadzenia na obudowie. Istnieje również ST-LINK V3 od samego ST-Microelectronics, który może być użyty do poważnego debugowania. Na razie nie będziemy go używać, ponieważ jest trochę drogi, zachowamy to na przyszłość.
STM8S103F3P6 IDE i kompilator
Wybór odpowiedniego IDE i kompilatora dla STM8S103F3P6 jest kłopotliwy, po prostu dlatego, że istnieje wiele opcji do wyboru. Oficjalne narzędzia dostępne dla mikrokontrolera STM8 pokazano na poniższym obrazku.
Po stronie konfiguracji mamy STM8CubeMx, wypróbowałem oprogramowanie i było to dla mnie kompletne rozczarowanie. W przeciwieństwie do STM32Cube, STM8Cube nie może automatycznie generować kodu. Może generować mapowanie pinów tylko do celów wizualizacji i może się przydać, jeśli przenosisz kod z jednego kontrolera na drugi. Poza tym nie użyłbym tego. Więc w tej serii samouczków nie będziemy tego używać.
W przypadku IDE i kompilatora mamy wiele opcji do wyboru. Dwie najlepsze opcje dla IDE to IAR workbench i ST Visual Develop (STVD), oba oprogramowanie wydaje się być z lat 90-tych, ale po pewnym czasie zabawy z nim stwierdziłem, że STVD jest dobrym wyborem tylko dlatego, że jest całkowicie darmowy. Podobnie w przypadku kompilatora będziemy używać kompilatora Cosmic C, ponownie tylko dlatego, że jest on całkowicie darmowy. Innym powodem wyboru tego IDE i kompilatora jest to, że po zapoznaniu się ze środowiskiem powinno być łatwo bez większego wysiłku korzystać z dowolnego innego 8-bitowego mikrokontrolera firmy ST. W dalszej części artykułu dowiemy się, jak zainstalować i skonfigurować STVD z kompilatorem Cosmic C.
Do flashowania będziemy używać ST Visual Programmer (STVP), to narzędzie zostanie automatycznie zainstalowane podczas instalacji STVD. Zostanie zintegrowany z samym IDE, pomagając nam w szybkim programowaniu i debugowaniu. Ostatnim oprogramowaniem będzie STMStudio, które jest oprogramowaniem monitorującym STM8. Oprogramowanie może pomóc w debugowaniu STM8 w czasie rzeczywistym i ma kilka fajnych funkcji, takich jak monitorowanie wartości zmiennych, kreślenie wykresów itp. Nie eksperymentowałem wystarczająco z tym oprogramowaniem. I przynajmniej przez kilka pierwszych samouczków nie będziemy używać tego oprogramowania, ponieważ nie będziemy potrzebować dużych wymagań dotyczących debugowania.
Standardowa biblioteka urządzeń peryferyjnych STM8S: ST Microelectronics zapewnia zestaw bibliotek ułatwiających tworzenie kodu dla mikrokontrolerów STM8S. Biblioteka ta nazywana jest w skrócie „ Standardową biblioteką urządzeń peryferyjnych ” lub w skrócie SPL. Biblioteka jest fajna poza tym, że została napisana z myślą o wszystkich możliwych kontrolerach z rodziny 8-bitowych STM8S / A, a nie tylko o kontrolerze STM8S103F3P6, z którego będziemy korzystać. W związku z tym musimy tu i tam wprowadzić pewne poprawki, aby to działało (czym podzielę się później). Mimo to uważam, że warto spróbować, ponieważ może to bardzo przyspieszyć rozwój i dlatego będziemy go używać w naszym tutorialu.
Jeśli nie chcesz korzystać z biblioteki, musisz uzyskać bezpośredni dostęp do rejestrów kontrolera lub wykonać programowanie od podstaw. Oba są fajne, pod warunkiem, że masz czas na naukę i używanie ich. Moim pomysłem jest użycie biblioteki SPL wszędzie tam, gdzie działa dobrze, a następnie praca na poziomie rejestru i asemblera, jeśli jest to wymagane. Starajmy się nie wymyślać koła na nowo!
STM8S z Arduino za pomocą Sduino
Omawianie opcji oprogramowania nigdy nie będzie kompletne, jeśli nie wspomnę o wsparciu dla Arduino IDE STM8S. Tak, tę samą płytkę STM8S103F3P6 można zaprogramować bezpośrednio z Arduino IDE za pomocą Sduino, dzięki Michaelowi Mayerowi. Ale projekt jest nadal na etapie rozwoju i prawdopodobnie zajmie trochę czasu i wsparcie społeczności dla Sduino, aby zapewnić pełne wsparcie platformy. Jednak już po kilku minutach zabawy z Sduino, polubiłem to i postanowiłem również napisać osobny artykuł o tym, jak zaprogramować mikrokontroler STM8S z Arduino. Podam link do artykułu, gdy będzie gotowy. W tym artykule omówimy, dlaczego i dlaczego nie należy używać Arduino IDE do programowania mikrokontrolerów STM8S.
Oto moje wybory dotyczące oprogramowania i sprzętu, daj mi znać w sekcji komentarzy, jeśli uważasz, że inne oprogramowanie byłoby lepszym wyborem i dlaczego. Chciałbym również zbadać inne opcje.
Pobieranie wymaganego oprogramowania
Teraz, gdy zdecydowaliśmy się na oprogramowanie, którego użyjemy w tym samouczku, pobierzmy je, korzystając z poniższego łącza. Całe oprogramowanie można pobrać i używać bezpłatnie, wystarczy zarejestrować darmowe konto na ST i Cosmic, jeśli jeszcze tego nie zrobiłeś.
- ST Visual Develop (STVD)
- Cosmic C Compiler
- Standardowa biblioteka urządzeń peryferyjnych
- STM8Cube Mx (opcjonalnie)
- STMStudio dla STM8 (opcjonalnie)
Konfigurowanie kompilatora STVD i Cosmic C.
Po pobraniu obu programów postępuj zgodnie z instrukcjami wyświetlanymi na ekranie, aby je zainstalować. Zalecałbym pozostawienie ich w domyślnych katalogach, aby uniknąć późniejszego zamieszania. IDE STVD zainstaluje się bez żadnego wysiłku. W przypadku kompilatora Cosmic C podczas procesu instalacji musisz uzyskać bezpłatny klucz licencyjny. Musisz tylko podać informacje o firmie z identyfikatorem e-mail, jeśli jesteś studentem, po prostu o tym wspomnij. Proces uzyskiwania klucza licencyjnego jest natychmiastowy i automatyczny, chociaż instrukcja konfiguracji mówi, że może to zająć dzień lub dwa, otrzymałem klucz licencyjny automatycznie na mój adres e-mail, gdy tylko go przesłałem, po prostu upewnij się, że sprawdź SPAM. Mój e-mail potwierdzający jest pokazany poniżej.
Zgodnie z instrukcją zawartą w wiadomości e-mail, po prostu skopiuj plik license.lic i wklej go w podfolderze „license” w folderze instalacyjnym. Dla mnie ścieżka brzmiała „C: \ Program Files (x86) COSMIC \ FSE_Compilers \ CXSTM8 \ License” . Po prostu wklej plik w lokalizacji, jak pokazano poniżej.
Standardowa biblioteka urządzeń peryferyjnych dla STM8S103F3P6
Jak wspomniano wcześniej, ST Microelectronics zapewnia biblioteki zwane SPL, które mogą być używane dla wszystkich 8-bitowych mikrokontrolerów STM8S / A. Możesz pobrać oryginalny SPL ze ST Microelectronics i wprowadzić wymagane zmiany lub pobrać moje biblioteki STM8S103F3P6 SPL i używać ich jako takich. Poleciłbym później.
Oryginalny SPL firmy ST Microelectronics
STM8S103F3P6 SPL
Będąc tam, pobierz instrukcję obsługi SPL, która będzie bardzo przydatna podczas programowania kontrolera.
Kompilowanie pierwszego programu
Teraz, gdy wszystko jest gotowe, spróbujmy skompilować nasz pierwszy program, aby sprawdzić, czy IDE, kompilator i biblioteka działają tak, jak powinny. Możesz również sprawdzić wideo na dole strony, aby uzyskać szczegółowe instrukcje.
Zacznij od otwarcia STVD i wybierz Plik -> Przestrzeń robocza, w wyskakującym okienku wybierz „Nowa przestrzeń robocza” i wprowadź nazwę projektu i ścieżkę, w której program ma zostać zapisany. Nadam programowi nazwę BareMinimum i zapisuję go w folderze na pulpicie. Kliknij OK, a pojawi się okno dialogowe Nowy projekt, jak pokazano poniżej.
Nazywam projekt ponownie jako bareminimum i pod łańcuchem narzędzi musimy określić katalog główny łańcucha narzędzi do ścieżki, w której jest zainstalowany kompilator STM8 Cosmic. Domyślny adres ścieżki to „C: \ Program Files (x86) COSMIC \ FSE_Compilers \ CXSTM8” . Następnie kliknij OK, aby wyświetlić okno „MCU Selection”.
Wyszukaj STM8S103F3P i wybierz go i kliknij OK. Spowoduje to otwarcie nowego projektu dla STM8S103F3P na STVD, po zakończeniu okna powinny wyglądać tak.
Kliknij prawym przyciskiem myszy „plik źródłowy” i wybierz „Dodaj pliki do folderu”, aby dołączyć wszystkie pliki c z naszej biblioteki SPL, podobnie kliknij prawym przyciskiem myszy opcję Dołącz pliki, aby uwzględnić wszystkie pliki nagłówkowe. Jeśli masz jakieś pytania, możesz zapoznać się z poniższym filmem. Po dodaniu wszystkich plików kliknij Build -> rebuil d all, a następnie Compile, aby sprawdzić, czy kompilator i SPL działają zgodnie z oczekiwaniami. Jeśli wszystko pójdzie dobrze, powinieneś zobaczyć następujący ekran z błędem wyniku kompilacji 0 i ostrzeżeniem 0.
Dzięki temu możemy być pewni, że wszystkie nasze biblioteki SPL współpracują z kompilatorem Cosmic i STVD. To standardowa procedura, której będziemy przestrzegać przy każdym nowym projekcie. Możesz również dołączyć tylko niezbędne pliki nagłówkowe i źródłowe, które są potrzebne do projektu, aby w razie potrzeby skrócić czas kompilacji.
Przesyłanie kodu z STVD do płytki rozwojowej STM8S za pomocą ST-Link V2
Połącz ST-Link V2 z płytą rozwojową, jak pokazano poniżej.
Połączenia są dość proste, a najlepsze jest to, że nie potrzebujesz żadnych zewnętrznych komponentów. Moja konfiguracja sprzętu do programowania jest pokazana poniżej, właśnie użyłem żeńskich przewodów do połączenia. Pamiętaj jednak, że pinout twojego ST-Link może różnić się od mojego, upewnij się, że postępujesz zgodnie z pinem na urządzeniu przed wykonaniem połączeń.
Wykonaj połączenie i podłącz urządzenie do komputera, instalacja sterownika powinna rozpocząć się automatycznie. Możesz użyć menedżera urządzeń, aby upewnić się, że komputer prawidłowo wykrył ST-LINK V2. Zauważysz również, że testowa dioda LED na płycie miga, jeśli jest to pierwsze zasilanie płyty. Jak tylko pomyślnie skompilujemy kod na STVD, otrzymamy plik rozszerzenia „S19” w katalogu debugowania folderu projektu. Mój plik S19 jest pokazany poniżej.
Ten S19 jest jak plik Hex, który należy przesłać do kontrolera. Aby załadować program, otwórz ST Visual Programmer (STVP), który powinien być zainstalowany wraz z STVD. Następnie w oknie konfiguracji wybierz, jak pokazano na poniższym obrazku i kliknij OK.
Następnie kliknij Plik-> Otwórz i przejdź do pliku S19, który pokazaliśmy wcześniej. Następnie, aby sflashować urządzenie, wykonaj Program -> Bieżąca karta. Jeśli flashowanie się powiodło, powinieneś zobaczyć następujący wynik.
Domyślnie, kiedy kupujesz STM8S, będzie miał program migania, który miga testową diodą LED. Teraz po przesłaniu tego pustego kodu dioda LED przestanie migać.
Ważne: stwierdziłem, że mój ST-Link nie resetował płyty automatycznie po zaprogramowaniu. Musiałem go odłączyć i ponownie podłączyć, aby sprawdzić wyjście mojego programu. Nie jestem pewien, czy jest to problem dla wszystkich, daj mi znać w sekcji komentarzy. Obejrzyj również wideo na dole, które wyjaśnia rozwiązanie tego problemu.
Na tym zakończmy ten samouczek, nauczyliśmy się podstaw sprzętu, skonfigurowaliśmy środowisko programistyczne i nauczyliśmy się, jak kompilować i przesyłać kod. Jesteśmy teraz gotowi do postępu i będziemy go używać we wszystkich naszych nadchodzących samouczkach. Jeśli masz jakieś pytania, zamieść je na naszym forum i zaglądaj na więcej!