问:CAN 控制器驱动开发时,位时间应该如何配置?
答:根据 CAN 协议,有Tq = BRP / Fsys。(BRP = Baud Rate Prescaler,Fsys = MCU system Clock)。下面将这个公式展开,引入一个实际的问题来进行一个简单的计算。
Q:设现有一控制器,其输入时钟频率为 40MHz,需 500kbps 波特率,4分频,80%采样点,求位时间各段具体配置情况。
A:根据上面我们拿到的信息逐条分析,与上述的计算方式对照,我们可以得到以下结论:
Fsys == 40MHz========>Fcan = 40MHz / 4 = 10MHz========>Time Quanta = 1 / Fcan = 100ns
BaudRate == 500kbps==========> Bit Time == 1 / 500kbps = 2us
根据以上得出的信息可知:Number Of Tq = Bit Time / Time Quanta = 2us / 100ns = 20(个)========>Tsync + TSEG1 + TSEG2 = 20
80%采样点========>(Tsync + TSEG1) / (Tsync + TSEG1 + TSEG2) = 80%(Tsync 恒为 1个Tq)
(1 + TSEG1)/ 20 = 80%========>TSEG1 = 16 - 1 = 15
TSEG2 = Number Of Tq - TSEG1 - Tsync = 20 - 15 - 1 = 4
PS:根据 CAN 协议,可编程的 Tq 各时间段的配置是有明确要求的,详情见下表,如有超出酌情调整BRP值。