これは非常に議論されるようになることができるそれらの主題の一つです。非常に多くの異なる視点があり、異なる事柄は異なる人々にとって重要です。包括的な答えを出そうと思いますが、常に反対する人がいることを理解してください。私に同意しない人は間違っていることを理解してください。(冗談だ。)
概要:
この回答は長くなるので、前もってまとめておきましょう。大多数の人々にとって、最新のARM Cortex-M0 / M3 / M4チップが最高のソリューションとコストに最適な機能を提供します。これは、これらの32ビットMCUをPICやMSP430などの8ビットおよび16ビットの祖先と比較する場合にも当てはまります。M0は1米ドル未満、M4は2米ドル未満で購入できるため、価格に非常に敏感なアプリケーションを除いて、ARMソリューションは非常に優れています。M0は非常に低い電力であり、ほとんどの人にとって十分なはずです。電力に非常に敏感な人にとっては、MSP430がより良い選択かもしれませんが、M0はこれらのアプリケーションでさえ検討する価値があります。
より詳細な分析に興味がある場合は、次に進んでください。それ以外の場合は、ここで読むのをやめてください。
次に、各領域を見て、異なるMCUを比較します。
実行速度
もちろん、32ビットMCUはより高速になります。彼らはより速いクロック速度を持つ傾向がありますが、それらのクロックのそれぞれにより多くの仕事をします。ARM Cortex-M4のようなMCUにはDSP処理命令が含まれており、ハードウェアで浮動小数点をサポートすることもできます。8ビットと16ビットのCPUは32ビットの数値で動作できますが、これを行うのは効率的ではありません。これを行うと、CPUレジスタ、CPUクロックサイクル、およびプログラムストレージ用のフラッシュメモリがすぐに消費されます。
開発のしやすさ
私の意見では、これは最新の32ビットMCUを使用する最も価値のある理由ですが、最も評価されていない理由でもあります。まず、これを8ビットPICと比較します。これは最悪のケースの比較ですが、私のポイントを説明するのにも最適です。
より小さいPICは基本的にプログラミングがアセンブリ言語で行われることを必要とします。確かに、8ビットPICでもCコンパイラを使用できますが、これらのコンパイラは無料または優れています。良質で無料のコンパイラを入手することはできません。コンパイラの無料バージョンは、その最適化が「Pro」バージョンほど良くないという点で不自由です。Proバージョンは約1,000ドルで、PICチップの1つのファミリ(8、16、または32ビットチップ)のみをサポートします。複数のファミリーを使用する場合は、別のコピーを購入して、さらにUS $ 1,000購入する必要があります。コンパイラの「標準」バージョンは、中程度の最適化を行い、チップファミリごとに約US $ 500のコストがかかります。8ビットPICは最新の標準では低速であり、適切な最適化が必要です。
比較すると、無料のARM MCU向けの優れたCコンパイラが多数あります。制限がある場合、それらの制限は通常、サポートされているフラッシュメモリの最大サイズにあります。Freescale Codewarriorツールでは、この制限は128Kバイトです。これは、このフォーラムのほとんどの人にとって十分です。
Cコンパイラを使用する利点は、CPUのメモリマップの低レベルの詳細に(それほど)煩わされる必要がないことです。PICのページングは特に苦痛であり、可能な限り回避するのが最善です。別の利点は、8ビットMCU(または16ビットMCUの32ビット番号)で16ビットと32ビットの番号を処理する煩わしさを気にする必要がないことです。アセンブリ言語でこれを行うのはそれほど難しいことではありませんが、後からの苦痛であり、エラーが発生しやすくなります。
正常に動作する他の非ARM Cコンパイラがあります。MSP430コンパイラは妥当な仕事をしているようです。サイプレスPSoCツール(特にPSoC1)にはバグがあります。
フラットメモリモデル
RAM /レジスタ/フラッシュをページングしているMCUは、愚かです。はい、8ビットPICについて話しています。ばか、ばか、ばか。そのため、PICをあまり気にしなかったので、PICの新しい機能を確認することすらしませんでした。(免責事項:これは、新しいPICが改善される可能性があることを意味し、私はそれを知りません。)
8ビットMCUでは、256バイトを超えるデータ構造にアクセスすることは困難です(不可能ではありません)。64 kbyteまたはkwordに増加する16ビットMCUを使用。最大4ギガバイトの32ビットMCUを搭載。
優れたCコンパイラは、これをプログラマ(別名You)から隠すことができますが、それでもプログラムのサイズと実行速度に影響を与えます。
これが問題にならないMCUアプリケーションはたくさんありますが、もちろんこれに問題がある他の多くのアプリケーションがあります。これは主に、RAMまたはフラッシュで必要なデータ(配列と構造)の量の問題です。もちろん、CPU速度が上がると、より大きなデータ構造を使用する確率も上がります!
小包のサイズ
いくつかの小さなPICと他の8ビットMCUは、本当に小さなパッケージで利用できます。6ピンと8ピン!現在、私が知っている最小のARM Cortex-M0はQFN-28です。QFN-28は、ほとんどの人にとって十分に小さいですが、すべての人にとって十分に小さいわけではありません。
費用
最も安いPICは、最も安いARM Cortex-M0の価格の約3分の1です。しかし、それは実際にUS $ 0.32対US $ 0.85です。はい、その価格差は一部にとって重要です。しかし、私はこのウェブサイトのほとんどの人がそのわずかな費用の違いを気にしていないと思います。
同様に、より多くの機能を備えたMCUをARM Cortex-M0 / M3 / M4と比較すると、通常、ARM Cortexは「ほぼ均等」または上位に出ます。他のもの(開発の容易さ、コンパイラーのコストなど)を考慮に入れると、ARMは非常に魅力的です。
2番目の要約
なぜでしょう:私は、本当の問題があると思いませ ARMのCortex-M0 / M3 / M4を使うのか?絶対的なコストが非常に重要な場合。超低消費電力が重要な場合。最小のパッケージサイズが必要な場合。速度が重要でない場合。しかし、ほとんどのアプリケーションでは、これらのどれも適用されず、ARMが現在のところ最良のソリューションです。
低コストを考えると、ARM Cortexを使用しない正当な理由がない限り、それを使用することは理にかなっています。これにより、他のほとんどのMCUよりも頭痛が少なく、設計マージンが大きくなり、開発時間を短縮して簡単にすることができます。
他にもARM以外のCortex 32ビットMCUを利用できますが、それらの利点もわかりません。標準のCPUアーキテクチャを採用することには、より優れた開発ツールやテクノロジのより迅速な革新など、多くの利点があります。
もちろん、状況は変化する可能性があり、変化します。私の言っていることは今日は有効ですが、今から1年または1か月たっても有効ではない可能性があります。宿題は自分で。