2016-11-24 25 views
-1

良い日私はSTM32F746にSTM32F407から移行しようとしているSTM32F746 CAN初期化タイムアウト

すべて。私が遭遇した問題は、ST HALライブラリを使ってCANを初期化することでした。コードはMX Cube(4.16)から生成されました。

Nucleo-144 STM32F746を使用すると、デバッグ時に初期化コード(MX_CAN1_Init())を超えることができましたが、デバッグ時にuLink Proを使用する本番システムでは使用できませんでした。 CANペリフェラル(MSR INAKビットがクリアされない)を待つのはタイムアウトになります。

CANピンは何も接続されていませんでした。

答えて

-1

解決策が見つかりました。

明らかにCAN RXDピンがフローティング状態またはプルダウン状態のままになっていると、Nucleoボード上のST-Linkを使用してデバッグするまで、初期化機能がタイムアウトします。

その後、GPIOで内部プルアップ抵抗を使用したが、問題は消えた。どちらのシステムも、実行モードまたはデバッグで初期化コードを渡します。

STM32F407に同様の問題があったのを思い出しません。

+0

通常、CAN RxピンはCANトランシーバによって正しいアイドルレベルに駆動されます。これらのラインに不正確な極性のプル抵抗を配置すると、バス全体がダウンします(それが行われました)。プル抵抗を一切使用しないことが最善です。 – Lundin

+0

@ Lundinプルアップ抵抗を持つと、バスが "リセッシブ"なのでバスに悪影響を与えてはなりません。したがって、CANトランシーバは正しくプルする必要がありますが、CANトランシーバを必ずしも接続していないコードのテストでは、RXDピンをプルアップしないとCANモジュールが初期化されません。トランシーバを接続していないと言いました。 – Flip

+0

CANトランシーバをお持ちでない場合は、信号がMCUを離れない場所でも、通常は「ループバック」モードで動作しています。私は開発段階でこのようなことをしのばんでいるだけで有害であることに気づいてから年を経ています。できるだけ早い段階で、CANリスナー・アダプターのようなトランシーバーと別のノードを入手する方がよいでしょう。ライブ状態でテストしないことによって引き起こされる特異な振る舞いをデバッグするのに比べて、それを修正することに多大な労力は必要ありません。可能であればシミュレータは一般的に避けるべきです。 – Lundin