Papan STM32 murah + Arduino IDE UPD 08/17/2017

gambar

Ingin meningkatkan proyek Arduino Anda? Jadikan mereka bekerja lebih cepat, membuat pengukuran dan penyesuaian lebih akurat, dan menambahkan bug (tidak dapat dihindari dengan perangkat baru). Maka artikel ini adalah untuk Anda.

Tema Arduino semakin menangkap pikiran umat manusia, tetapi cepat atau lambat kita dihadapkan pada kenyataan bahwa kita kehilangan sesuatu, misalnya, anggaran / ukuran / pin port / kapasitas bit / kinerja ... Seperti kata seorang bijak - “Siapa pun yang mau, dia mencari peluang yang tidak mau mencari alasan. "

Orang-orang baik memahami hal ini, dan perlahan-lahan mulai menempelkan STM32 ke tema Arduino , karena mikrokontroler AVR delapan-bit, yang menjadi basis banyak papan Arduino, tidak selalu dapat mengatasi tugas-tugas.

Ringkasan artikel ini dalam format video:



Oke, kurang lirik dan lebih dekat ke topik. Pada artikel ini, saya akan mempertimbangkan papan debugging murah, yang didasarkan pada mikrokontroler STM32F103C8T6 :

gambar

Sebagai permulaan, mari kita bandingkan parameter utama papan STM32 dan analog harganya - Arduino Nano V3.0:

  • Frekuensi operasi 72 MHz, dibandingkan 16 untuk arduino;
  • Jumlah memori Flash adalah 64 Kbytes, melawan 32;
  • RAM, itu adalah RAM (di mana variabel disimpan), STM32 memiliki sebanyak 20 Kbytes, arduinka hanya memiliki 2;
  • Cepat 12-bit ADC, sedangkan papan Arduino yang menggunakan mikrokontroler AVR (ini biasanya mayoritas) menggunakan 10-bit. Ini berarti bahwa dalam kasus STM32, fungsinya adalah analogRead (*); akan mengembalikan 0..4095 dibandingkan 0..1023, yang dalam kasus pertama mengarah ke pengukuran yang lebih akurat;
  • 16- , 8- Arduino , , analogWrite(*);pwmWrite(*); 0..65535, 0..255. , , ;
  • USB, Arduino 2 ;
  • — 2 3.6( 2 AA ), 2.7...5 ;
  • — 1.9 1.8().

Jelas, papan debugging berbasis STM32 mengungguli Arduino Nano dalam segala hal, kecuali untuk harga, tetapi setuju 10 sen adalah harga yang baik untuk kinerja yang hebat, tetapi tentang periferal yang diisi dengan STM32, saya benar-benar diam tentang nilai DMA. atau jam real-time terintegrasi dalam mikrokontroler.

gambar

Semua ini membuat papan ini sangat menarik dalam segala hal kecuali satu hal - untuk pemula, seperti saya, tema STM32 tampaknya terlalu memakan waktu, ada seluruh situs yang ditujukan untuk memprogram mikrokontroler ini. Tetapi jika Anda berteman dengan STM32 dengan Arduino IDE, maka ambang entri turun ke level yang sangat rendah. Meskipun, seperti yang mereka katakan, "Di setiap tong madu, ada lalat di salep", tetapi lebih dari itu di bawah.

Mari kita mulai menyiapkan papan untuk bekerja dengan Arduino IDE. Hal pertama yang perlu dilakukan adalah mengunggah bootloader khusus ke mikrokontroler, yang akan memungkinkan Anda untuk mem-flash board melalui perangkat keras USB, dan langsung dari lingkungan pengembangan. Untuk melakukan ini, pindahkan pelompat atas (alias "BOOT0"), ke posisi "1":

gambar

Untuk apa jumper BOOT0 dan BOOT1?
, STM32 , (system memory), , USB to UART , ST-Link V2.

image


Selanjutnya kita membutuhkan adaptor dari USB ke UART. Perlu diingat bahwa STM32 adalah logika 3.3V , kompatibilitas dengan 5V tidak dijamin, sehingga disarankan untuk menggunakan USB ke UART, yang memiliki kemampuan untuk memilih mode operasi dengan logika 3.3 / 5V. Saya menggunakan adaptor murah berdasarkan CH340G:

gambar
* seperti yang Anda lihat, pabrikan tidak berbalik dengan mencuci fluks, tentu saja, itu tidak mempengaruhi pekerjaan.

Saya menghubungkan papan ke adaptor USB ke UART sebagai berikut:

G <-> GND;
5V <-> 5V;
PA10 <-> TXD;
PA9 <-> RXD.

gambar
* PA10 / PA9 di papan hanya ditandatangani sebagai A10 / A9 - port ini adalah perangkat keras USART pertama, ada 3 di antaranya di papan, ada juga 2 perangkat keras I2Cs dan 2 SPI.

Demi kenyamanan, saya menyalakan papan dari 5 V, untuk daya dari 3,3 V ada pin "3,3" di papan tulis. Perhatian, 5 V dapat dengan mudah menonaktifkan mikrokontroler , jadi perhatikan koneksi.

Unduh, instal, dan jalankan Flash Loader Demonstrator (tersedia di arsip artikel):

gambar

Pilih nomor port COM adaptor kami, dalam kasus saya COM43, lalu klik "Next":

gambar

Karena saya memiliki mikrokontroler baru, lalat masih tidak duduktidak ada yang menulis apa pun untuk itu (tentu saja, kecuali pabrikan itu sendiri), maka secara default ada perlindungan baca, program memperingatkan kita bahwa jika Anda mengklik tombol "Hapus perlindungan", memori Flash akan dihapus, yaitu, jika ada semacam firmware - dia akan pensiun. Dalam kasus saya, tidak ada yang berguna di sana, jadi saya dengan berani menekan. Kemudian saya melihat yang berikut ini:

gambar

Klik “OK”:

gambar

Karena papan debugging saya didasarkan pada mikrokontroler STM32F103 C8 - ada 64 Kbytes memori Flash, ada juga mikrokontroler CB STM32F103 , di mana ada dua kali lebih banyak Flash.

Kemudian klik "Next":

gambar

Lagi, "Next", dan kita melihat jendela berikut:

gambar

Pilih "Unduh ke perangkat" dan klik "...":

gambar

Ubah jenis file menjadi * .bin dan buka file "generic_boot20_pc13.bin" (juga ada dalam arsip) yang dapat diambil dari proyek STM32duino-bootloader .

Kemudian kita klik tombol "Next", setelah firmware bootloader kita akan melihat lampu hijau:

gambar

Kemudian kita perlu mengunduh, untuk lingkungan pengembangan Arduino IDE, kernel STM32 khusus (itu juga ada di arsip artikel). Ada satu nuansa di sini, pada saat penulisan, kernel tidak berfungsi pada versi lingkungan pengembangan lebih dari 1.6.5 , saya memiliki 1.6.5-r5 yang saya unduh di sini .
Kernel diuji untuk bekerja pada Arduino IDE versi 1.6.9 .

Selanjutnya, unzip konten di My Documents \ Arduino \ hardware:

gambar

Dalam kasus saya, path lengkapnya terlihat seperti ini - “C: \ Users \ RSK \ Documents \ Arduino \ hardware”

Tentu saja, sistem tidak dapat menentukan sistem perangkat, jadi Anda masih perlu menginstal driver di papan tulis. Kita pergi ke folder "My Documents \ Arduino \ hardware \ Arduino_STM32 \ drivers \ win" (atau "drivers \ win", dalam kasus arsip artikel), dan jalankan file "install_drivers.bat" sebagai administrator:

gambar

Setelah itu, jumper atas (itu bahwa "BOOT0"), letakkan di posisi "0" dan hubungkan papan ke komputer melalui kabel microUSB:

gambar

Ini harus didefinisikan dalam manajer perangkat sebagai "Maple DFU" atau "Maple Serial (COM *)":

gambar

Tidak jelas mengapa setelah koneksi pertama papan didefinisikan secara berbeda pada komputer yang berbeda, tetapi bukan itu intinya, kami melanjutkan untuk mengkonfigurasi Arduino IDE.

Kami meluncurkan lingkungan pengembangan, kemudian Tools ->

gambar

Board -> Boards Manager: Di sini Anda perlu menginstal kernel untuk board Arduino Due. Pilih versi terbaru dan klik "Instal":

gambar

Kemudian Alat -> Papan -> "Generik STM32F103C", lalu Varian: "STM32F103C8 (20k RAM. 64k Flash)", Metode Pengunggahan: "STM32duino bootloader", Nomor port COM port-board , secara umum, semuanya seperti pada tangkapan layar:

gambar

Semuanya, papan siap untuk firmware dan pemrograman di lingkungan pengembangan IDE Arduino. Mari kita menjahit beberapa sketsa dari contoh yang "dijahit" ke dalam kernel, buka File -> Folder dengan sketsa -> perangkat keras -> Arduino_STM32 -> STM32F1 -> perpustakaan -> A_STM32_Examples -> Digital -> Blink:

gambar

Klasik "Hello World" dalam dunia mikrokontroler. Kami mengubah PB1 ke PC13, karena LED di papan tulisterhubung ke port ini:

gambar
* Omong-omong, itu menyala pada tingkat rendah pada kaki PC13.

Kami menekan tombol "Unduh", setelah firmware, lingkungan pengembangan akan menampilkan sesuatu seperti:

gambar

"Selesai!
Menyetel ulang USB untuk beralih kembali ke
penyetelan ulang mode runtime mode setelah unduhan: usb_reset: tidak dapat mengatur ulang perangkat, menangkan kesalahan: Tidak dapat menemukan file yang ditentukan. "

Tetapi firmware kemudian berhasil dimuat, meskipun tidak selalu demikian, kadang-kadang IDE Arduino memberikan pesan lain.

Tidak dapat menemukan perangkat DFU
, :

image

«dfu-util — © 2007-2008 by OpenMoko Inc.
Couldn't find the DFU device: [1EAF:0003]
This program is Free Software and has ABSOLUTELY NO WARRANTY»

, .


Mencari perangkat DFU [1EAF: 0003] ...
:

image

«Searching for DFU device [1EAF:0003]…
Assuming the board is in perpetual bootloader mode and continuing to attempt dfu programming...»

, . Arduino Pro Mini.


Dan sekarang tentang "fly in the salep", tentang yang saya tulis di awal artikel, untuk beberapa alasan tidak selalu memungkinkan untuk mem-flash papan di lingkungan pengembangan, bahkan lebih lagi, itu tidak selalu ditentukan oleh komputer. Saya memutuskan ini untuk diri saya sebagai berikut, sebelum mengunduh firmware (sebelum mengklik tombol "Unduh"), saya mengklik "Reset" di papan tulis, dan setelah firmware, saya reboot papan lagi. Dalam hal ini, persentase kemungkinan papan akan dijahit adalah 99%. Tidak jelas mengapa itu bekerja seperti itu, tetapi fakta. Saya pikir cepat atau lambat kusen ini akan diperbaiki, dan semuanya akan secara otomatis reboot sesuai kebutuhan. Dan untuk memperbaikinya lebih cepat, perlu agar komunitas papan debug STM32 yang indah ini tumbuh, jadi bagikan artikel ini dengan teman-teman, terutama teman-teman programmer.

Tentang pinout:

Diklik
, ( ):

image
() www.stm32duino.com/viewtopic.php?p=11137

, :

digitalWrite(PB0, LOW);
analogWrite(PA8, 65535);pwmWrite(PA8, 65535);
analogRead(PA0);
LiquidCrystal lcd(PB0, PA7, PA6, PA5, PA4, PA3);


docs.leaflabs.com/docs.leaflabs.com/index.html Arduino IDE, .

, :
Documents\Arduino\hardware\Arduino_STM32\STM32F1\variants\generic_stm32f103c\board.cpp

, :
  • , analogWrite();pwmWrite(); — PB0, PA7, PA6, PA3, PA2, PA1, PA0, PB7, PB6, PA10, PA9, PA8, , ;
  • , analogRead(); — PB0, PA7, PA6, PA5, PA4, PA3, PA2, PA1, PA0.


. , 1.9 .

, PA12/PA11 D+/D- USB, , , 2- , .


Papan sirkuit:



Terakhir,

gambar

Hai geektimes.ru
//https://github.com/mk90/LiquidCrystalRus

//STM32  !

#include <LiquidCrystalRus.h>

LiquidCrystalRus lcd(PB9, PB8, PB7, PB6, PB5, PB4);

void setup() {
  lcd.begin(16, 2);
  lcd.print("");
  lcd.setCursor(0, 1);
  lcd.print("geektimes.ru");
}

void loop() {
  lcd.setCursor(14, 1);
  lcd.print(millis() / 1000);
}



Tautan:
Arsip ke artikel ;
Portal teman Roger Clark yang didedikasikan untuk porting STM32 , pertanyaan / saran / terima kasih, semua ada di sana;
https://github.com/rogerclarkmelbourne/Arduino_STM32 ;
http://docs.leaflabs.com/docs.leaflabs.com/index.html - proyek inilah yang diambil oleh Roger sebagai dasar, jadi ada banyak hal berguna, meskipun dalam bahasa Inggris;
Arduino IDE versi 1.6.5-r5 dapat diunduh di sini ;
Artikel saya, sampai batas tertentu, bersinggungan dengan teman " STM32 vs Arduino " @RaJa ;
Lembar Data di STM32F103C8T6 ;
Semua publikasi saya di geektimes .

UPD 07/15/2016
Kernel diuji untuk bekerja pada Arduino IDE versi 1.6.9:
geektimes.ru/post/277928/#comment_9532576

PS
Apa lagi yang lupa
:

image

, .

, microUSB :

image

, , .

Source: https://habr.com/ru/post/id395577/


All Articles