Tampaknya Arduino Due (32-bit, 84 Mhz, ARM-Cortex-M3 berbasis SAM3X8E) dirilis hari ini.
Selain itu, jelas ada segudang prosesor dalam kategori ini (32-bit / 48-96 Mhz / ARM) serta papan prototipe yang sesuai:
- NXP LPC1768 / mBed
- STM32 / Penemuan
- PIC32 / ChipKit
- PIC32 / Parallax Propeller
- LM4F120 / TI Launchpad
- dll.
Saya mencoba memahami daya tarik mikroprosesor "di antara" ini, yang bagi saya tampaknya terletak di antara AVR / MSP430 / etc low-end. (pro: murah, daya rendah, tapak kecil) dan ARM7 high-end / etc (pro: mampu instruksi jauh lebih besar per detik).
Dalam situasi atau cara apa mikroprosesor berbasis 32-bit / 48-96 Mhz / ARM merupakan pilihan yang cocok? Lebih khusus, saya bertanya-tanya dalam aplikasi apa atau di mana parameter mereka akan membuat untuk pilihan yang unggul selama desain, baik mikrokontroler 8-bit low-end atau prosesor ARM7 yang sangat high-end.
Jawaban:
Ini adalah salah satu mata pelajaran yang bisa menjadi sangat diperdebatkan. Ada begitu banyak sudut pandang yang berbeda, dan berbagai hal penting bagi orang yang berbeda. Saya akan mencoba memberikan jawaban yang komprehensif, tetapi memahami bahwa akan selalu ada seseorang yang tidak setuju. Hanya mengerti bahwa mereka yang tidak setuju dengan saya salah. (Hanya bercanda.)
Ringkasan Cepat:
Jawaban ini akan panjang, jadi izinkan saya merangkumnya di depan. Bagi sebagian besar orang, chip ARM Cortex-M0 / M3 / M4 terbaru menawarkan solusi terbaik, fitur terbaik untuk biaya. Ini bahkan benar ketika membandingkan MCU 32-bit ini dengan leluhur mereka 8 dan 16 bit seperti PIC dan MSP430s. M0 dapat dibeli dengan harga kurang dari US $ 1 / masing-masing dan M4 dengan harga kurang dari US $ 2 / masing-masing kecuali untuk aplikasi yang sangat sensitif terhadap harga solusi ARM sangat bagus. M0 adalah daya yang sangat rendah dan harus cukup baik bagi kebanyakan orang. Bagi mereka yang sangat peka daya, MSP430s mungkin masih menjadi pilihan yang lebih baik, tetapi M0s layak dipertimbangkan bahkan untuk aplikasi ini.
Jika Anda tertarik pada analisis yang lebih mendalam maka bacalah, jika tidak, Anda bisa berhenti membaca sekarang.
Sekarang saya akan melihat setiap area dan membandingkan MCU yang berbeda:
Kecepatan Eksekusi
Tentu saja MCU 32-bit akan lebih cepat. Mereka cenderung memiliki kecepatan clock yang lebih cepat, tetapi juga melakukan lebih banyak pekerjaan untuk masing-masing jam tersebut. MCU seperti ARM Cortex-M4 termasuk instruksi pemrosesan DSP, dan bahkan dapat memiliki dukungan floating point di perangkat keras. 8 dan 16 bit CPU dapat beroperasi pada angka 32-bit, tetapi tidak efisien dalam melakukan hal itu. Melakukannya akan dengan cepat mengkonsumsi register CPU, siklus jam CPU, dan memori flash untuk penyimpanan program.
Kemudahan Pembangunan
Menurut pendapat saya, ini adalah alasan paling berharga untuk menggunakan MCU 32-bit modern - tetapi juga yang paling kurang dihargai. Biarkan saya membandingkan ini dulu dengan PIC 8-bit. Ini adalah perbandingan kasus terburuk, tetapi juga yang terbaik untuk menggambarkan poin saya.
PIC yang lebih kecil pada dasarnya mengharuskan pemrograman dilakukan dalam bahasa assembly. Benar, ada kompiler C yang tersedia bahkan untuk PIC 8-bit tetapi kompiler itu gratis atau bagus. Anda tidak bisa mendapatkan kompiler yang baik dan gratis. Versi gratis dari kompiler lumpuh karena optimasinya tidak sebagus versi "Pro". Versi Pro sekitar US $ 1.000 dan hanya mendukung satu keluarga chip PIC (8, 16, atau 32 bit chip). Jika Anda ingin menggunakan lebih dari satu keluarga maka Anda harus membeli salinan lain seharga US $ 1.000. Versi "Standar" dari kompiler melakukan optimasi tingkat menengah dan biaya sekitar US $ 500 untuk setiap kelompok chip. PIC 8-bit lambat oleh standar modern dan membutuhkan optimasi yang baik.
Sebagai perbandingan, ada banyak kompiler C yang bagus untuk ARM MCU yang gratis. Ketika ada batasan, batasan tersebut biasanya pada ukuran maksimum Memori Flash yang didukung. Pada alat Freescale Codewarrior batas ini adalah 128Kbytes. Ini banyak bagi kebanyakan orang di forum ini.
Keuntungan menggunakan kompiler C adalah Anda tidak perlu repot (sebanyak) dengan detail level rendah dari peta memori CPU. Paging pada PIC sangat menyakitkan dan sebaiknya dihindari jika memungkinkan. Keuntungan lain adalah bahwa Anda tidak perlu repot dengan kekacauan menyerahkan angka 16 dan 32 bit pada MCU 8-bit (atau angka 32 bit pada MCU 16-bit). Meskipun tidak terlalu sulit untuk melakukan ini dalam bahasa assembly, itu adalah rasa sakit di bagian belakang dan rentan kesalahan.
Ada kompiler non-ARM C lain yang bekerja dengan baik. Kompiler MSP430 tampaknya melakukan pekerjaan yang masuk akal. Alat PSoC Cypress (terutama PSoC1) bermasalah.
Model Memori Datar
MCU yang memiliki RAM / register / Flash halaman hanya bodoh. Ya, saya berbicara tentang PIC 8-bit. Bodoh, bodoh, bisu. Itu membuat saya sangat tidak senang dengan PICs sehingga saya bahkan tidak repot-repot melihat barang-barang baru mereka. (Penafian: ini berarti bahwa PIC baru mungkin ditingkatkan dan saya tidak tahu itu.)
Dengan MCU 8-bit sulit (tetapi bukan tidak mungkin) untuk mengakses struktur data yang lebih besar dari 256 byte. Dengan MCU 16-bit yang ditingkatkan menjadi 64 kbytes atau kword. Dengan MCU 32-bit yang mencapai hingga 4 gigabytes.
Kompiler C yang baik dapat menyembunyikan banyak hal ini dari programmer (alias You), tetapi meskipun demikian itu mempengaruhi ukuran program dan kecepatan eksekusi.
Ada banyak aplikasi MCU yang ini tidak akan menjadi masalah, tetapi tentu saja ada banyak aplikasi lain yang akan mengalami masalah dengan ini. Sebagian besar masalah seberapa banyak data yang Anda butuhkan (array dan struktur) dalam RAM atau Flash. Tentu saja, ketika kecepatan CPU meningkat, begitu juga kemungkinan menggunakan struktur data yang lebih besar!
Ukuran paket
Beberapa PIC kecil dan MCU 8-bit lainnya tersedia dalam paket yang sangat kecil. 6 dan 8 pin! Saat ini ARM Cortex-M0 terkecil yang saya tahu adalah dalam QFN-28. Sementara QFN-28 cukup kecil untuk sebagian besar, itu tidak cukup kecil untuk semua.
Biaya
PIC termurah adalah sekitar sepertiga harga ARM Cortex-M0 termurah. Tapi itu benar-benar US $ 0,32 vs US $ 0,85. Ya, perbedaan harga itu penting bagi sebagian orang. Tetapi saya berpendapat bahwa kebanyakan orang di situs web ini tidak peduli dengan perbedaan biaya yang kecil.
Demikian juga, ketika membandingkan MCU yang lebih mampu dengan ARM Cortex-M0 / M3 / M4 biasanya ARM Cortex keluar "kira-kira genap" atau di atas. Ketika memperhitungkan hal-hal lain (kemudahan pengembangan, biaya kompiler, dll. Maka ARM sangat menarik.
Ringkasan Kedua
Saya kira pertanyaan sebenarnya adalah: Mengapa Anda TIDAK menggunakan ARM Cortex-M0 / M3 / M4? Ketika biaya absolut sangat penting. Ketika konsumsi daya super rendah sangat penting. Ketika ukuran paket terkecil diperlukan. Ketika kecepatan tidak penting. Tetapi untuk sebagian besar aplikasi tidak ada yang berlaku dan ARM saat ini merupakan solusi terbaik.
Mengingat biayanya rendah, kecuali ada alasan kuat untuk tidak menggunakan ARM Cortex, maka masuk akal untuk menggunakannya. Ini akan memungkinkan waktu pengembangan lebih cepat dan lebih mudah dengan sakit kepala lebih sedikit dan margin desain lebih besar daripada kebanyakan MCU lainnya.
Ada MCU non-ARM Cortex 32-bit lain yang tersedia, tapi saya juga tidak melihat manfaatnya. Ada banyak keuntungan menggunakan arsitektur CPU standar, termasuk alat pengembangan yang lebih baik, dan inovasi teknologi yang lebih cepat.
Tentu saja, hal-hal dapat dan memang berubah. Apa yang saya katakan valid hari ini, tetapi mungkin tidak valid dalam satu tahun atau bahkan sebulan dari sekarang. Kerjakan pekerjaan rumah Anda sendiri.
sumber
David Kessner benar. Saya ingin menambahkan yang berikut ini.
Saya setuju bahwa hari ini ada sedikit alasan untuk tidak menggunakan MCU 32-bit. Saya hanya akan menggunakannya [MCU 8-bit] karena 2 alasan: Saya suka kemudahan paket PDIP (tidak diperlukan solder); Saya sering tidak membutuhkan lebih banyak kekuatan / kompleksitas daripada apa yang dapat ditawarkan MCU 8-bit.
Pemecah kesepakatan sebenarnya adalah alat yang tersedia.
sumber
Kami menggunakan Freescale MCF52259 yang relatif tidak modis, sebuah MCU berkemampuan 32-bit ~ 80Mhz.
Alasan / proses berpikir untuk pilihan tersebut adalah:
Saat ini lebih hemat biaya (dan lebih bijaksana) untuk lebih spesifik / memperluas kemampuan perangkat keras (penyimpanan, kecepatan, IO, dll.) Daripada menghabiskan waktu pengembangan yang berharga untuk mengoptimalkan kode untuk memasuki MCU yang lebih murah / lebih kecil kecuali ruang atau kekuatan adalah masalah besar.
Dalam kasus kami, perangkat itu dua kali lipat dari spesifikasi M.Core untuk setengah harga, pergi ke MCU yang lebih murah hanya akan menghemat uang per papan tetapi menghabiskan banyak waktu pengembangan dan membatasi potensi pengembangan di masa depan tanpa mengubah MCU lagi.
Jika kita membangun satu juta papan, ada baiknya melakukan latihan rekayasa biaya untuk memangkas segalanya, tetapi seperti berdiri, itu tidak sebanding dengan waktu pengembangan.
sumber