Bagaimana cara memulai dengan papan STM32F103C8T6?

10

Saya telah menggunakan MCU AVR 8-bit untuk membangun robot pengikut garis dengan siswa selama beberapa tahun sekarang. Sekarang saya ingin meningkatkan ARM Cortex-M3 karena saya ingin menambahkan beberapa fitur intensif CPU seperti odometry dan sensor fusion.

Persyaratannya adalah:

  • 8 input analog,
  • 4 output PWM,
  • I 2 C,
  • 2 input encoder quadrature,
  • I / O seri,
  • Pemrograman mandiri secara nirkabel tanpa akses fisik ke robot.
  • Multiplatform toolchain + IDE (OS X, Linux, Windows).

Langkah-langkah yang saya ambil sejauh ini adalah:

Saya menggunakan papan berbasis STM32F103C8 ini. Saya percaya MCU ini memiliki semua yang saya butuhkan, termasuk 2 x QEI yang saya rencanakan untuk diimplementasikan dalam perangkat lunak tetapi yang ini kebetulan ada di perangkat keras, begitu hebat:

Saya telah mengikuti ini untuk mengatur toolchain + IDE saya:

Saya telah menemukan bahwa dokumentasi untuk chip ini tersebar di antara sejumlah PDF, yang saya unduh:

Saya juga mengunduh pustaka periferal standar STM32F10x, tetapi pada gilirannya merekomendasikan saya untuk mendapatkan STM32CubeF1 yang lebih baru, yang saya percaya hanya nama pemasaran di atas, jadi saya mendapatkan keduanya:

Akhirnya, saya juga mendapat "Panduan Definitif untuk ARM Cortex-M3" oleh Joseph Yiu, yang saya baca saat saya menunggu papan datang.

Pertanyaan saya adalah:

  1. Saya sedikit kewalahan dengan dokumentasi, untuk sedikitnya, dan saya bahkan tidak yakin saya mendapatkan semuanya. Sebagai contoh, datasheet dan manual referensi menyatakan bahwa chip memiliki 3 timer yang mampu mengkodekan input quadrature. Tapi, saya tidak dapat menemukan dokumentasi register yang mengontrol timer di mana saja di PDF di atas. Apa yang saya lewatkan?

  2. Haruskah saya menggunakan Perpustakaan Peripheral Standar (yang lebih lama?), Atau kubus (yang lebih baru?)? Apa bedanya? Saya mengerti bahwa kedua perpustakaan menyelamatkan saya dari memanipulasi register secara langsung dan merupakan cara yang disarankan untuk dilakukan. Apakah saya benar?

  3. Di mana dokumentasi untuk perpustakaan (di samping komentar doxygen tertanam, yang bagus dan semuanya tetapi saya lebih suka memiliki html / pdf yang dapat dicari)?

  4. Saya memilih Eclipse + GCC ARM + OpenOCD sebagai toolchain saya karena saya menganggap ini adalah satu-satunya pilihan yang akan berjalan pada 3 OS utama tanpa ukuran kode atau batasan lainnya. Apakah ada opsi lain?

jamarju
sumber
2
Halaman 324 dari Referensi Manual memiliki rincian antarmuka encoder menggunakan TIM1 dan TIM8.
Leon Heller
1
Bolehkah saya menyarankan Sistem Tertanam - Bentuk Dunia ARM-Cortex-M3, tetapi dari TI. Juga saya bisa mengkonfigurasi Eclipse + GCC ARM + OpenOCD untuk ubuntu itu agak membosankan, dan tidak terlalu bisa diandalkan setidaknya saya.
Mahendra Gunawardena
1
Solusi ARM-gcc secara umum cukup stabil, dan tentang opsi paling portabel di luar sana. Penekanan cenderung lebih diarahkan pada bangunan yang didorong oleh Makefile atau otomatisasi gedung, sehingga integrasi dengan praktik pengembangan perangkat lunak organisasi yang ada sangat baik. Apa IDE (jika ada) untuk diedit dan mendorong pembangunan eksperimental cenderung menjadi keputusan yang jauh lebih pribadi, dan salah satu yang tidak selalu melihat banyak upaya pengembangan alat yang dilakukan untuk itu. Secara pribadi, hal terakhir yang ingin saya tangani adalah target / toolchain yang mengasumsikan saya akan mengubah IDE hanya untuk bekerja dengannya.
Chris Stratton

Jawaban:

6
  1. Ketika datang ke lembar data mereka memang dibagi. "Manual referensi" adalah deskripsi kompleks tentang cara melakukan sesuatu, konfigurasi, dan pertimbangan terperinci tentang keseluruhan MCU. "Datasheet" di sisi lain hanya deskripsi singkat tentang fitur MCU, pinout, paket dll. Ada juga dokumen yang sangat membantu untuk setiap baris STM32 (F1, 2 ... 7) "Memulai dengan pengembangan perangkat keras STM32F7xxxx MCU" yang memberi Anda banyak informasi jika Anda ingin merancang papan khusus. Dibandingkan dengan AVR, deskripsi register terkadang dikesampingkan dari deskripsi utama bab tertentu.

  2. STM32CubeMX bukan perpustakaan, hanya program yang berguna dari ST, yang memungkinkan Anda untuk mengatur pinout, konfigurasinya, mengatur jam sistem dll dan kemudian, pada akhirnya, menghasilkan kode dan seluruh proyek. Proyek ini dapat dibuat khusus untuk Eclipse (System Workbench for STM32) di mana Anda baru saja mengimpor proyek ini dan Anda siap untuk pergi. Pustaka baru adalah HAL ("lapisan abstraksi perangkat keras") dan mencoba menggunakannya. Itu hal baru dan kadang-kadang sulit untuk menemukan contoh di Internet tetapi jangan mengajarkan siswa Anda teknologi yang sudah ketinggalan zaman. HAL nyaman digunakan dan memiliki dokumentasi, jadi saya pikir ini pilihan yang lebih baik.

  3. Perpustakaan yang mana? Pokoknya itu seharusnya tidak menjadi masalah untuk google mereka, saya pikir.

  4. Bahkan jika Anda hanya ingin menggunakan satu OS (seperti Windows), Eclipse (AC6 = System workbench untuk STM32) adalah - saya pikir - pilihan terbaik. Misalnya, uVision 5 Keil - tapi itu IDE yang benar-benar mengerikan - kekurangan sebagian besar fitur yang harus ditawarkan IDE (refractoring, klik-dan-cari, pengecekan kesalahan yang tepat, menemukan referensi, dan banyak lagi). Jadi, secara keseluruhan, Eclipse adalah satu-satunya pilihan yang masuk akal untuk IDE untuk STM32.

zupazt3
sumber
3
Sebenarnya, Anda dapat menggunakan hampir semua IDE yang dapat dibuat untuk menggerakkan kompiler eksternal.
Chris Stratton