私は50マイクロ秒ごとにADC ch03を読み取っています。また、ADCはPDBによってトリガーされ、PDBはTRIGMUXによってトリガーされ、TRIGMUXは50μ秒ごとにFTM0によってトリガーされます。
FTM0からADC割り込み呼び出しへのトリガング後、MCUはADC割り込みに到達するまでに~3.3uSecの時間がかかります。ただし、割り込みレイテンシやAPIを含めて1.5uSec未満のはずです。
なぜ3.3μ秒の時間が近づいているのか、またどうすれば減らせるのか教えていただけますか?
よろしくお願いいたします。
ロヒット
ご回答ありがとうございます。ご理解いただいた通りです。
- ADCクロック周波数:48MHz
- ADCクロックに基づいて、単一のADC変換時間を再計算します。
ADC の総変換時間 = サンプル位相 (SMPLTS + 1) + ホールド (1 サイクル) +
位相を比較します(8b:20、10b:24、12b:28サイクル)+
シングル/最初の連続加算器(5 ADCサイクル + 5バスサイクル) :958.18ナノ秒です。
- PDB 構成を確認します。プリトリガーに余分な遅延がないことを確認します (存在する場合は、タイミングに含めます) :-余分な遅延はありません。
- ISR オーバーヘッドを確認します。ADC ISR エントリで GPIO を切り替えます。画像を参照してください。
紫色:-PWM
黄色:GPIOトグルスイッチ。
こんにちは、
提供された情報だけでは、これ以上コメントするには不十分です。以下に確認すべきヒントを示します。
- ADCクロック周波数(おそらく低すぎる→主な原因)
- サンプル時間を修正し、275 ns 以上である必要があります。最大ADCクロック50MHzの場合、約14ADCKサイクルが得られます。ADCKが遅い場合はさらに増加します。
- ADCクロックに基づいて単一のADC変換時間を再計算します。
ADC の総変換時間 = サンプル位相 (SMPLTS + 1) + ホールド (1 サイクル) +
位相を比較します(8b:20、10b:24、12b:28サイクル)+
単一/最初の連続加算器(5 ADCサイクル + 5バスサイクル)
- PDB構成を確認し、プリトリガーに余分な遅延がないことを確認します(存在する場合は、タイミングに含めます)。
- ISRオーバーヘッドをチェックし、ADC ISRエントリでGPIOを切り替えます。
BR、ペトル
こんにちは、
クロック設定も共有してもらえますか?PCC_ADCレジスタの値は何ですか?
コードのどこにGPIOの切り替えを記述しますか?
この切り替え機能の動作にどれくらい時間がかかるか確認しましたか?
BR、ペトル
GUI上のクロック設定とレジスタ値については、画像を参照してください。
クロック設定も共有してもらえますか?PCC_ADCレジスタの値は何ですか?
コードのどこにGPIOの切り替えを記述しますか?
--> ADC割り込みハンドラ内。
この切り替え機能の動作にどれくらい時間がかかるか確認しましたか?
-->いいえ、私は標準のNXPトグルAPIを使用しています。
こんにちは、
すぐに追加のトグル操作を行った場合、生成されるパルスの長さはどれくらいですか?
これは、測定値3.3μsから差し引くべき時間です。
BR、ペトル
GPIOの即時トグルが380ナノ秒後に発生します。
実際に使っているIDE/ドライバは何ですか?SDKのようです。
--> S32 Design Studio for S32 プラットフォーム
バージョン: 3.5
ビルドID: 220726
RTM 4.0.1
テスト用の簡略化されたプロジェクトを教えてもらえますか?
-->→添付済み
さらに、他のチャネルもADCを読み取るように設定しようとしています。チャネルは設定されていますが、常に0と表示されています。
こんにちは、
実際に使っているIDE/ドライバは何ですか?SDKのようです。
テスト用の簡略化されたプロジェクトを教えてもらえますか?
BR、ペトル
こんにちは、
やっと見えてきました。
コードを見る限り、実際には1μsのPDB遅延を追加しているようです。だからここでは遅らせないでください
レジスタがバッファリングされているため、最後の直接レジスタ書き込みは認識されません。LDOKに書き込む必要があります。
また、ADC割り込みをトグルピンへの直接レジスタアクセスに変更してください
これらの変更とADC SMPLTS=14(変換時間約1.125us)を設定すると、遅延は約1.8usで見られます。変換時間とパルス時間を差し引くと、約600nsのレイテンシがあります。これは、フラッシュから動作するCortex-M0+→NVIC → ISRレイテンシの予想されるADC割り込みと一致している可能性があり、トリガーチェーン自体からではなくCPU例外エントリやフラッシュアクセスから来ている可能性が高いです。
BR、ペトル
やあ、PtrS、
この件に関して、何か成功事例やアドバイスはありますか?
SDKプロジェクトなどからの移植や移行はしましたか?
A:- はい、以前に作成したワークスペースを差分とともに使用しました。私がお渡ししたプロジェクトファイルのSDKです。
確認のために、設定ファイルと初期化関数ファイルのスクリーンショットをお送りしましょうか?
こんにちは、
RTM401がインストールされたS32DS3.5にあなたのプロジェクトをインポートしようとしましたが、実際にはRTM402を使用しているようです。
確かにRTM402で試してみます。
しかし、rtm402はS32DS3.5では使用すべきではありません。https://community.nxp.com/t5/S32-Design-Studio/my-IDE-ver-is-S32DS-3-5-How-can-i-install-S32K1XX-RTM...
SDKプロジェクトなどからの移植や移行はしましたか?
BR、ペトル
SKDの変更により、すべてのプロジェクトでRTMエラーが発生し、プロジェクトが完全に動作しなくなりました。
それ以外に、他の3チャネルを連続で使う設定やソフトウェアトリガーについて教えてもらえますか?
よろしくお願いいたします。
ロヒット