素敵なプロジェクト。ここにいくつかのヒントがありますが、すべてのプロジェクトでこれを一般化するのは難しいでしょう。
計算要件から始めます
これにより、必要なコアの種類とMCUの一般的なパフォーマンスがわかります。周辺機器とは異なり、明らかに外部コンポーネントを使用して拡張することはできないため、これから始めることをお勧めします。
まず、ループ内で大きな整数を使用する重い数学演算を使用しているようです。したがって、あなたが提案したように、ここでは32ビットが有用であるため、ARMは理想的な候補となります。動作周波数については、現在、Arduino MEGA2560(16MHzで動作していると思われます)を使用しており、10ループ/秒を作成できます。100ループ/秒を達成したい場合は、100MHz以上の範囲のCortex-M3 / M4で十分です(概算)。Cortex-M4Fには浮動小数点ユニットがあることに注意してください。
すでに選択範囲を絞り込んでいます。
メモリ要件
これは簡単です。プロトタイプ用にその範囲の中で最も多くのRAM /フラッシュを持っているMCUを選択してください。プロトタイプを検証したら、正確な要件がわかったので、十分なRAM /フラッシュがある同じ範囲からMCUに切り替えます。
アプリケーションが驚くほどのメモリを必要とするわけではないことに注意してください。
今、周辺機器
絶対にADCが必要です。検討している範囲のすべてのMCUにはいくつかのMCUがあるため、有用な基準ではありません。非常に多数のデジタル入出力が必要な場合を除いて、デジタル入出力もありません(これはあなたのケースではないようです)。
DACが必要なようです。ただし、これは実際には簡単に見つけることができないものであり、候補を絞り込みすぎます。そのため、この要件を維持せず、PWMとローパス(実際には確かに許容されます)のままにします。
LCD(後で説明します)以外の通信インターフェースについては言及しません。とにかく、すべてのMCUにはI2C / SPI / UART /があります(必要な場合)。
液晶
MCUにはまったく異なる要件を課すさまざまなソリューションがあるため、これは扱いにくいものです。ただし、MCUによってはLCDを選択しないでください。製品に必要なLCDを選択し、それを効率的に駆動するMCUを選択します。
- キャラクターLCDが必要な場合:MCUの最も簡単で制約の少ないLCDは、シリアルインターフェイス(多くの場合SPI)を介して対話することです。この方法では、あまり多くのPINを使用せず、より小型/安価なMCUを使用でき、速度は問題になりません。
- グラフィックTFT LCDが必要な場合:小さい場合でも、シリアルリンクは適切です。ただし、320x200以上の場合、優れたグラフィカルインターフェイスが必要な場合は、パラレルインターフェイスとの通信を開始します。この場合、何らかのGPIOを使用します(ただし、制御線を少し強打する必要があるため、MCUにより多くの負荷がかかります)か、専用のLCDインターフェイスを備えたMCUを選択します(多くの場合、外部メモリインターフェイス)。この最後のものは、MCUの選択に強い制約を課しますが、他の強い制約はないので...
今、あなたは選ぶ
ST Micro / NXP / Atmel Webサイトにアクセスし、MCU選択ツールを使用します。データシートの読み取りにも多くの時間を費やします。この時間を取ります。無駄ではありません。ここで学習することは、たとえこのプロジェクト専用に使用しなくても有用です。
この時点で、実際に必要なPINの数を確認し、選択したMCU候補の多重化スキームを確認して、必要なすべてのPIN機能を使用できることを確認する必要があります。明らかに、要件を満たすピンの数が最も少ないMCUを使用することをお勧めします(コスト/ PCBの理由により)。
Mouser / Digikeyの価格/可用性を確認してください。ただし、ここで特に高価なものは必要ありません。たぶん5€かそこら。
LCDコントロールに関する最後のこと
LCDの更新はメインループの一部であるようです。すべきではありません。特に、1秒間に100回ループしている場合は役に立ちません。制御ループですべてを計算し、各反復でモーターコマンドを調整しますが、値を更新してメモリのどこかに表示するだけです。次に、優先度の低い別のループで、これ以上重要なことはないときにこの情報をユーザーに表示します。
理想的には、いくつかのタスクの切り替えなどが必要です。実際のOS(実際には、FreeRTOS、Coocox OS、Nuttxなどを検索します。これらは非常に小さく、主にCortex-Mで使用され、必要なマルチタスクメカニズムを提供します)。