Cara Kustom untuk Berteman dengan STM32: Bukan Arduino atau Discovery

Untuk semua orang yang menggunakan atau tertarik pada mikrokontroler dari STMicroelectronics , saya ingin mempresentasikan proyek hobi kecil saya.


Baik Habré dan geektimes sudah memiliki banyak artikel yang ditujukan untuk mikrokontroler seri STM32F, misalnya: Papan STM32 murah + IDE Arduino , Mencoba berteman dengan STM32 dan jawabannya Bagaimana cara berteman dengan STM32 dan banyak lainnya. Secara agregat, mereka membahas topik ini dengan sangat baik, tetapi ada satu hal tapi ... Dalam semua artikel ini, papan siap pakai dan satu pengontrol spesifik yang ada di papan ini dipertimbangkan. Dan bagaimana dengan mereka yang ingin bermain dengan pengontrol yang berbeda, dan bahkan di papan tempat memotong roti? Sebagai contoh, banyak papan yang saya kenal dengan pengontrol STM32F4 (STM32F4-Discovery yang sama) tidak dapat dimasukkan ke papan tempat memotong roti. Tapi saya pribadi menginginkan yang seperti ini (perhatian, semua gambar bisa diklik):



Pada saat yang sama, seperti yang sudah saya tulis, saya tidak ingin terhubung ke controller tertentu, tetapi saya ingin dapat dengan mudah menggantinya. Mereka yang tertarik pada bagaimana saya menyadari Wishlist ini tidak cukup biasa, saya meminta kucing.


Pendahuluan (terinspirasi oleh komentar pada artikel, jadi silakan lewati sebelum membacanya)

Apakah atau tidak menggunakan papan tempat memotong roti dengan konektor adalah titik diperdebatkan. Tentu saja, dimulai dengan sejumlah komponen tertentu, mereka menjadi tidak nyaman. Tetapi sementara komponennya tidak terlalu besar, dan jumlah percobaan pada tahap awal prototyping masih besar, papan tempat memotong roti, menurut saya, nyaman. Dan di sini, jika Anda ingin menggunakan STM32, penyergapan menunggu kami - mereka tidak ada dalam paket DIP, tidak seperti Atmega. Anda dapat membeli papan demo yang sudah jadi, tetapi di sini sekali lagi ada penyergapan - sebagian besar papan dengan pengendali yang lebih lama tidak dapat terjebak di papan tempat memotong roti karena sisir ganda . Artinya, dengan menggunakan papan demo yang sudah jadi, kami dipaksa untuk bekerja dengan pengontrol seri yang lebih muda (lihat Nucleo yang sama dalam versi DIP atau Blue Pill ). Cara kedua adalah membuat adaptor khusus. Artikel ini membahas jalan kedua ini.


Segera tunjukkan hasil akhirnya. Ini adalah syal dua sisi kecil untuk kasus yang berbeda, yang pencetakannya dapat dipesan di Kerajaan Tengah (orang Cina tidak menentang pencetakan papan dua sisi dengan desain panel):



Satu set (di sebelah kanan) adalah adaptor sederhana untuk papan tempat memotong roti untuk kasus LQFP32 / 48/64, tetapi set kedua (di sebelah kiri) juga merupakan adaptor, tetapi dengan konektor JTAG, daya, kuarsa frekuensi rendah dan frekuensi tinggi dan tombol reset. Semua pin pengontrol lain ada di sisir. Secara umum, sangat minimum. Sayangnya, konektor JTAG tidak standar, sehingga papan adaptor dari JTAG-20 ke JTAG-10 yang sama ini juga disertakan.


Papan ini cukup mudah disolder oleh pengering rambut di rumah, jadi jika Anda memiliki beberapa pengontrol, beberapa papan, dan komponen pasif berukuran 0805, Anda bisa mendapatkan sesuatu seperti ini dalam waktu yang wajar:



Dan ini, menurut saya, memberikan kebebasan kreativitas yang baik. Jika seseorang tampaknya telah kehabisan topik, maka di sini ada tautan ke repositori github .


Tetapi saya ingin lebih jauh memberi tahu Anda selangkah demi selangkah bagaimana mencapai kehidupan seperti itu. Gambar untuk menarik perhatian (pernyataan grafis masalah):



Ada hamburan kontroler (seri L0, F3, F4), daya, konverter USART-USB, papan tempat memotong roti. Saya ingin mengedipkan LED. Langkah ini dibuat sangat mudah. Kami mengambil controller, kartu adaptor dari set pertama, kami menyolder dengan pengering rambut. Selanjutnya, Anda memerlukan dokumentasi tentang menghubungkan daya, programmer, kuarsa. Di sini ST memiliki urutan lengkap, semuanya ada di halaman dengan dokumentasi pengendali yang dipilih. Misalnya, untuk STM32F303K8 kita hanya perlu satu dokumen: AN4206: Memulai pengembangan perangkat keras seri STM32F3 , di mana ada sirkuit catu daya, osilator, dan pemrogram, berdasarkan di mana Anda dapat membangun model seperti itu:



Pengontrol ini tidak memiliki kuarsa frekuensi rendah eksternal, jadi saya hanya menghubungkan frekuensi tinggi pada 16 MHz. Untuk pemrograman, konektor JTAG-20 standar digunakan, yang dilengkapi dengan programmer standar dari ST ST-LINK / V2 .


Jika Anda menggunakan Linux

Sudah ada driver di kernel, tetapi Anda perlu secara manual menambahkan beberapa aturan ke file /etc/udev/rules.d, lihat misalnya, di sini


Karena artikel ini dikhususkan untuk bagian perangkat keras, saya hanya akan menyebutkan secara singkat bagian perangkat lunaknya. Sistem operasi: Fedora 25. Lingkungan pengembangan: System Workbench untuk STM32 adalah sistem yang sepenuhnya gratis berdasarkan Eclipse dari Komunitas OpenSTM32. Satu-satunya waktu - untuk mengunduh, Anda harus mendaftar di http://www.openstm32.org . Lebih mudah menggunakan utilitas grafis STM32CubeMX untuk memodelkan, mendokumentasikan, dan menghasilkan contoh. Sebagai contoh, konfigurasi pengontrol pada foto di atas terlihat seperti ini:



File dengan skema ini juga ada di dalam repositori. Misalnya, untuk STM32F303K8 lihat di sini


System Workbench untuk STM32 memiliki panduan proyek bawaan yang cukup canggih yang menghasilkan struktur proyek awal, dan secara opsional dapat dimasukkan dalam proyek: perpustakaan pengontrol level rendah (CMSIS), perpustakaan HAL (Lapisan Abstraksi Perangkat Keras), FatFS, FreeRTOS. Saya sendiri menggunakan perpustakaan driver berorientasi objek saya, yang berjalan di atas HAL. Siapa peduli, lihat di sini .


Berikut adalah contoh kode yang menggunakan pustaka ini, yang berkedip LED pada timer (pada interupsi) dan log (melalui konverter USART-USB ke konsol workstation) status penghitung yang terhubung ke jam real-time. Semua ini agak mirip dengan ideologi Arduino, tetapi saya hanya ingin memprogram hal-hal seperti itu sendiri.


Berikut adalah contoh penggunaan pengontrol STM32F410RB yang cukup kuat:



Demikian pula, dokumen utama adalah AN4488: Memulai dengan pengembangan perangkat keras STM32F4xxxx MCU , di mana ada semua skema koneksi yang diperlukan. Dokumen penting kedua adalah AN2867: Panduan desain Oscillator untuk mikrokontroler STM8AF / AL / S dan STM32 , yang merinci diagram koneksi osilator frekuensi tinggi.


Secara alami, terus-menerus memagari skema semacam itu agak memakan waktu, jadi saya memutuskan untuk membuat syal universal yang mungkin berikutnya, yang mewujudkan skema ini. Keserbagunaan dicapai karena fakta bahwa pengontrol seri yang berbeda, tetapi dalam kasus yang sama (misalnya, STM32F303RB dan STM32F410RB, keduanya dalam kasus LQFP64) memiliki kesimpulan yang sama (dengan pengecualian perbedaan kecil dalam rangkaian catu daya). Perbedaan-perbedaan ini menyebabkan ini:



Semua elemen dengan denominasi yang ditandatangani adalah umum untuk pengontrol yang berbeda, tetapi elemen seperti P30, P31, P47, di mana angka tersebut berarti nomor pin, harus dipilih tergantung pada model spesifik. Hasilnya, papan tempat memotong roti akan terlihat seperti ini:



Ini adalah peningkatan kecil.


Proyek di github
Lisensi: Lisensi Publik Umum GNU, Versi 3


Papan sirkuit dan papan sirkuit disiapkan oleh Eagle Cad. DiHalt yang sangat dihormati memiliki serangkaian artikel yang luar biasa tentang sistem ini . Versi gratis Eagle Cad untuk digunakan di rumah dapat diunduh dari situs web resmi .


Saya mengundang semua orang untuk bergabung dengan proyek ini.

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


All Articles