こんにちは、
私は [S32k322] を使って、 eMIOSタイマー を使って100μsごとに BCTU をトリガーし、アナログデータを読み取るアプリケーションを開発しています。
2つのBCTUモード間で奇妙な挙動が見られます。
制御モード: ADC CTUモードを制御モードに設定すると、ADC変換は完全に安定します。FreeMASTERで読み取られたデータは、ノイズや不具合がなく、クリーンなデータです。
トリガーモード: ADC CTUモードをトリガーモードに切り替え(100μsのeMIOSトリガーは同じに)、サンプリングされたアナログデータがノイズが発生し、FreeMASTERで目立つグリッチが現れます。
トリガーモードでこのノイズを防ぐために必要な特定のアーキテクチャ構成、タイミング制約、またはレジスタ設定(トリガー遅延、FIFO構成、クロック同期など)はありますか?
助けてくれてありがとう。
ADC ctuモードでの出力:トリガーモード
Stark__2-1782126491792.png
Stark__0-1782125656766.png
ADC ctuモードでの出力:制御モード
Stark__3-1782126564933.png
Stark__1-1782125738057.png
こんにちは@Stark_
テストプロジェクトを教えていただければ、私が自分の側でテストします。
こんにちは、 @Senlent さん。
ご回答ありがとうございます。私のADCクロックは160MHzです。以下にADCの設定とレジスタ値を添付しました。
クロック
Stark__1-1782196451195.png
ADCの設定
Stark__2-1782196500638.png
Stark__4-1782196672188.png
ADC ctuモードでの出力:トリガーモード
Stark__3-1782196552394.png
ADC ctuモードでの出力:制御モード
Stark__5-1782196875804.png
こんにちは@Stark_
ご提供いただいた設定画面のスクリーンショットに基づくと、いくつかの設定上の問題、特にモジュールクロックとキャリブレーションクロックの分周比に問題があるようです。
ADCクロックの設定は、下記の表に厳密に従う必要があります。
Senlent_0-1782179202962.png
変更して再度テストしてください。
こんにちは@Senlent
テストコードを添付しました。
BCTUの作業と、選ばれた一部のチャンネル(ADC_Instance0とADC_Instance1)の通常の変換は可能でしょうか?
こんにちは、 @Senlentさん
「はい、BCTUと通常の変換の両方で作業することは可能です。」
参考になるサンプルコードはありますか?
また、あなたのプログラムは依然としてADCモジュールのクロックとキャリブレーションクロックの分周器を変更していません。
以下は私のテスト結果です。
ポートを外部からGNDに接続しました。大きな違いは見て取れません。"
修正されたテストプロジェクトを教えていただけますか?私がMysideでテストします。
こんにちは@Stark_
そのようなデモは持っていません。添付ファイルは修正済みのプロジェクトです。
こんにちは@Stark_
はい、BCTUと通常の変換の両方で作業することは可能です。
ご提供いただいたプログラムをテストし、いくつか修正を加えました。あなたの外部クロックは25MHzですが、私の外部クロックは16MHzです。
また、あなたのプログラムは依然としてADCモジュールのクロックとキャリブレーションクロック分周器を変更していません。
以下は私のテスト結果です。
ポートを外部からVDDに接続しました(タイプミスでした)。大きな違いは見て取れません。
Senlent_0-1782359793819.png
Senlent_1-1782359802334.png
こんにちは、 @Senlentさん
修正済みのプロジェクトファイルを添付していただきありがとうございます。テストしてみましたが、私の環境では現在のところ通常のADC変換では動作しません。
しかし、実際のアプリケーションではシステムクロックが 25MHzです。私があなたのプロジェクトに加えた変更は、クロック周波数を16MHzから25MHzに更新したことだけです。
クロックを25MHzに変更し、Adc CTUモードを制御モードに設定した後、通常変換は機能しなくなりましたが、BCTU変換は引き続き機能します。
Adc CTUモードがトリガーモードの場合、通常変換とBCTU変換は引き続き機能します。
添付されたプロジェクトは、 25MHzでBCTUトリガーモードとノーマル変換の両方を同時にサポートする設計ですか?SO、この高い周波数で動作させるために、どんな追加のクロック分割器やプリスケーラー、またはサンプリング時間の設定を調整すればよいでしょうか?
既にテスト結果をお見せしましたが、サンプリング結果の変動は全く正常な範囲内であることに気づかれたはずです。
Senlent_1-1782892390979.png
Senlent_2-1782892398124.png
私の提案は、以前提案したようにサンプリング時間を延ばしてみるのも良いことです。
Senlent_0-1782892370211.png
こんにちは、 @Senlentさん
変換はBCTUモードとノーマルモードの両方で駆動する必要があるため、ADCをトリガーモードを使用するように設定しました。しかし、トリガーモードを使用した場合、前述のようにBCTUを介して測定したADCデータにノイズが見られることに気づきました。
ADC変換がBCTUを介して行われる場合は、BCTU制御モードを使用してください。
ADCが通常/注入変換またはその他のトリガーパスを受け入れるようにするには、トリガーモードを使用します。
BCTU制御モードでは、ADCの開始制御がBCTUのみに制限されます。トリガーモードでは、ADCは通常/注入およびその他のサポートされている変換トリガーに対して開放されます。
つまり、検査結果は期待通りです。