0

CAN ビット タイミング用に J1939 定義をセットアップするのに助けが必要です。8 MHz クロックの PIC18LF26K80 マイクロコントローラを使用しています。CAN レジスタのさまざまなビットを計算する方法がわかりません。

現在、私の J1939.def ファイルにはこれがありますが、これは 16 MHz クロック用です。

#define ECAN_RX_INTERRUPT_PRIORITY 0x00
#define ECAN_TX_INTERRUPT_PRIORITY 0x00
#define ECAN_INTERRUPT_PRIORITY (ECAN_RX_INTERRUPT_PRIORITY | ECAN_TX_INTERRUPT_PRIORITY)
#define ECAN_LEGACY_MODE J1939_TRUE
#define ECAN_EXTRA_RX_BUFFERS 3
#define ECAN_SJW 2
#define ECAN_BRP 1
#define ECAN_BRGCON1 (((ECAN_SJW-1)<<6) | (ECAN_BRP-1))
#define ECAN_SEG2PHTS 0x80
#define ECAN_SAM 0x00
#define ECAN_SEG1PH 6
#define ECAN_PRSEG 6
#define ECAN_BRGCON2 (ECAN_SEG2PHTS | ECAN_SAM | ((ECAN_SEG1PH-1)<<3) | (ECAN_PRSEG-1))
#define ECAN_WAKDIS 0x80
#define ECAN_WAKFIL 0x00
#define ECAN_SEG2PH 3
#define ECAN_BRGCON3 (ECAN_WAKDIS | ECAN_WAKFIL | (ECAN_SEG2PH-1))

マイクロコントローラーのドキュメントを調べたところ、ビットの設定方法が示されていますが、その情報を使用して 8 MHz クロックを計算する方法がわかりません。

4

1 に答える 1

1

とった。16MHz クロックを使用していたときとすべてのタイミングとレートは同じであると想定されていましたが、8MHz クロックはすべての時間が 2 倍かかることを意味しました。したがって、ECAN_BRP の値を 2 から 1 に変更するだけで済みました。これは、タイム クォンタム (tq) の長さを表すためです。tq を半分に分割することで、実質的にタイミングが 2 倍になり、タイミングは 16MHz クロックの場合と同じように機能します。

私の説明は実際には意味をなさないかもしれませんが、それは私の頭の中で意味をなすものであり、私の質問に対する答えなので、それが私が行っていることです.

于 2014-12-05T15:51:01.153 に答える