fbpx

Ostatnio mnóstwo osób pyta się mnie o przeportowanie moich kodów na STM32F103C8T6. Niechętnie podchodzę to tego zadania bo przecież HAL jest w miarę prosty do przenoszenia. Poza tym chciałbym uczyć programowania, a nie kopiowania kodu 🙂 Jest jeszcze kilka innych kwestii z którymi mam wewnętrzny problem jeśli chodzi o popularną płytkę z Chin.

BluePill z STM32F103C8T6

Zacznę od tego czym w ogóle jest ta płytka. Jest do mała i niesamowicie tania chińska płytka developerska dumnie nazywana “minimal development board for STM32”. Faktycznie jest na niej minimum komponentów potrzebny do pracy mikrokontrolera. Nawet trochę więcej niż minimum bo posiada diodę użytkownika czy złącze USB Slave.

Specyfikacja mikrokontrolera wlutowanego w PCB ma się następująco:

  • Rdzeń Cortex-M3, czyli najstarszy z rodziny
  • Taktowanie do 72 MHz
  • 64 kB Flash
  • 20 kB SRAM
  • 2 x I2C
  • 2 x SPI
  • CAN
  • 3x USART
  • 2 x ADC
  • Wbudowany RTC
  • 4 x timer

W porównaniu do takiego popularnego Arduino wygląda całkiem mocarnie. Tym bardziej, że ma wyprowadzone na płytkę 31 pinów GPIO w porównaniu do 19 pinów w Arduino Uno.

Dlaczego więc unikam pisania na nim artykułów?

Podłączenie programatora

Rozpoczęcie pracy z BluePill to nie tylko zakup tej płytki. Jedynym wyjątkiem jest tutaj wgrywanie z bootloaderem Arduino, ale nie tego tyczy się mój blog.

Chcąc pisać z wykorzystaniem bibliotek HAL lub “na rejestrach”, potrzebny będzie wpięty programator ST-Link. I tutaj jest fajnie, bo mamy wyprowadzone złącze na ten programator na oddzielnych goldpinach. Jednak jest to podłączenie minimum, którego ja osobiście nie polecam.  Brakuje na tym złączu sygnału RESET.

Co się dzieje jeśli nie podepniesz RESETu? W najlepszym wypadku nic – zaprogramujesz normalnie. Co w najgorszym? IDE będzie wyrzucało Ci, że albo nie może znaleźć mikrokontrolera, albo jakiś inny błąd z połączeniem. Po prostu MCU nie zawsze “zezwoli” na wpięcie się między nogi biegnącemu programowi.

Co najmniej raz w tygodniu dostaję maila, że jest coś nie tak z BluePill’em i na ogół podłączony RESET pomaga.

Dlatego jedynym, sensownym podłączeniem jest to z RESETem. Niestety pin ten na płytce został wyrzucony daleko od złącza a’la SWD.

W płytkach Nucleo, których używam programator mam na pokładzie i jest on podłączony tak, jak chcę. Wpinam miniUSB i działa – proste. Dodatkowo unikam łączenia za pomocą przewodów i płytki stykowej. Korzystając z programatora na Nucleo i tak muszę je mieć na biurku.

Connect under reset

Może masz inne odczucia przy pracy z BluePill, ale nigdy nie mam pewności, że nawet podłączony poprawnie mikrokontroler będzie działał od strzała.

Często jest jeszcze potrzeba ręcznego wskazania programatorowi, że musi podłączać się pod resetem. Ten problem również wielokrotnie rozwiązywałem z czytelnikami na mailach.

Nie lubię, spędzać nadmiernej ilości czasu na “konfiguracji”.

Problemy z USB

Z tymi BluePillami można spotkać przeróżne problemy z interfejsem USB. Najpopularniejszy jest chyba problem sprzętowy. W jednej z wersji obsadzenia PCB Pan Chińczyk dał rezystor podciągający USB D+ R10 jako 10k zamist 1k5. Efekt? System nie potrafi wykryć urządzenia. Można go przelutować, albo kupić odpowiednio obsadzony.

Jeśli trafisz na podrobiony układ, to USB może wręcz nie działać poprawnie lub w ogóle. A jak już jesteśmy przy podróbkach…

Podróbki podróbek

To jest najgorsze. Czy jesteś pewien, że STM32F103C8T6 jest prawdziwym układem? Czy ST o nim wie? Może jest tak samo jak z BMW M3, których w samej Polsce jeździ więcej niż zeszło z taśmy? 🙂

Ja nie byłbym taki pewien oryginalności układów z Chin. Stąd może też biorą się problemy z resetem. Kupując na Aliexpress nie możesz być pewien tego, że masz układ od ST, nawet jeśli jest na nim tak napisane. Zaufaj mi.

Czasami zdarza się, że układy te są opisane jako STM32F103CBT6. Co ciekawe w zdecydowanej większości przypadków mikrokontrolery z BluePilla mają 128kB według programatora, a nie 64kB. Często te “nadmiarowe” 64kB jest nieużyteczne i zepsute 🙂

Mi się na mój sklep udało sprowadzić płytki, które działają tak, jakbym tego chciał. Jednak nie mogę dać 100% gwarancji, że to oryginały. Kupując samemu nie wiesz, czy Tobie się uda.

Czasem wiadomo wprost, że masz do czynienia z podróbką. Na układzie zamiast STM32F103C8T6 będzie wyryty napis CS32F103C8T6. Ponoć działają tak samo, ale już samo ID mikrokontrolera jest inne co wymaga nieco pracy, aby móc go używać. Nie sprawdzałem nigdy, czy “działają tak samo”. Szkoda mi czasu na nerwy dla oszczędzenia kilku zł.

Również wiele osób do mnie pisało o pomoc mając ten podrobiony układ, po czym okazywało się, że mają podróbę. Jeśli chcesz płytkę ze sprawdzonego źródła – zapraszam.

Płytka stykowa

Co prawda często używam płytek stykowych, ale przy każdym projekcie redukuję ich ilość do niezbędnego minimum. Może dlatego jeszcze nie mam siwych włosów, a co niektórzy znajomi mają.

No dobra Mateusz, ale co się czepiasz? Bardzo często korzystam z analizatora logicznego. Oznacza to, że do jednego pinu potrzebuję się wpiąć dwa razy. Nucleo część pinów ma zduplikowane co jest dla mnie ogromną zaletą.

BluePill każdy pin ma wyprowadzony pojedynczo. Oznacza to, że już na starcie muszę całą płytkę wpiąć w stykówkę i wszystko łączyć na przewodach.

Uwierz mi, że im mniej przewodów tym lepiej. Zwłaszcza mając mało miejsca na biurku oraz kota…

Przy okazji tak lichego połączenia często dochodzi combo w postaci przerywającego programatora czy inne podobne kwiatki. Nie jest też łatwo o zwarcie. Nie. Po prostu nie chcę się denerwować.

31 GPIO to wcale nie jest tak dużo

STM32 w tej obudowie może i ma więcej pinów niż Arduino, ale to i tak nie jest sporo. Weź większy LCD, kartę SD, czujniki I2C, SPI i już robi się ciasno.

Zdecydowanie wolę wziąć 64-pinowe Nucleo które ma około 50 GPIO. Do moich zastosować jest idealne. Jeśli nadal mi mało – są jeszcze większe.

Jednak czasem go użyję

Są jednak takie momenty, gdy użyję dzisiejszego bohatera wpisu. Najczęściej są to projekty w których z góry wiem, że będę chciał wsadzić w obudowę cały dev board. Wtedy nie muszę robić skomplikowanej PCB. Wsadzę BluePill z racji jego rozmiarów.

Czy jeszcze go kiedyś używam? Raczej nie… Leży kilka prywatnych sztuk w szafie i się mocno kurzą.

Podsumowanie

Jeśli dotarłeś tutaj to bardzo się cieszę. Musiałem to z siebie wyrzucić, bo ostatnio mam na prawdę sporo zapytań w stylu “a przerobisz to na F103?”. Może kiedyś przerobię kody. Nie obiecuję. Za to gorąco zachęcam Cię do samodzielnego próbowania.

Jeśli przyjdziesz do mnie z problemem podczas portowania to chętnie Ci pomogę. Nie pomogę Ci natomiast ze “zrób za mnie całość”. Zachęcam do nauki i samodzielności.

Co do BluePill to jest to ciekawa płytka. Na pewno cena robi robotę i jeśli ma się świadomość wad płytki, to można śmiało używać. Jednak osobom początkującym będę odradzał. Musisz uczyć się programować a nie zwalczać dziwne problemy.

Nie zabraniam Ci używać BluePill, ale mam nadzieję, że przy jego wyborze będziesz miał z tyłu głowy, że nie jest on idealny.

4.6/5 - (11 votes)

Podobne artykuły

.

15 komentarzy

woocom · 08/11/2021 o 20:58

Ja również polecam zacząć od Nucleo. Z nimi nigdy nie miałem problemów.
Mam kila płytek BluePill z różnych źródeł. Jedne z procesorem z oznaczeniem STM32F103c8t6, inne z CS32F103c8t6. Wszystko raczej jakieś podróby bo co rusz były z nimi problemy.
Problem z programowaniem rozwiązuje ustawienie Debug na Serial Wire o czym wspomniał Waldemar.
Dodatkowo dla procków CS32F103c8t6 w konfiguracji openocd: “/usr/share/openocd/scripts/target/stm32f1x.cfg” należy podmienić nr ID z 0x1ba01477 na 0x2ba01477
I2C też nie chciało działać na domyślnej konfiguracji z CubeMX. Należało dodać kilka linijek przy inicjalizacji I2C w funkcji HAL_I2C_MspInit:
/* I2C1 clock enable */
__HAL_RCC_I2C1_CLK_ENABLE();
/* USER CODE BEGIN I2C1_MspInit 1 */
HAL_Delay(100);
__HAL_RCC_I2C1_FORCE_RESET();
HAL_Delay(100);
__HAL_RCC_I2C1_RELEASE_RESET();
HAL_Delay(100);
/* USER CODE END I2C1_MspInit 1 */

    Mateusz Salamon · 17/11/2021 o 15:34

    I2C nawet w serii F103 ma ten sam bug. Te wszystkie klony są oparte na wycieku schematów procka, który był zabugowany 🙂

P.S. · 20/08/2021 o 00:33

Witam.
Ja mam 15 płytek BluePill i na wszystkich zamiast STM32F103C8T6 są STM32F103CBT6 i mają 128kB Flash. Z żadnym z nich nie miałem problemu. Mam jeszcze kilka sztuk takich Leaflabs MapleMini. Te MapleMini są “obładowane elementami” obie strony PCB.
Mam jeszcze BlackPill’e (są w dwóch wersjach) … jeśli Ktoś z Was spotkał się z BlackPill to wie o co chodzi. Są tam STMki na Cortex-M4. Jedne mają na sobie STM32F401CCU6 a drugie STM32F411CEU6. Osobiście powiem, że nie mam problemów z tymi płytkami.
Oczywiście płytki Discovery i Nucleo to inna liga 🙂 … są na nich programatory ST-Link.
Do BluePill i BlackPill trzeba mieć osobny lub korzystać z tych na Discovery lub Nucleo.
Jeśli ktoś nie dysponuje dużym budżetem to zamiast jednego Nucleo czy Discovery jest klika BluePill czy BlackPill. Jak sobie uszkodziłem BluePill za ~2$ to nie płakałem wziąłem następnego … Jak sobie kiedyś uwaliłem Discovery to się zdenerwowałem … A jeśli uszkodzę Nucleo to się bardziej niż zdenerwuję 🙂
Pozdrawiam.

Waldemar · 12/11/2020 o 22:16

Miałem problem z wgrywaniem wsadu na BluePilla ale jednym z rozwiązań było przytrzymanie przycisku reset przez ok 2-3 sekundy zaraz po puszczeniu wgrywania.

Później gdzieś przeczytałem,że w konfiguracjiw zakładce Pinout & Configuration >> System Core >> SYS zmieniamy ustawienia debugowania z No Debug na Serial Wire..

Po tym już nigdy nie miałem problemów.

neptun78 · 07/09/2020 o 20:46

Zgadzam się, ja trafiłem na podróbkę blue pill co utrudniało mi życie w środowisku Keil – IDE wykryło że mikrokontroler jest nie oryginalny.

EuzebjuszaboJanusz · 22/12/2019 o 19:22

Hejka, nie wiem dlaczego takie zdanie ale z moich doświadczeń wynika że tą płytkę się inaczej resetuje ale zapewniam – bez dodatkowych kabli- się resetuje. Sprawdziłem. Zrobiłem to na Workbench+cubemx i działa programuje i śmiga. Niestety obecnie zostawiłem swój st-link v3 i biedzę się nad podpięciem SWD z MB1440B. Kurczę żadnej dokumentacji.

gunt · 18/11/2019 o 20:52

Tak, Sun i jego dziwne podejście do wszystkiego i zaskakujące pomysły 🙂 Obecnie ma własne forum,
zresztą, Opisał Seta też na youtube, przez co się skusiłem. I nie żałuję. To kawał porządnego programatora 😛

gunt · 15/11/2019 o 17:41

ja i tak używam własnych płytek przede wszystkim , co do blue pill, nie wszystko co tanie jest podróbką
tak się składa ze ani ty , a ni ja nie kupmy kilku milionów procków dla dobrej ceny , a chińczyk tak zasady zakupu mają też inne, przez co mają lepsze ceny , dodatkowo większość i tak produkuje się u nich , ponadto panowie , nie wszędzie potrzeba procka z 1000gpio. Sztuka elektroniki to kompromis
miedzy ceną a wydajnością … dlatego trzeba z rozwagą dobierać procek do projektu , nie inaczej …..

    Mateusz Salamon · 15/11/2019 o 20:54

    Ja wiem, że zamawianie w tysiącach sztuk układu znacząco obniży jego cenę 🙂 Kiedyś miałem taką sytuację, że zamówiliśmy w jednej firmie parę tysięcy markowych układów przetwornic. Oczywiście z Chin. Mimo, że były z różnych serii produkcyjnych to każda z nich jakoś dziwnie się zachowywała. Koniec końców okazało się, że to były podróbki. No i to, że sprzęt dobieramy do wymagań to 100% racja. Moim wymaganiem jest bezproblemowość i wygoda 🙂

      gunt · 16/11/2019 o 13:03

      Jak dotejpory , na 100szt płytek blue pill zamawianych u jednego sprzedawcy , po nie najniższej cenie i kilku innych , nie miałem problemu z ich działaniem … oczywiście wybieram tylko te co są z STM32 , nie gigadevice 103 czy podobnym choć te z GD są też całkiem do rzeczy , a nowe z Risc-V zakupiłem z ciekawości … i nie zaobserwowałem dziwnych zachowań i problemów , ba w kilku BP udało się nawet odblokować 64K dodatkowej przestrzeni pamieci podobnie jak w c8 zakupionych z farnela , wiec nie ma powodów do wiekszych obaw , owszem w tym trybie trzeba ostrożnie bo może dojść do destabilizacji pracy (z jakiegoś powodu ma 64k nie 128) . Dodatkowo cześć 103c8 z pewnego źródła wykazuje pewne dziwne zachowania , co powoduje przemyslenia na poziomie celowego wprowadzania lepszych układów z wadami na rynek jako mniejszej i słabszej przez co tańszej wersji … (wiele firm tak robi że w procesie testów okazuje się że te z obrzeża wafera mają defekty , które po zastosowaniu pewnych ograniczeń można użyć jako np układy z mniejszą ilością pamięci…. (znana metoda również z produkcji procesorów jak Pentium / celeron czy Athlon/ Duron –> gdzie w wielu przypadkach dawało się odblokować słabsze na lepsze.) 🙂
      W kwestii nuclejek … wiesz ma to sens i nie jest złym wyborem …. ale czesto jej rozmiar nie podchodzi do jakiś projektów , w przypadku małych płytek BP , można przecież zawsze zmienić procka , a posiadanie programatora zewnetrznego. jest niemal obowiązkiem zajmujących się programowaniem czy to arm czy avr , pic ….
      ja używam podobnie jak pewnie Ci znany SunRiver z sunduino stlink v3set , nie jest drogi a fajnie działa lepiej niż ów v2 z nuklejek — warto rozważyć takie rozwiązanie 🙂

      Mateusz Salamon · 17/11/2019 o 22:05

      O tych “nieodkrytych” ficzerach w układach scalonych słyszałem wiele razy. Pamiętam, że kiedyś skusiłem się na (chyba) Phenoma, w którym była loteria odblokowania dodatkowych dwóch rdzeni. Nie udało się niestety. W ukłądzie z BP pewnie nie dowiemy się co było przyczyną. Podejrzewa, że jakiś brak stabilności, lub też machnięcie dwóch “różnych” MCU na jednej produkcji 🙂 Fajnie wygląda ten set, ale nie miałem jeszcze okazji z nim walczyć. SunRivera znam jeszcze z forum Atnel’a 🙂 Mądry i sprytny gość, szanuję bardzo.

Oskar · 15/11/2019 o 10:41

Można wiele napisać o wadach BluePill, ale Nucleo kosztuje ~20USD, a BluePull 1,5 USD. Wisłą kija nie zawrócisz…

    Mateusz Salamon · 15/11/2019 o 14:14

    I to jest bardzo mocny argument za BluePillem którego nie podważę 🙂 Jednak chyba z wiekiem i doświadczeniem dochodzę do wniosku, że cena nie jest jednak najważniejsza 😉

Radee · 14/11/2019 o 07:56

F103 to nie tylko STM32f103C8T6, BluePill czy BlackPill – przeportuj obsługę UART po DMA dla nieznanej ilości znaków na NUCLEO-F103RB, a jak zadziała, to każdy zdecyduje, czy ryzykować z STM32F103C8T6 czy pozostać przy Nucleo 😉

    Mateusz Salamon · 14/11/2019 o 08:49

    Racja. Jednak zdecydowana większość pisze właśnie na C8T6 🙂 Muszę kupić Nucleo z F103 i się nim pobawić. Mam chyba wszystkie inne Nucleosy tylko nie ten 😛

Dodaj komentarz

Avatar placeholder

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *