2252941_ja-JP

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

2252941_ja-JP

2252941_ja-JP

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

こんにちは、

はい、その関数は定義されていますが、その後関数呼び出しは無限ループに入り、さらに実行されます。

Shruthi_C_0-1764752920959.png

システム全体が機能しなくなる、

ありがとう

シュルティ C


Re: S32K Input Capture

こんにちは、

サポートありがとうございます。コードスニペットも確認させていただきます。


T&R、

シュルティ C

Re: S32K Input Capture

こんにちは、

割り込み対応FTMピンへの入力を入力キャプチャとして取得できますか?



よろしくお願いします。

シュルティ C

Re: S32K Input Capture

こんにちは、

ドライバはキャプチャ イベント情報に割り込みを使用していますが、例では直接示されていません。
FTM IC 設定を変更して、ワンショット モードを使用し、ドライバ割り込みから呼び出されるコールバックを追加しました。

PetrS_0-1764845224420.png

ftm_signal_measurement_s32k146 デモの変更された main.c については、添付ファイルを参照してください。

BR、ペトル

标记 (1)
无评分
版本历史
最后更新:
‎12-05-2025 02:23 AM
更新人: