首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >J1939可以位定时

J1939可以位定时
EN

Stack Overflow用户
提问于 2014-12-04 18:27:06
回答 1查看 431关注 0票数 0

我需要一些帮助设置我的J1939定义的CAN位计时。我使用的是带有8 MHz时钟的MHz微控制器。我很难想出如何计算CAN寄存器的不同位数。

现在,在我的J 1939. MHz文件中,我有这个,但是它是一个16 MHz时钟

代码语言:javascript
复制
#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时钟。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-05 15:51:01

明白了。所有的时间和速率都应该与我使用16 8MHz时钟时相同,8 8MHz的时钟意味着每件事情都需要两倍的时间。因此,我所要做的就是将ECAN_BRP值从2改为1,因为这表示时间量程(tq)的长度。通过将tq除以一半,它实质上使定时加倍,使定时工作与16 the时钟的工作方式相同。

我的解释可能没有实际意义,但这才是我头脑中有意义的东西,哈哈,这是我问题的答案,所以这就是我要做的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27301273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档