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:
- Board http://eud.dx.com/product/high-quality-cortex-m3-stm32-stm32f103c8t6-development-board-w-swd-interface-844380789
- Programmer http://eud.dx.com/product/st-link-v2-programmer-emulator-mini-stlink-downloader-for-stm8-stm32-mcu-development-board-844380733
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:
- STM32F103x8 datasheet http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/CD00161566.pdf
- Referensi Manual http://www.st.com/st-web-ui/static/active/en/resource/technical/document/reference_manual/CD00171190.pdf
- Beberapa dokumen lain seperti AN2606 (mode boot memori), PM0075 (manual pemrograman flash) dan AN3155 (protokol bootloader serial), yang mungkin saya perlukan di masa depan.
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:
- http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/LN1939/PF257890
- http://www.st.com/web/en/catalog/tools/PF260820
Akhirnya, saya juga mendapat "Panduan Definitif untuk ARM Cortex-M3" oleh Joseph Yiu, yang saya baca saat saya menunggu papan datang.
Pertanyaan saya adalah:
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?
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?
Di mana dokumentasi untuk perpustakaan (di samping komentar doxygen tertanam, yang bagus dan semuanya tetapi saya lebih suka memiliki html / pdf yang dapat dicari)?
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?
sumber
Jawaban:
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.
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.
Perpustakaan yang mana? Pokoknya itu seharusnya tidak menjadi masalah untuk google mereka, saya pikir.
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.
sumber