Getting started with STM32 - STM32F103C8T6 - blue pill

17.02.2018

Ked som sa pozeral po altrenative k arduino doskam zaujali ma dosky s STM32 mikroprocesormi. Konkretne STM32 Minimum system development board, niekde oznacovana aku Blue pill, ktora za cenu priblizne 1.5€ ponuka velmi slusne vlastnosti. Za tu cenu som ani nevahal a objednal dva kusy na testovanie

0. Vlastnosti 

Srdcom dosky je mikroprocesor STM32F103C8T6, k nemu je pridanych niekolko diskretnych suciastok, 3.3V stabilizator, mikro USB konektor, tlacidlo reset, dva jumpre, dve LEDky (jedna signalizuje napajanie, druha je programovatelna).

Datasheet tu  

STM32F103xxx - Medium-density performance line ARM®-based 32-bit MCU with 64 or 128 KB Flash, USB, CAN, 7 timers, 2 ADCs, 9 com. interfaces

ARM® 32-bit Cortex®-M3 CPU Core 

- 72 MHz maximum frequency, 1.25 DMIPS/MHz (Dhrystone 2.1) 

- Single-cycle multiplication and hardware division 

- 2.0 to 3.6 V application supply and I/Os  

- VBAT supply for RTC and backup registers  

Memories - 64 or 128 Kbytes of Flash memory - 20 Kbytes of SRAM 

2 x 12-bit, 1 µs A/D converters (up to 16 channels) - Conversion range: 0 to 3.6 V 

DMA - 7-channel DMA controller - Peripherals supported: timers, ADC, SPIs, I 2Cs and USARTs 

Up to 80 fast I/O ports - 26/37/51/80 I/Os, all mappable on 16 external interrupt vectors and almost all 5 V-tolerant 

Debug mode - Serial wire debug (SWD) & JTAG interfaces 

7 timers - Three 16-bit timers, each with up to 4 IC/OC/PWM or pulse counter and quadrature (incremental) encoder input - 16-bit, motor control PWM timer with deadtime generation and emergency stop - 2 watchdog timers (Independent and Window) - SysTick timer 24-bit downcounter

Up to 9 communication interfaces - Up to 2 x I2C interfaces (SMBus/PMBus) - Up to 3 USARTs (ISO 7816 interface, LIN, IrDA capability, modem control) - Up to 2 SPIs (18 Mbit/s) - CAN interface (2.0B Active) - USB 2.0 full-speed interface 

1. Prvy kontakt

Dosky som objednaval z Ciny, takze dorucenie zabralo tak 2-3 tyzdne. Ako byva zvykom dosky prisli zabalena v antzistatickom saciku spolu s nenapajkovanymi pinmi. Vizualne vyzeraju velmi pekne vyrobene, bez nejakych nedostatkov, zvlast ked berieme do uvahy cenu. 

Po pripojeni k USB sa rozsvieti napajacia dioda a a dioda na pine PC13 blika - takze doska je funkcna :)

Co ma vsak zarazli bolo ze PC nezaregistroval ziadne pripojene USB zariadenie. Po chvilke hladania som nasiel na nete informaciu ze USB standard vyzaduje pullup rezistor na D+ s hodnotou 1k5. Tieto dosky maju vsak tento rezistor 10k(pripadne 4k7), na niektorych pocitacoch to moze postacovat ale vecsinou nie.  

Takze ako prvy krok som rezistor vymenil, na doske je oznaceny ako R10. Nemal som prave poruke SMD 1k5 tak som pouzil 3k3 a fungoval. Tento rezistor je vlastne pripojeny medzi PA12 a 3.3V, takze  ak sa neda vamenit smd rezistor staci prepojit tieto piny rezistorom takej hodnoty aby to v paralelnom zapojeni s 10k dalo vyslednych 1k5.

Po tejto uprave je detekovane pripojenei usb ale rozpoznavanie zariadenia zlyha na chybe -  Device Descriptor Request Failed - error 43.

Je to sposobene tym ze nahraty program v zariadeny neobsluhuje USB rozhranie, neposkytne udaje na identifikaciu a zariadenie nie je mozne rozpoznat. 

Takze v tomoto momente nie je mozne nahrat novy program pomocou USB rozhrania bez potreby programatora. 

Nahravanie programu

Po miernom sklamani z absencie oficialneho USB bootloaderu som sa dal do hladania moznosti. 

1. USB DFU Protokol

Niektore STM32 mikroprocesory maju zabudovanu podporuj pre USB DFU protokol, ktory umoznuje nahrat priamo cez usb pripojenie. Avsak podporujuce zariadenia su tieto (bohuzial to nezahrna STM32F103xxx):

STM32F0 Series:(STM32F04xxx, STM32F07xxx)  STM32F1 Series: (STM32F105xx, STM32F107xx ) STM32F2 Series STM32F3 Series:  (STM32F301xx, STM32F302xx, STM32F303xB, STM32F303xC, STM32F303xD, STM32F303xE, STM32F373xx) STM32F4 Series: (STM32F401xx, STM32F405xx, STM32F407xx, STM32F411xx, STM32F412xx, STM32F415xx, STM32F417xx, STM32F427xx, STM32F429xx, STM32F437xx, STM32F439xx, STM32F446xx, STM32F469xx, STM32F479xx) STM32F7 Series: (STM32F722xx, STM32F723xx, STM32F732xx, STM32F733xx, STM32F745xx, STM32F746xx, STM32F756xx, STM32F765xx, STM32F767xx, STM32F769xx, STM32F777xx, STM32F779xx) STM32L0 Series: (STM32L07xxx, STM32L08xxx) STM32L1 Series: (STM32L1xxxC, STM32L1xxxD, STM32L1xxxE)  STM32L4 Series: (STM32L431xx, STM32L432xx, STM32L433xx, STM32L442xx, STM32L443xx, STM32L471xx, STM32L475xx, STM32L476xx, STM32L486xx, STM32L496xx, STM32L4A6)

viac informacii o tomto je na stranke www.st.com kde je aj aplikácia na stiahnutie, v tomto pripade nam to ale nepomoze tak sa tym dalej nezaoberam. 

2. ST-Link a ST-Link/V2 programator

externy programator s moznostou debugovania. Serial wire debug (SWD) & JTAG interfaces. Asi by to bola najidealnejsia volba, podporuje in-circuit programovanie a debugovanie. Klony sa predavaju za nizku cenu, od 2€. 

3. Custom bootloader

Je dostupnych niekolko bootloaderov s podporou USB, SD karty a ine. Najznamejsi je  STM32Duino bootloader. Pomocou neho je mozne nahravat program priamo cez USB s Arduino IDE. Bootloader vsak treba najskor nahrat do STM32 inym sposobom. 

4. Default USART bootloader

Vsetky  STM32 maju k dispozicii USART bootloader. Pre nahretie programu potom staci iba pripojit USB to serial prevodnik a spustit program ( napr STM32 Flash loader demonstrator).  Na prve odskusanie som si zvolil tento sposob.

Pripojenie USBtoSerial pre nahratie programu

Pripojenie je celkom jednoduche staci pripojit RX a TX pin s prevodniku na pin A9 a A10 na STM32 a napajanie, bud z prevodniku alebo externe. Pri pouziti externeho napajanie nepripojima napajanie VCC s prevodniku. 

Pin A9 a A10 su 5V tolerantne, takze mozme pripojit aj prevodnik s 5V logikou. 

pripojime       RXD-> A9           TXD-> A10           +5V -> +5V       GND-> GND

Stiahneme a nainstalujeme STM32 Flash loader

Pred pripojenim nastavime jumper BOOT0 na 1 a BOOT1 na 0 (vrchny obrazok este nema nastaveny jumper). Spustime aplikaciu Demonstrator GUI. Pred spustenim je potreba mat uz pripojeny prevodik, inak nerozpozna com port. Na uvodnej karte vyberieme COM port, ostatne satavenia som nemenil. Ak je vsetko spravne na dalsej karte zobrazi velkost flash pamete. Na dalsej karte vidime identifikaciu zariadenia a jednotlive stranky pamete. Dalsia karta nam dava na vyber co chceme robit. Mozeme pamet vymazat, nahrat novy obsah, ulozit obsah do suboru, nastavit ochranu proti zapisovaniu a nejake dalse nastavenia. 

Pretoze nemame zatial ziadny program na otestovanie komunikacie mozem vymazat obsah alebo ho stiahnut do suboru. Komunikacia vyzera uspesna, zapisal som cely obsah pamete do suboru test_backup.s19

Dalsia aplikacia od ST cez ktor mozme nahravat, vymazavat, stahovat programa nastavenia je STM32CubeProg. Podporuje nahravanie cez UART, USB a ST-Link. Staci vybrat rozhranie a ostatne je intuitivne. 


Vytvorenie programu

kedze uz mame sposob ako nahrat program, teraz to che este nejaky vytvorit.

Budeme na to potrebovat nejake vyvojove prostredie (IDE) . Na strankach ST jsu odkazy na niekolko vyvojovych prostredi ktore podporuju STM32. 

Ja som si vybral System Workbench toolchain - SW4STM32. Je free, ma plnu podporu vsetkych STM32 mikroprocesorov a vyvojovych dosiek a je zalozene na Eclipse, ktore aspon trocha poznam. link: https://www.openstm32.org/HomePage

Na stranke su navody ako to nainstalovat a rozbehat.






© 2017 Ketonk
Vytvorené službou Webnode
Vytvorte si webové stránky zdarma! Táto stránka bola vytvorená pomocou služby Webnode. Vytvorte si vlastný web zdarma ešte dnes! Vytvoriť stránky