【问题标题】:J1939 CAN Bit TimingJ1939 CAN位时序
【发布时间】:2014-12-04 18:27:06
【问题描述】:

我需要一些帮助来设置 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 时钟。

【问题讨论】:

    标签: timing can-bus j1939


    【解决方案1】:

    知道了。一切时序和速率都应该与我使用 16MHz 时钟时相同,8MHz 时钟意味着一切都需要两倍的时间。所以我所要做的就是将 ECAN_BRP 值从 2 更改为 1,因为这代表了时间段 (tq) 的长度。通过将 tq 分成两半,它基本上使时序加倍,使时序工作与 16MHz 时钟相同。

    我的解释可能实际上没有意义,但这对我来说是有意义的,哈哈,这是我问题的答案,所以这就是我要解决的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多