2016-12-22 34 views
0

私はSTM32F030C6を使ってBLDCモータ制御プロジェクトを進めていますが、電流制限回路で見つかったバグが混乱しています。STM32のタイマーブレーク入力が毎回動作しないのはなぜですか?

私は、サイクルごとの電流制限を適用しています。外部的に私は(十分に速い)オペアンプアンプを3つのフェーズのグランドパスに電流を測定している。また、高速化されたコンパレータがあり、このコンパレータは設定値と比較します。このコンパレータの出力はPB12のTIM1_BKIN入力に供給されます。電流が高すぎると、コンパレータは反転し、STM32はPWMをオフにします。

通常、これは完全に機能します(スコープイメージの最初のサイクルを参照)。コンパレータの出力(CH2)がローになり、測定された電流(CH1)がすぐに低下し始めます。

Oscilloscope screenshot

ところで、あなたはスパイクを引き起こし、私のプローブへの信号夫婦としてのHブリッジのスイッチングを見ることができます。

2回目 - 実際にはこれは何度も起こります。ブレイク入力は立ち下がりエッジに反応していないようですが、電流が上昇し続け、4.6us後にスイッチオフします。

ソフトウェアがBRK入力を無効にする可能性を排除するために、TIM1_BDTR レジスタのロックレベル1をアクティブにしました。これを行うためのコードは、STM32CubeMX 4.14.0を使用して生成されます。

私は、BRK入力が非同期で動作し、割り込みを必要としないため、なぜこれが起こるのか理解できません。より多くの情報を求めるアイデアや要望はありますか?

答えて

0

ブレーク入力が常に機能しない理由が見つかりませんでした。

代わりに、ブレーク入力の代わりにETR(外部トリガ)入力を使用し、それをクリアするようにハードウェアを改造しました。これは完全に機能します。