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”.

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.

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ędzenie 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.


Raz na jakiś czas wyślę Ci też e-mail z ciekawymi rzeczami które znalazłem


9 Komentarzy

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

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Serwis wykorzystuje pliki cookies. Korzystając ze strony wyrażasz zgodę na wykorzystywanie plików cookies. Więcej informacji znajdziesz na stronie Polityka Prywatności

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close