1. 什么是TQ值在CAN总线中的含义
第一次接触CAN总线配置时,看到"TQ"这个参数确实容易让人困惑。实际上,TQ(Time Quantum)是CAN总线通信中最基础的时间单位,就像音乐中的节拍器一样,决定了整个通信节奏的快慢。
在CAN控制器中,每个位时间(Bit Time)被划分为多个TQ。比如常见的配置是将1个位时间划分为8-25个TQ。这个划分不是随意的,而是需要根据总线时钟频率和所需波特率精确计算得出。举个例子,如果使用16MHz的晶振,配置1Mbps波特率时,每个位时间就是1μs,若设置为16TQ/bit,那么每个TQ就是62.5ns。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. TQ值的关键组成与作用
2.1 同步段(Sync Segment)
同步段固定为1TQ,这是所有CAN控制器都遵循的硬性规定。它相当于起跑线上的发令枪,用于检测总线上的信号边沿。当节点检测到信号跳变时,就会在这个时间段内进行时钟同步调整。
2.2 传播时间段(Propagation Segment)
这个段用于补偿信号在物理总线上的传输延迟。在PCB板级设计中,这个值通常设置1-2TQ就够了。但在汽车等长距离应用中,可能需要更大的值。计算公式为:
code复制Prop_Seg ≥ 2 × (总线传输延迟 + 收发器延迟)
2.3 相位缓冲段1/2(Phase Buffer Segments)
这两个段是CAN总线实现重同步的关键。Phase_Seg1可以在同步时延长,Phase_Seg2则可以缩短。它们的典型配置比例是:
code复制Phase_Seg1 = 3-8TQ
Phase_Seg2 = 2-4TQ
3. 实际配置中的TQ计算
3.1 波特率与TQ的关系
以STM32的bxCAN为例,配置1Mbps波特率的典型步骤如下:
- 确定APB1时钟频率(假设为36MHz)
- 计算分频系数:Prescaler = 36MHz / (1Mbps × TQ总数)
- 如果设置16TQ/bit,则Prescaler = 36/(1×16) = 2.25 → 取整为2
- 实际波特率 = 36MHz / (2×16) = 1.125Mbps(需调整TQ数使误差<1%)
3.2 采样点优化
采样点位置(Sampl
