S32K 入力キャプチャ こんにちは、チーム S32K146 マイクロコントローラを使用していますが、入力キャプチャピンとしていずれかの入力ピンが必要です。どのモジュールで構成すればよいか教えていただけますか? FTM を信号測定として使用した場合、入力キャプチャ機能を実現できますか?それともic_pal機能を使うべきでしょうか? サポートをお願いします ありがとう シュルティ C Re: S32K Input Capture こんにちは、ペトルさん。 INT_SYS_InstallHandler(FTM0_Ch0_Ch1_IRQn, PWM_InputCapture_IRQHandler, NULL);関数はデフォルトのハンドラーを取得しており、このハンドラーFTM0_Ch0_Ch1_IRQnを取得していないため、使用できません。 私の設定は /* flexTimer_ic_1 InitConfig のグローバル設定 */ ftm_user_config_t flexTimer_ic_1_InitConfig = { { true , /* ソフトウェアトリガー状態 */ false , /* ハードウェアトリガー1の状態 */ false , /* ハードウェアトリガー2の状態 */ false , /* ハードウェアトリガー3の状態 */ false , /* 最大積載ポイント状態 */ false , /* 最小積載ポイント状態 */ FTM_SYSTEM_CLOCK、 /* INVCTRLレジスタの更新モード */ FTM_SYSTEM_CLOCK、 /* SWOCTRLレジスタの更新モード */ FTM_SYSTEM_CLOCK, /* OUTMASKレジスタの更新モード */ FTM_SYSTEM_CLOCK, /* CNTINレジスタの更新モード */ false , /* トリガーの自動クリア */ FTM_UPDATE_NOW, /* 同期ポイント */ }, FTM_MODE_INPUT_CAPTURE, /* FTMの動作モード */ FTM_CLOCK_DIVID_BY_1, /* FTMクロックプリスケーラ */ FTM_CLOCK_SOURCE_SYSTEMCLK, /* FTMクロックソース */ FTM_BDM_MODE_11, /* FTMデバッグモード */ false , /* 割り込み状態 */ false /* 初期化トリガー */ }; /* flexTimer_ic_1 の入力キャプチャ設定 */ ftm_input_param_t flexTimer_ic_1_InputCaptureConfig = { 1U , /* チャネル構成の数 */ 65535U , /* 最大カウント値 */ flexTimer_ic_1_InputCaptureChannelConfig /* チャンネル設定*/ }; /* flexTimer_ic_1 入力キャプチャのチャネル構成構造体 */ ftm_input_ch_param_t flexTimer_ic_1_InputCaptureChannelConfig [ 1 ] = { { 0U , /* チャネルID */ FTM_SIGNAL_MEASUREMENT, /* 入力キャプチャ操作モード */ FTM_RISING_EDGE, /* エッジアライメントモード */ FTM_FALLING_EDGE_PERIOD_MEASUREMENT, /* 信号測定操作タイプ */ 0U , /* フィルター値 */ false , /* フィルターの状態(有効/無効) */ true , /* 連続測定状態 */ NULL, /* チャネルイベント情報のコールバックパラメータのベクトル */ NULL /* チャネルイベント情報のコールバックのベクター */ } }; Re: S32K Input Capture こんにちは、
はい、それらの機能で十分なはずです。SDK ドライバは FTM チャネル割り込みを有効にするので、起動時から適切なハンドラーを割り当てる必要があると思います。正しくない場合、ハンドラーは FTM0_Ch0_Ch1_IRQHandler になります。
キャプチャされた値を取得するには、FTM_DRV_GetInputCaptureMeasurement が呼び出されます。
BR、ペトル Re: S32K Input Capture こんにちは、ペトルさん。 分かりやすく説明していただき、ありがとうございます。 これらの関数を使用してFTMピンを入力キャプチャとして初期化できますか? `FTM_DRV_Init()` `FTM_DRV_InitInputCapture()` パルス発生を捕捉するためのIRQハンドラをインストールする `INT_SYS_InstallHandler(FTM0_Ch0_Ch1_IRQn, PWM_InputCapture_IRQHandler, NULL)` サポートをお願いします ありがとう シュルティ C Re: S32K Input Capture こんにちは、
最も一般的で効率的な方法は、FTM を入力キャプチャ モードで設定し、FTM 機能を持つピンを使用することです。各 FTM チャネルは入力キャプチャ モードに設定でき、入力信号のエッジ (立ち上がり、立ち下がり、またはその両方) でタイマー値をキャプチャします。これは通常、信号周期、パルス幅、周波数の測定に使用されます。
IC PAL ドライバを使用すると、入力信号を検出し、チャネル入力信号のパルス幅または周期を測定できます。FTM、eMIOS、FLEXPWM、ETIMER をサポートするすべてのプラットフォームと IP 間でポータブルになるように設計されています。
SO、完全な制御とパフォーマンスが必要な場合は、FTM を直接使用してください。よりシンプルなコードと移植性が必要な場合は、IC PAL を使用してください。
BR、ペトル
Re: S32K Input Capture こんにちは、
直接参照できる SDKs の例があります (ftm_signal_measurement)。 または、問題を示す簡略化されたプロジェクトを共有します。
BR、ペトル Re: S32K Input Capture こんにちは、 SDK の例では、直接参照しました (ftm_signal_measurement)。 この例では割り込み方法は使用されず、ポーリング方法が使用され、その後FTM_DRV_GetInputCaptureMeasurementが呼び出されました。 割り込みによる FTM 信号測定を探しています。入力キャプチャが信号を認識すると、割り込みがトリガーされ、 ISR で FTM_DRV_GetInputCaptureMeasurement 関数が呼び出されます。 これのコードを提供してもらえますか ありがとう シュルティ C Re: S32K Input Capture こんにちは、
ハンドラーを再度インストールする必要がある場合は、
外部void FTM0_Ch0_Ch1_IRQHandler(void);
INT_SYS_InstallHandler(FTM0_Ch0_Ch1_IRQn、FTM0_Ch0_Ch1_IRQHandler、NULL);
BR、ペトル Re: S32K Input Capture こんにちは、 はい、その関数は定義されていますが、その後関数呼び出しは無限ループに入り、さらに実行されます。 システム全体が機能しなくなる、 ありがとう シュルティ C Re: S32K Input Capture こんにちは、 サポートありがとうございます。コードスニペットも確認させていただきます。 T&R、 シュルティ C Re: S32K Input Capture こんにちは、 割り込み対応FTMピンへの入力を入力キャプチャとして取得できますか? よろしくお願いします。 シュルティ C Re: S32K Input Capture こんにちは、
ドライバはキャプチャ イベント情報に割り込みを使用していますが、例では直接示されていません。 FTM IC 設定を変更して、ワンショット モードを使用し、ドライバ割り込みから呼び出されるコールバックを追加しました。
ftm_signal_measurement_s32k146 デモの変更された main.c については、添付ファイルを参照してください。
BR、ペトル
記事全体を表示