1

NXPのLPC1768 ARM Cortex M3マイクロコントローラ(データシートユーザーマニュアル)を使用しています。ユーザー マニュアルのセクション「16.5.8 CAN コントローラーのセルフテスト」に記載されているセルフ テスト モードで CAN バス ペリフェラルをテストしたいのですが、うまくいきません。

NXP ナレッジベースに記載されているこれらの NXP の例を試し、NXP のサンプル コード (can_self_test コード) を使用しました。すべてのピン構成が正常に実行され、すべての CAN バス構成と CAN バス メッセージ フレームも正常に実行されます (1 つずつ制御)。ただし、このステップの後の CAN1_Send 関数内では:

CANx->CMR = 0x41;

エラー フラグが設定されます。それにもかかわらず、CAN1_Send は SUCCESS を返します。

実際、このエラーステータスは「バスオフエラー」を意味します。「バス オフ エラー」は、フレーム エラーと CAN コントローラ エラーがあったことを意味します。データフレームとCANコントローラーをテストします。できます。

CAN1とCAN2の接続にはRS-232ケーブルを使用しています。セルフ テストには、CAN1 を使用します。

4

2 に答える 2

3

私はその CAN コントローラーに詳しくありませんが、その動作は私を驚かせません。スタンドアロン テストを実行している場合、送信したメッセージは正しく受信されますが、バス上に他のノードがないため、メッセージは確認応答されません。コントローラーは、 CAN 仕様のセクション 6 および 7 で説明されているエラー状態に入る前に、しばらく再試行します。

于 2012-07-20T10:15:25.880 に答える
0

私はここで LPC1788 を使用して同じ問題を抱えていましたが、その問題は間違った CPU クロック設定に関連していました。CPU を 96 MHz で動作するように誤って設定しましたが、(これも間違って) CPU が 100 MHz で動作していたと考えています。このシナリオでは、CAN ボーレートの構成に一貫性がなく、CAN モジュールはメッセージの送信に失敗しました。その後、CPU クロック構成を修正すると、問題は解決しました。

于 2014-02-13T12:39:38.200 に答える