良い日私はSTM32F746にSTM32F407から移行しようとしているSTM32F746 CAN初期化タイムアウト
すべて。私が遭遇した問題は、ST HALライブラリを使ってCANを初期化することでした。コードはMX Cube(4.16)から生成されました。
Nucleo-144 STM32F746を使用すると、デバッグ時に初期化コード(MX_CAN1_Init())を超えることができましたが、デバッグ時にuLink Proを使用する本番システムでは使用できませんでした。 CANペリフェラル(MSR INAKビットがクリアされない)を待つのはタイムアウトになります。
CANピンは何も接続されていませんでした。
通常、CAN RxピンはCANトランシーバによって正しいアイドルレベルに駆動されます。これらのラインに不正確な極性のプル抵抗を配置すると、バス全体がダウンします(それが行われました)。プル抵抗を一切使用しないことが最善です。 – Lundin
@ Lundinプルアップ抵抗を持つと、バスが "リセッシブ"なのでバスに悪影響を与えてはなりません。したがって、CANトランシーバは正しくプルする必要がありますが、CANトランシーバを必ずしも接続していないコードのテストでは、RXDピンをプルアップしないとCANモジュールが初期化されません。トランシーバを接続していないと言いました。 – Flip
CANトランシーバをお持ちでない場合は、信号がMCUを離れない場所でも、通常は「ループバック」モードで動作しています。私は開発段階でこのようなことをしのばんでいるだけで有害であることに気づいてから年を経ています。できるだけ早い段階で、CANリスナー・アダプターのようなトランシーバーと別のノードを入手する方がよいでしょう。ライブ状態でテストしないことによって引き起こされる特異な振る舞いをデバッグするのに比べて、それを修正することに多大な労力は必要ありません。可能であればシミュレータは一般的に避けるべきです。 – Lundin