私は、正確にタイミングされたパルス (2 us ~ 1 ms) を生成し、それに続いて連続した ADC 読み取り値のバーストをキャプチャする必要があるプロジェクトに取り組んでいます (以下を参照)。EVKMIMXRT1010 評価ボードを使用して、MCUXpresso で C でコーディングしています。
GPIO を使用してピンをハイに駆動し、タイト ループで待機してからピンをローに駆動して ADC チェーンをトリガーするコードがありますが、これによりプロセッサに不要な負荷がかかり、他の割り込みの影響を受ける可能性があります。理想的には、パルスを開始し、プロセッサが DMA を使用してデータ キャプチャを処理できるようにし、キャプチャされたアナログ データの配列が完了したときに割り込みによって通知したいと思います。
残念ながら、私は最初のハードルで失敗してしまいました。eFlexPWMおよびFLEXIOペリフェラル の両方を確認しましたが、どちらも時間指定の単一パルスを生成することができません (サンプル プロジェクトを使用して PWM パルスのシーケンスを生成しましたが、1 つだけ生成した後に停止する方法がわかりません)。
これが可能かどうか、またSOであれば、設定に必要な特定のペリフェラルレジスタ設定についてどなたか教えていただけませんか?
どうもありがとう。
リチャード
さらに調べてみると、RT1011 では XBARA インターフェースを使用して FLEXIO ペリフェラルから ADC をトリガーする方法がないことがわかりました。したがって、私が提案する解決策は、PIT を使用してパルスを生成し、PIT 割り込みでパルスをオフにして、そこから ADC 変換を開始することです。
こんにちは@Gavin_Jia 、
ご返信ありがとうございます。これについてもう少し考えてみたところ、FLEXIO ペリフェラルを使用できるのではないかと考えました。1 つのタイマー、1 つのシフタ、および 1 つの出力ピンを使用して、1 ビット転送を設定することは可能ですか?
AN12174 を例にして、シフターとタイマーを以下のように設定します。
これはうまくいくと思いますか?
どうもありがとう。
リチャード
こんにちは@RickyCoderさん、
NXP MIMXRTシリーズにご興味をお持ちいただきありがとうございます。
私の知る限り、FlexPWM モジュールはこのような操作には適していません。PWM で ADC をトリガーすることが目的の場合は、このドキュメントの実装を参照できます。この実装では、Val4/5 を構成して ADC をトリガーすることにより、信頼性の高い変換が保証されます。
よろしくお願いします、
ギャビン