こんにちは、皆さん
現在、 i.MX RT1186を使ってモーター制御プロジェクトに取り組んでいます。
私のアプリケーションでは、eFlexPWMを使ってADC変換をトリガーしています。eDMAを使用して、これらのADC変換結果をメモリ内のリングバッファに継続的に転送したいと考えています。
私の目標は、eDMAを無限に実行させることです。バッファがいっぱいになったら、eDMAポインタは自動的にバッファの先頭に戻り、CPUの介入なしに最も古いデータを上書きし続ける必要があります。
RT1186でこの連続的な円形動作を実現するためにeDMAの設定の標準的な方法について、どなたかアドバイスをいただけませんか?
このユースケースでおすすめできる具体的なSDKsの例やfsl_edma API構成はありますか?
コードスニペットやアドバイスがあれば大変ありがたいです。
ご回答をお待ちしています。
@guogai様、
ご質問ありがとうございます。
現在、MCUXpresso SDKの i.MX RT1180シリーズ向けにADCとeDMAを組み合わせた公式な例は存在しません。
ただし、以下の資料が役立つかもしれません。
あなたのCASEに基づき、以下の提案があります:
ADCの連続/円形サンプリング機能の使用(推奨)
ADC自体は連続変換をサポートしており、結果として最大16サンプルを保存できます。定期的にFIFOを読み、ソフトウェアでフィルタリングを行うことができます。
この方法は比較的シンプルで、実施も容易です。
DMAの循環動作を手動で実装する(高度なオプション)
STM32の「DMAサーキュラーモード」のような挙動を得たい場合は、リファレンスマニュアルに基づいてレジスタを手動で設定する必要があります。