如何从Tq和时钟频率计算出CAN总线波特率?

how to calculate the CAN bus baud rate from the Tq and clock frequency ?

首先,我想我知道如何从图片中的参数计算 CAN 总线波特率,这是一个 CAN FD 配置。

clock frequency :80000 k
pre-scaler :1 
so we can get the Tq = 1/80000 K 
BTL cycles : 40
time for a bit  = 40 * (1/80000K) = 1/2000k
So we can get the baud rate  = 1/ (1/2000k) = **2000k .**
this Baud rate which we calculated is equal to the value which the CANoe Generated.

但令我困惑的是:当我使用这种方法计算CAN(不是CAN FD)的波特率时,结果与CANoe生成的值不同,为什么??? CAN 和 CAN FD 之间有什么不同吗?? 你能帮我吗?非常感谢!

clock :16000K
Pre-sacler :1
tq = 1/16000k
BTL : 16
time for a bit  = 16*1/16000k = 1/1000k
baud rate = 1000k
but result generate via CANoe is 500k ,seems somewhere i missing a "divide by 2 " ??

CANOE的CAN控制芯片是SJA1000,来自CANOE帮助文档。

对于这个芯片: CAN时钟=系统时钟*pre-scaler*2 本题的key-point就是这里的“2”,对于其他芯片,比如STM32F103,CAN总线的时钟设置为36Mhz,不需要除以“2”

所以我猜时钟频率可能低于系统时钟

我按照这个规则设置了另外一个开发板的参数,实测通信成功

同时使用CANOE的用户只需关注波特率和采样点即可,无需过多关注其他参数。

希望对您有所帮助