xiaosangzz 2023-02-14 14:39 采纳率: 0%
浏览 85

can总线波特率与晶振频率为啥差两倍

这个是Canoe中Hardware项设置的图。硬件设备连接的是VH6501,它的晶振频率显示为16000kHz。此外其他的配置信息是: 波特率:500k。 BTL Cycles(一位多少个Tq) :16。Prescaler(预分频数):1。
那么问题来了,为什么在计算晶振频率和can波特率关系时,除了预分频数外,还差2陪?
也就是说一开始我核算的波特率如下:波特率 = 晶振频率 / (预分频BTL Cycles) = 16000 / (116) =1000 k。 结果不等于500k,差了2倍。
我找了其他的资料,发现有这样的关系:CAN时钟周期=2×晶振时钟周期×BRP,这里就乘了个2。相当于晶振频率出来先分了个二分频,再分预分频。但是不知道为啥会有个二分频,要乘以2?

img

  • 写回答

1条回答 默认 最新

  • zhazha强 2023-02-14 21:59
    关注

    在CAN总线中,每个数据位传输需要两个时钟周期,即一个位的传输周期为2个时钟周期,其中一个时钟周期为发送者和接收者同步的时间基准,即CAN时钟周期。所以,在计算CAN波特率时,需要将晶振频率乘以2,才能得到正确的计算结果。

    对于预分频器(BRP),它的作用是将晶振频率进行预分频,以满足CAN总线波特率的要求。在CAN协议中,BRP的取值范围是1~64,它决定了一个时间单元(Time Quantum,Tq)的长度。因此,波特率可以通过以下公式计算:

    波特率 = CAN时钟频率 / (BRP × Tq)

    其中,CAN时钟频率 = 2 × 晶振频率。因此,我们可以将上面的公式转化为:

    波特率 = (2 × 晶振频率) / (BRP × Tq)

    由于一个位的传输周期为2个时钟周期,所以一个时间单元(Tq)等于2个时钟周期。因此,Tq = 2 × CAN时钟周期。将其代入上面的公式,得到:

    波特率 = (2 × 晶振频率) / (BRP × 2 × CAN时钟周期) = 晶振频率 / (BRP × CAN时钟周期)

    因此,可以发现,计算CAN波特率时,需要将晶振频率乘以2,以满足每个数据位传输需要两个时钟周期的要求。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月14日

悬赏问题

  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题
  • ¥50 如何将脑的图像投影到颅骨上
  • ¥15 提问一个关于vscode相关的环境配置问题,就是输入中文但是显示不出来,代码在idea可以显示中文,但在vscode不行,不知道怎么配置环境
  • ¥15 netcore使用PuppeteerSharp截图
  • ¥20 这张图页头,页脚具体代码该怎么写?
  • ¥20 WPF MVVM模式 handycontrol 框架, hc:SearchBar 控件 Text="{Binding NavMenusKeyWords}" 绑定取不到值
  • ¥15 需要手写数字信号处理Dsp三个简单题 不用太复杂