親愛なるサポート、
お客様AptivはS32K358 RTD 5.0.0を使用しています -> 観察:
ADC HW ユニット 2 の SW トリガー グループでは、グループ 4 は ADC HW ユニットで構成されている唯一のグループであり、SW によってトリガーされます。また、ADC HW ユニット 2 には BCTU 経由の HW トリガー用の追加チャネルが 2 つあります。
BCTUレジスタでHWトリガーデータを確認できますが、SWトリガーG4では値0が表示されます(下のスクリーンショットを参照してください)。
SW によってトリガーされるグループ変換の結果は常にゼロであり、ADC ユニット内で競合またはリソースの競合が発生する可能性があることを示しています。
私はお客様に次のアプローチを推奨しました:
下のデバッグウィンドウでは、 ADC_2の場合、 MCR[BCTU_MODE]=0 BCTUのみが変換をトリガーCANことがわかります。
SO、このモードでは SW によってトリガーされる変換は許可されません。RTD ADCユーザーマニュアルによると、このビットを1に設定する必要があります。
4.140 パラメータ BctuGlobalHwTriggers
ベンダー固有: ハードウェア トリガーを有効にして ADC 変換を開始します。無効にすると、BCTUソフトウェアトリガーのみCAN
変換を開始します。
この ADC でソフトウェア トリガー変換を許可するには、それに応じて有効にしてください。BCTU 変換はソフトウェア トリガー グループ変換を中断することに注意してください。
この構成については、リファレンスマニュアルに記載されている動作を考慮してください(グループ変換は通常の変換であり、挿入された変換ではないと想定しています)。
60.3.6.1 BCTUトリガーモード
…
進行中の通常変換中に BCTU トリガーが受信された場合、進行中の通常チャネル変換は中断され、BCTU によってトリガーされた挿入された変換が処理されます。BCTU によってトリガーされた変換が完了すると、中断されたチャネルから通常の変換が再開されます。
BCTU変換中に通常の変換が要求された場合(MSR[BCTUSTART] = 1)、BCTU変換が完了した後に通常の変換が開始されます(MSR[BCTUSTART]はゼロにリセットされます)。
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
しかし、お客様からのフィードバックは(そして私の側でも同じ動作をCANました)
BCTUの設定部分を確認しました(下のスクリーンショットを参照してください)
はい、おっしゃる通りです。ADC_2 : MCR[BCTU_MODE]=0 BCTU のみが変換をトリガー CAN ますが、これはグローバル HW トリガーが有効になっているためでしょうか?
動作をテストするために無効にしましたが、HW トリガーは機能しません。
我々はこれを設定内でのみ有効にしたままにしています。MCR[BCTU_MODE]=0
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
同じ ADC で、a) ハードウェア トリガー BCTU 変換とソフトウェア トリガー変換を並行して実行する方法に関するヒントと構成例を教えていただけますか?
(残念ながら、RTD5.0.0 の例ではこのユースCASEはカバーされていません)
よろしくお願いいたします。
ヴィクトル
こんにちは@nxp52415さん、
私の観点からすると、ADC2 の bctu によってトリガーされるチャネルをハードウェア トリガー グループにCAN構成できます。その後、外部トリガーまたはbctuからのハードウェアトリガーの受信を有効にするには、Adc_EnableHardwareTrigger()関数を呼び出す必要があります(ADC2_MCR[BCTUEN] = 1、ADC2_MCR[BCTU_MODE] = 1を設定します)。
よろしくお願いいたします。
ダン
こんにちは、ダン。
ありがとう、Hwは両方が設定されているAptivのUSE CASEをサポートする必要があると思います
ADC2_MCR[BCTUEN] = 1
ADC2_MCR[BCTU_MODE] = 1
RTD ドライバを使用してこの状態を実現する方法をご存知ですか? RM マニュアルでは、これが ADC でサポートされているモードであることが明確にわかります。
よろしくお願いいたします。
ヴィクトル
こんにちは@nxp52415さん、
1.お客様が Adc_EnableCtuControlMode(AdcHwUnit_2); を呼び出すと、この関数は Adc_EnableCtuControlMode(AdcHwUnit_2); を呼び出し、ADC2_MCR[BCTU_MODE] = 0: BCTU のみが変換をトリガーできる、および ADC2_MCR[BCTUEN] = 1: BCTU をトリガー ソースとして有効にする、の構成を実行します。
その後、 Adc_StartGroupConversion ( AdcGroup_4) を呼び出しても、ADC2_MCR[BCTU_MODE] = 0 のため、ADC_2 へのソフトウェアトリガーは発生しません。
私の観点からすると、 Adc_StartGroupConversion ( AdcGroup_4)を呼び出す前に、ユーザーは
2. GPT タイマーを使用して SW グループをトリガーするために Adc_EnableHardwareTrigger() の使用を提案しているかどうかを確認したいと思います。
=> SW グループは、 Adc_StartGroupConversion() 関数を介したソフトウェア トリガーによってのみトリガーされ、Adc_EnableHardwareTrigger() ではそれができません。Adc_EnableHardwareTrigger() は、ADC_TRIGG_SRC_HW として構成されているグループに対してのみ使用されます。
よろしくお願いいたします。
ダン
こんにちは、ダン。
私はヴィクトルの休暇の代わりをしています。ここでお客様はこう答えました。彼らはまだこれをCANません。
Adc_EnableHardwareTrigger() を使用して SW グループをトリガーするという提案を検討しましたが、この API がソフトウェア構成のグループのトリガーをどのように容易にするのかを完全に理解することはできません。具体的には、SW グループをこの API に明示的に渡す必要があるかどうか、またこのコンテキストでトリガー メカニズムがどのように機能すると予想されるかを明確にしたいと思います。
グループ 4 はトリガー時に変換を開始するはずですが、その状態はIDLE のままであり、ADC 変換が完了していないことがわかります。興味深いことに、異なる ADC ユニットからの他の SW トリガー グループは期待どおりに機能しています。
さらに、このセットアップでは HW トリガー (BCTU 経由) が正しく動作し、BCTU バッファーで有効な変換結果を確認できます。
ADC HWユニット2の構成:
1つのSWグループのみが構成されます。グループ4
背景を詳しく説明すると、現在の実装は次のとおりです。
GPT タイマーを使用して SW グループをトリガーするために Adc_EnableHardwareTrigger() の使用を提案しているかどうかを確認したいと思います。もしSOであれば、これを正しく設定する方法についてご指導いただければ幸いです。
よろしくお願いします。
こんにちは、 @viktorfellingerさん、
1. グローバル HW トリガーを有効にする => このノードは BCTU_MCR[FRZ] (デバッグ フリーズ ビット) の値に影響します。
すべてのハードウェア トリガー入力を無効にしますが、ソフトウェア トリガーは有効のままにします。Debug Freeze は BCTU を外部トリガーから分離し、手動で変換をトリガーして変換結果を読み取ることを可能にします。
0b - 無効にする
1b - 有効にする
=> SO、ユーザーは、すべてのハードウェア トリガー入力を有効にするために、このノードを無効にする必要があります。
2. フローコードと、ADC_MCR[BCTU_MODE]が0になるタイミングを教えてください。
よろしくお願いいたします。
ダン
添付のお客様XDM構成