Qara sehrli mavi həb (biz STM32F103 əsasında moduldan Qara Magic Probe proqramçısı hazırlayırıq). Qara sehrli mavi planşet (biz STM32F103 əsasında moduldan Qara Magic Probe proqramçısını edirik) Proqramlaşdırma stm32 kəşfi

Mikro nəzarətçilərə proqram təminatı yükləmək üçün STM32 proqramçıdan istifadə olunur ST-Link, interfeys vasitəsilə proqramlaşdırıla bilən mikro nəzarətçiyə qoşula bilər S.W.D.. Üstəlik, eyni istifadə ST-LinkS.W.D. Kəsmə nöqtələrinin dəstəyi ilə proqram təminatının inkişaf mühitindən addım-addım sazlanmasını həyata keçirə bilərsiniz ( kəsilmə nöqtəsi). Eyni zamanda quraşdırılmışların sayı kəsilmə nöqtələri bir neçə parça ilə məhdudlaşır (dəqiq neçə olduğunu xatırlamıram, 5 ədəd kimi), lakin bu, proqram təminatının sazlanması üçün kifayətdir.

Markalı debug lövhələrində ST Təyyarədə həm hədəf mikrokontroller, həm də proqramçı var ST-Link, bu da mikrokontrollerdə hazırlanır STM32. Yeri gəlmişkən, çox rahat bir həll. Bundan əlavə, sazlama lövhəsinə quraşdırılmış proqramçı istənilən xarici mikrokontrolleri yandırmaq üçün də istifadə edilə bilər. STM32. Bu məqsədlər üçün lövhədə xüsusi bir tarak və interfeysi söndürə biləcəyiniz jumpers var S.W.D. lövhədə lehimlənmiş mikrokontrollerdən. Mənim ixtiyarımda bir lövhə var stm32f4 kəşfi, mikrokontrolörün quraşdırıldığı STM32F407VG, və mən bu lövhədən proqramçı kimi istifadə edirəm ST-Link:

Təbii ki, ayrı bir proqramçı ala bilərsiniz ST-Link. Burada bir neçə variant var. Birincisi markalıdır ST-Link, qalvanik izolyasiya ilə və olmadan gəlir. Bu proqramçılar belə görünür:

Başqa bir seçim Çindir ST-Link flash sürücü forma faktorunda:

Seçim də prinsipcə pis deyil, ancaq onun içərisində heç bir interfeys qorunmasının olmadığını nəzərə almaq lazımdır USB və hədəf lövhəsi, buna görə də dövrə və PC əsasları uyğunlaşdırılmayıbsa, sazlanan dövrədə qısaqapanma var və s., proqramçı ilə birlikdə yandırmaq şansı yüksəkdir. USB kompüterdəki port. Beləliklə, bu proqramçı ilə işləyərkən son dərəcə diqqətli olmalısınız!

ST-Link proqramçısının STM32 mikro nəzarətçisinə qoşulması

İnterfeys S.W.D. Proqramçının mikrokontrollerə qoşulduğu 2 xətt var:

  • SWDIO
  • SWCLK

Bu, proqram təminatının yeni mikrokontrollerə və ya sazlama və inkişaf mühitinə (məsələn, IAR-dan) uğurla yüklənməsi üçün tələb olunan minimumdur. Bütün mikro nəzarətçilərdə STM32 Proqramlaşdırma pinləri aşağıdakı giriş/çıxış portları ilə birləşdirilir:

  • SWDIO - PA13
  • SWCLK - PA14

Nəticələr PA13PA14ən ümumi I/O portları kimi istifadə oluna bilər, lakin bu halda proqram təminatının inkişaf mühitindən sazlanması imkanı itir. Bundan əlavə, MK-ya yüklənmiş proqram təminatından standart pin parametrlərini dəyişdirsəniz PA13PA14, yeni proqram təminatının yüklənməsi prosesi çətinləşir, proqramçı və MK-nı birləşdirən başqa bir teldən istifadə etməli olacaqsınız: xətt RESET. Bu halda, firmware proqramını yükləməzdən əvvəl, ST-Link mikrokontrolleri sıfırlayacaq və bununla da pinləri köçürəcək PA13PA14 standart vəziyyətə gətirin və bundan sonra MK-ya yeni proqram təminatı yükləyəcək. Firmware yükləməzdən əvvəl mikrokontroller sıfırlama funksiyasını aktivləşdirmək üçün IAR-e parametrləri bölməsində ST-Link-seçimi seçməlisiniz "Pini sıfırla".

08/09/2016 tarixində dərc edilmişdir

Mikro nəzarətçilər STM32 gücü, kifayət qədər müxtəlif ətraf qurğuları və çevikliyi sayəsində getdikcə populyarlaşır. Qiyməti 2 dollardan çox olmayan (Çin dilindən) büdcə test lövhəsindən istifadə edərək öyrənməyə başlayacağıq. Bizə də lazım olacaq ST-Link dəyəri təxminən 2,5 dollar olan proqramçı (Çin dilindən). Bu cür xərclər həm tələbələr, həm də məktəblilər üçün əlverişlidir, ona görə də mən bu büdcə variantından başlamağı təklif edirəm.


Bu mikrokontroller arasında ən güclüsü deyil STM32, lakin ən zəif də deyil. Müxtəlif lövhələr var STM32, o cümlədən Kəşf təxminən 20 dollara başa gəlir. Belə lövhələrdə demək olar ki, hər şey bizim lövhədə olduğu kimidir, üstəlik bir proqramçı. Bizim vəziyyətimizdə proqramçıdan ayrıca istifadə edəcəyik.

Mikro nəzarət cihazı STM32F103C8. Xüsusiyyətlər

  • ARM 32 bit Cortex-M3 nüvəsi
  • Maksimum tezlik 72 MHz
  • Proqramlar üçün 64Kb flash yaddaş
  • 20Kb SRAM yaddaş
  • Enerji təchizatı 2.0 … 3.3V
  • 2 x 12-bit ADC (0 ... 3.6V)
  • DMA nəzarətçi
  • 37 5V tolerant giriş/çıxış
  • 4 16 bitlik taymer
  • 2 gözətçi taymeri
  • I2C - 2 avtobus
  • USART – 3 avtobus
  • SPI - 2 avtobus
  • USB 2.0 tam sürətli interfeys
  • RTC - quraşdırılmış saat

STM32F103C8 lövhəsində mövcuddur

  • Çıxış portları A0-A12, B0-B1, B3-B15, C13-C15
  • Mikro-USB onun vasitəsilə lövhəyə güc verə bilərsiniz. Lövhədə 3.3V gərginlik stabilizatoru var. 3.3V və ya 5V güc lövhədəki müvafiq pinlərə verilə bilər.
  • Düymə Sıfırlayın
  • İki tullanan BOOT0BOOT1. vasitəsilə yanıb-sönmə zamanı istifadə edəcəyik UART.
  • İki kvars 8 MHz və 32768 Hz. Mikrokontroller tezlik çarpanına malikdir, buna görə də 8 MHz kvars ilə 72 MHz maksimum nəzarətçi tezliyinə çata bilərik.
  • İki LED. PWR– enerjinin verildiyini bildirir. PC 13– çıxışa qoşulur C13.
  • Proqramçı üçün bağlayıcı ST-Link.

Beləliklə, mikrokontrolleri yandırmağa çalışaraq başlayaq. Bu USART vasitəsilə və ya proqramçıdan istifadə etməklə edilə bilər ST-Link.

Firmware üçün test faylını yükləyə bilərsiniz. Proqram lövhədə LED-i yanıb-sönür.

Windows üçün USB-Uart adapterindən istifadə edən STM32 proqram təminatı

Sistem yaddaşında STM32 var Yükləyici. Bootloader istehsal mərhələsində və hər hansı bir mikro nəzarətçidə qeyd olunur STM32 interfeys vasitəsilə proqramlaşdırıla bilər USART USART-USB adapterindən istifadə etməklə. Belə adapterlər ən çox məşhur mikrosxemlər əsasında hazırlanır FT232RL. Əvvəlcə adapteri kompüterə qoşun və sürücüləri quraşdırın (lazım olduqda). Sürücüləri istehsalçının saytından yükləyə bilərsiniz FT232RL– ftdichip.com. Sürücüləri yükləməlisiniz VCP(virtual com port). Sürücüləri quraşdırdıqdan sonra kompüterinizdə virtual serial port görünməlidir.


Qoşulur RXTX müvafiq pinlərə çıxış edir USART1 mikro nəzarətçi. RX adapteri birləşdirin TX mikro nəzarətçi (A9). TX adapteri birləşdirin RX mikro nəzarətçi (A10). USART-USB 3.3V güc çıxışına malik olduğundan, biz lövhəni ondan enerji ilə təmin edəcəyik.

Mikrokontrolleri proqramlaşdırma rejiminə keçirmək üçün pinləri təyin etməlisiniz BOOT0BOOT1 istədiyiniz vəziyyətə gətirin və düymə ilə yenidən başladın Sıfırlayın və ya mikro nəzarətçinin gücünü söndürüb yandırın. Bunun üçün tullananlarımız var. Fərqli birləşmələr mikrokontrolleri müxtəlif rejimlərə məcbur edir. Bizi yalnız bir rejim maraqlandırır. Bunu etmək üçün mikro nəzarətçi var BOOT0 bir məntiqi və çıxış olmalıdır BOOT1- məntiqi sıfır. Lövhədə bu, aşağıdakı jumper mövqeyidir:

Düyməni basdıqdan sonra Sıfırlayın və ya gücü ayırıb birləşdirən mikrokontroller proqramlaşdırma rejiminə daxil olmalıdır.

Firmware proqram təminatı

Əgər USB-UART adapterindən istifadə etsək, port adı belə olacaq /dev/ttyUSB0

Çip məlumatı alın

Nəticə:

Çipdən dump.bin faylına oxuyuruq

sudo stm32flash -r dump.bin /dev/ttyUSB0

Çipə yazın

sudo stm32flash -w dump.bin -v -g 0x0 /dev/ttyUSB0

Nəticə:

Stm32flash 0.4 http://stm32flash.googlecode.com/ Ayrışdırıcıdan istifadə: Raw BINARY İnterfeys serial_posix: 57600 8E1 Versiya: 0x22 Seçim 1: 0x00 Seçim 2: 0x00 Cihaz ID: 0x0410 (Orta-01b RAM: ehtiyat: 2K) bootloader) - Flash: 128KiB (sektor ölçüsü: 4x1024) - Variant RAM: 16b - Sistem RAM: 2KiB Yaddaşa yaz Yaddaşın silinməsi Yazılı və təsdiqlənmiş ünvan 0x08012900 (100.00%) Tamamlandı. 0x08000000 ünvanında icraya başlayır... tamamlandı.

Windows üçün ST-Link proqramçısından istifadə edən STM32 proqram təminatı

Bir proqramçı istifadə edərkən ST-Link nəticələr BOOT0BOOT1 istifadə edilmir və nəzarətçinin normal işləməsi üçün standart vəziyyətdə olmalıdır.

(Rus dilində kitab)

STM32 işarəsi

Cihaz ailəsiMəhsul növüCihaz alt ailəsiPin sayıFlash yaddaş ölçüsüPaketTemperatur diapazonu
STM32 =
ARM əsaslı 32 bitlik mikrokontroller
F = Ümumi təyinatlı
L = Ultra aşağı güc
TS=Toxunma ekranı
W = çip üzərində simsiz sistem
60 = multitouch müqavimətli
103 = performans xətti
F = 20 pin
G = 28 pin
K = 32 sancaq
T = 36 pin
H = 40 pin
C = 48/49 sancaqlar
R = 64 pin
O = 90 pin
V = 100 pin
Z = 144 pin
I = 176 pin
B = 208 pin
N = 216 sancaqlar
4 = 16 Kbayt Flash yaddaş
6 = 32 Kbayt Flash yaddaş
8 = 64 Kbayt Flash yaddaş
B = 128 Kbayt Flash yaddaş
Z = 192 Kbayt Flash yaddaş
C = 256 Kbayt Flash yaddaş
D = 384 Kbayt Flash yaddaş
E = 512 Kbayt Flash yaddaş
F = 768 Kbayt Flash yaddaş
G = 1024 Kbayt Flash yaddaş
I = 2048 Kbayt Flash yaddaş
H = UFBGA
N = TFBGA
P = TSSOP
T = LQFP
U = V/UFQFPN
Y = WLCSP
6 = Sənaye temperatur diapazonu, –40…+85 °C.
7 = Sənaye temperatur diapazonu, -40…+ 105 °C.
STM32F103 C8 T6

Yazmaq/oxumaq mühafizəsini necə aradan qaldırmaq olar?

STM32F103 ilə lövhə almısınızsa, lakin proqramçı onu görmürsə, bu, çinlilərin mikrokontrolörün Flash yaddaşını qoruduğunu göstərir. “Niyə?” sualı bunu görməməzliyə vuraq. Bloklamanı aradan qaldırmaq üçün bir UART adapterini bağlayacağıq və onun vasitəsilə proqramlaşdıracağıq. Proqramlaşdırma üçün tullananları təyin edirik və yola düşürük:

Mən bunu Ubuntu-dan stm32flash yardım proqramından istifadə edəcəyəm.

1. Mikrokontrolörün görünüb-görünmədiyini yoxlayın:

Sudo stm32flash /dev/ttyUSB0

Bu kimi bir şey almalısınız:

Stm32flash 0.4 http://stm32flash.googlecode.com/ İnterfeys serial_posix: 57600 8E1 Versiya: 0x22 Variant 1: 0x00 Seçim 2: 0x00 Cihaz ID: 0x0410 (Orta sıxlıq) - RAMB:20 (rezerv yaddaş:Koter2) 128KiB (sektor ölçüsü: 4x1024) - Seçim RAM: 16b - Sistem RAM: 2KiB

2. Oxumaqdan qorunmanı çıxarın və sonra yazmadan qorunma:

SUDO STM32Flash -K / DEV / TTYUSB0 STM32Flash.Googlecode.com/ Interface Serial_PoSix 512b bootloader tərəfindən qorunur) - Flash: 128KiB (sektor ölçüsü: 4x1024) - Variant RAM: 16b - Sistem RAM: 2KiB Read-UnProtecting flash Bitdi.

sudo stm32flash -u / dev / ttyusb0 stm32Flash.googlecode.com/ Interface Serial_PoSix 512b bootloader tərəfindən qorunur) - Flash: 128KiB (sektor ölçüsü: 4x1024) - Variant RAM: 16b - Sistem RAM: 2KiB Yazmağa qarşı qoruyucu flaş Bitdi.

İndi mikro nəzarətçi ilə normal işləyə bilərsiniz.

STMicroelectronics-dən satılan proqramçıya evdə hazırlanmış və sərfəli alternativ. İnternetdə tapılan bir neçə məqalə və diaqramdan bir çıxarış və məcmuədir. Mümkün olan ən kiçik forma faktorunda həyata keçirmə.

Hər hansı bir quraşdırılmış proqram tərtibatçısının istifadə etdiyi cihazlar üçün proqramçı olmalıdır. Mənim vəziyyətimdə STMicroelectronics-dən mikrokontrollerlər, həmçinin Milandr (ARM nüvəsinə əsaslanan rus prosessorları).

Bu cihazın alınması çox baha başa gəlir, xüsusən də komponentlərin qiyməti ilə müqayisədə - çap elektron lövhəsi və radio komponentləri.

Qərara alındı ​​ki, proqramçı özümüz hazırlayaq. Əsas müxtəlif MK-lar üçün sazlama lövhələrinin sxemləri idi, nəticə yalnız stm32 üçün deyil, həm də stm8 və hətta Milanda çipləri üçün tam funksional debug modulu idi (indiyə qədər yalnız K1986BE92-də sınaqdan keçirilmişdir, amma düşünürəm ki, başqaları da tikiləcək və sazlanmış).

  • Əsas funksiyalar:
  • STM32 proqramlaşdırma və sazlama;
  • STM8 proqramlaşdırma və sazlama;

proqramlaşdırma və ayıklama ARM Milander.

  • Proqramlaşdırma interfeysləri:
  • SWD - 4 MHz-ə qədər;
  • JTAG;

Üzmək.

Proqramçının özünü yuxarıdakı fotoda görmək olar. Lövhə boyunca uzanan tellər, lazımi LED-in olmaması (solda) və onlara enerji vermədən lövhələri proqramlaşdırma ehtiyacı ilə əlaqəli sonrakı dəyişikliklərdir (sağda).

MicroUSB kompüterə qoşulmaq üçün konnektor kimi istifadə olunur; seçim yalnız mini qardaşı ilə müqayisədə müasirliyinə görə edilib. Mənim özümdə mini var lövhədə, mən yığanda daxil olan mikro mövcud deyildi.

Quraşdırıldıqdan və qısa qapanmanı yoxladıqdan sonra cihazı kompüterə qoşuruq və proqramçının naməlum cihaz kimi müəyyən edilməsindən başqa heç bir şeyin baş vermədiyini görürük, səbəb proshivkanın olmamasıdır.

Əməliyyatı təmin etmək üçün proqramı mikrokontrollerə yandırmaq lazımdır, bunun üçün bizə usb-uart adapter, yükləyici və proqram təminatı lazımdır.

Kommunal proqram və adapterdə problem yoxdursa, yükləyici ilə hər şey bir qədər fərqlidir - çünki sazlama lövhələrindəki kontrollerlərdəki proqram təminatının oxunması bloklanıb və mən onu çıxara bilmədim. Xoşbəxtlikdən biz internetin mövcud olduğu müasir dünyada yaşayırıq.

Həll çoxlu forumlardan birində tapıldı - ikili proqram təminatı. Düzdür, bir problem var idi, nəzarətçini yandırdıqdan sonra proqramçı aşkar edildi, lakin işləmək istəmədi, lakin st-link yardım proqramı vasitəsilə asanlıqla yanıb-söndü, lazımsız hər şeyi çıxararaq, firmware faylını təmizləmək qərara alındı, yalnız yükləyicinin özünü tərk edir.

Təxmin etdiyiniz kimi, hər şey düzəldi və indi yükləyici götürülə bilər.

Doldurmaq üçün biz P1 konnektorundan istifadə edirik, pinlər 3 və 4-ü bir-birinə bağlıdır, mikrokontrolleri usart1 vasitəsilə yükləmə rejiminə keçirik. Uart adapterlərini birləşdiririk və USB konnektoru vasitəsilə proqramçı lövhəsinə enerji veririk.

Köməkçi proqramda istifadə etmək üçün seriya portunu seçin və qalan təlimatlara əməl edin. Bu prosesi şəkillərdə təsvir etməyin mənası yoxdur - hər şey olduqca mənasızdır.

Az adam bilir, xüsusən də STM32 mikrokontrollerlərini öyrənməyə yeni başlayanlar, onların xüsusi proqramçı olmadan proqramlaşdırıla biləcəyini bilirlər. Yalnız daxili yükləyici vasitəsilə nəzarətçi yükləmə rejimini seçmək, UART vasitəsilə qoşulmaq və tələb olunan kodu yazmaq lazımdır.

İndi hər şey haqqında daha ətraflı. Əksər STM32 nəzarətçiləri UART, SPI, I2C və CAN protokollarından istifadə edərək işləyən xüsusi yaddaş sahəsində quraşdırılmış (silinməyən) yükləyiciyə malikdir. Təbii ki, ən asan yol UART vasitəsilə işləməkdir, çünki... Elektronika ilə məşğul olan demək olar ki, hər kəs var, buna görə də bunu nəzərdən keçirəcəyik.

Nəzarətçinin yükləndiyi yaddaş sahəsinin seçimi BOOTx ayaqlarına aşağı və ya yüksək səviyyə tətbiq etməklə həyata keçirilir (bir və ya bir neçə ola bilər). Müəyyən bir nəzarətçidə yükləyicinin necə seçiləcəyi haqqında daha çox məlumat üçün AN2606-a baxın. AN2606 həmçinin proqramlaşdırma üçün hansı nəzarətçi interfeysinin istifadə oluna biləcəyini müəyyənləşdirir. Həmçinin, nəzarətçiyə kod yazmaq üçün ST veb saytından STM32 FlashLoader Demonstrator adlı kiçik proqrama ehtiyacınız olacaq.

Yaxşı, bu bilikdən necə istifadə edəcəyinizi başa düşmək üçün STM32F103C8T6B ilə bir lövhə proqramlaşdıraq.

Lövhədə nəzarətçi yükləmə rejimini təyin etmək üçün keçidlər var. Təəssüf ki, onlar imzalanmayıb, buna görə də yuxarıdakı fotoşəkilə baxırıq və onları eyni şəkildə quraşdırırıq. BOOT0-nı "1" və BOOT1-ni "0" olaraq təyin etmək, AN2606-da qeyd edildiyi kimi, quraşdırılmış yükləyicini aktivləşdirəcək. İndi enerjini, həmçinin RX və TX siqnal xətlərini birləşdirə bilərsiniz. RX və TX xətlərinin çarpaz şəkildə bağlandığını unutmayın:

RX<--->TX

TX<--->RX


Sonra FlashLoader Demonstrator proqramını işə salın. istədiyiniz COM portunu seçin və növbəti düyməsini basın. Hər şey düzgün bağlanarsa, bağlı nəzarətçinin 64 KB yaddaşa malik olduğu və oxumaqdan qorunmadığı barədə bir mesaj alırıq.


Next düyməsini basın. Kontrollerdə mövcud olan yaddaş səhifələri ilə bir vərəq açılır, bizi maraqlandırmır, yenidən növbəti düyməsini basın. Nəzarətçidə hərəkətləri seçmək imkanı ilə bir səhifə açılır:
  • Silmək (silmək)
  • Cihaza endirin (MK-ya proqram təminatını yükləyin)
  • Cihazdan yükləyin (MK-dan proqram təminatını oxuyun)
  • Flaş qorumasını aktivləşdirin/deaktiv edin (flash yaddaşın qorunmasını aktivləşdirin/deaktiv edin)
  • Seçim baytlarını redaktə edin (yaddaşın qorunmasının redaktəsi)

Üç nöqtəyə vurun, “test_stm.hex” faylımızı seçin, yükləmənin düzgünlüyünü yoxlamaq üçün “Aster yükləməsini yoxlayın” yanındakı qutuyu işarələyin, həmçinin “İstifadəçi proqramına keçin” ki, MK dərhal icra etməyə başlasın. yükləmə prosesi başa çatdıqdan sonra yüklənmiş proqramı.