私はS32K364マイクロコントローラのeFlexPWMモジュール(インスタンス IP_EFLEXPWM_0)を使って、入力キャプチャを通じて外部信号の周波数と周期を測定しています。私は サブモジュール2 (SM[2])を使用しています。私の構成は以下の通りです:
SM2_CAPTCTRLB->EDGB0 = 0x02; (キャプチャ回路0の場合、立ち上がりエッジでキャプチャ)
SM2_CAPTCTRLB->EDGB1 = 0x02; (キャプチャ回路1の立ち上がりエッジでのキャプチャ)
SM2_ARMB = 1; (キャプチャー回路をArm)
コードを実行した後、以下のことが確認されました。
で SM2_CAPTCTRLBのカウンタステータスビットは以下を示します。
CB0CNT = 0x4
CB1CNT = 0x4
で SM2_STS 、両方のフラグビットがセットされています。
CFB0 = 1
CFB1 = 1
しかし、取得された値( SM2_CAPTCOMPB )は 0 どちらのキャプチャ回路においても、データはラッチされません。
これは何が原因でしょうか?他に何か必要な設定(例えば、クロックの有効化、入力多重化、カウンタの設定など)で、私が見落としているものはありますか?フラグはキャプチャイベントが検出されたことを示しますが、キャプチャされた値は更新されません。どんなご意見でも大変ありがたく思います。
必要に応じて、ピン多重化設定やカウンターモードなどの詳細情報を追加してください。幸運を!
ハイ
まず、最新のS32K3 RTD 7.0.xを確認しました。しかし、 S32設定ツール はまだ eFlexPWM E-Capture 機能をサポートしていません。
もしよければ、S32K396でテストしたいので、あなたのプロジェクトを共有してもらえますか?(残念ながら、私はS32K364を持っていません。私は S32K396-BGA-DC1 評価ボードしか持っていません。)
次に、 S32K396RM(Rev. 4、11/2024) の 「56.3.14 拡張キャプチャ(E-Capture)」の セクションを確認してください。そのセクションで言及されているレジスタ、特に図 254 のレジスタを確認してください。E-キャプチャ ロジック。eFlexPWM_0レジスターのスクリーンショットも共有しても構いません。
さらに、 SM2_CAPTCOMPB[EDGCNTB]の値を読みたい場合は、まず SM2_CAPTCTRLB[EDGCNTB_EN] と SM2_CAPTCOMPB[EDGCMPB]を有効にしてください。
なぜ SM2_CAPTCOMPB[EDGCMPB] を0に設定しているのか分かりません。図254のコンパレータが使えなくなるように見える からです。E-キャプチャロジック が正しく機能しない。