前言
最近在研究CAN总线时,意外发现了TTCAN,感觉非常有趣。然而,网上的资料要么过于深奥,要么全是专业术语,让人难以理解。因此,我花了一些时间整理了一下相关内容,希望能与大家分享这个技术。本文不会深入探讨CAN协议帧的复杂细节(因为种类繁多,难以一一解释),而是重点讨论CAN和TTCAN的基本概念,希望能为大家提供一些帮助。
一、TTCAN是什么?与标准CAN有何不同?
首先,我们来了解一下标准CAN(Controller Area Network)。CAN总线可以类比为一个热闹的微信群,群里的每个设备(节点,例如汽车的刹车系统、发动机控制器)有事情时就会发出消息。消息的优先级决定了谁先被听到,这种方式称为事件触发。但当群内成员过多时,消息可能会拥堵,低优先级的消息可能需要等待甚至被忽略。对于像刹车这样的关键信号来说,延迟是不可接受的。
TTCAN(时间触发CAN)则是为了解决这一问题,它为CAN总线添加了一个“时间表”。就像微信群不再允许随意发言,而是按照预定的时间表轮流发言。例如,刹车信号在9:00发送,发动机信号在9:05发送,这样可以确保消息按时到达,不会因为总线繁忙而延迟。TTCAN特别适用于需要高度确定性的场景,如汽车刹车、转向、无人驾驶或工业自动化。
二、CAN与TTCAN的简单对比
- 触发方式:
- CAN:有事就发,依靠优先级竞争总线使用权。
- TTCAN:按照时间表发送,类似火车时刻表,精确到秒。
- 确定性:
- CAN:高优先级消息稳定,低优先级消息可能需要等待较长时间。
- TTCAN:每条消息都有自己的“专属时间”,避免了拥堵。
- 时间同步:
- CAN:依赖位同步,节点没有统一的时间概念。
- TTCAN:所有节点共享“全局时钟”,通过一个“时间主节点”进行校准。
- 应用场景:
- CAN:适用于车窗、灯光等普通场景。
- TTCAN:适用于刹车、无人驾驶等需要硬实时响应的场景。

三、TTCAN的工作原理
TTCAN的核心在于其“时间表”,即系统矩阵(System Matrix),类似于学校的课程表,规定了何时发送何种消息。以下是TTCAN的工作流程:
1. 全局时间:确保所有节点时间一致
TTCAN要求所有节点的时间保持一致,这就需要一个“时间主节点”(Time Master)定期发送参考消息(Reference Message),告知当前时间。参考消息包含时间戳,其他节点接收后调整自己的本地时钟。每个节点有一个时间计数器(16位或19位,取决于TTCAN的级别),按照网络时间单位(NTU)递增。NTU通常为1微秒(1 Mbit/s的CAN)。
例如,时间主节点像学校广播,每小时播报“现在是上午9点!”每个教室(节点)听到后调整自己的时钟,确保时间一致。
2. 系统矩阵:消息的调度表
系统矩阵类似于课程表,规定了每个消息的发送时间。它包括以下几个部分:
- 基本周期(Basic Cycle): 一个完整的时间表,例如一小时,包含多个时间窗口。周期结束后会循环。
- 时间窗口(Time Window):
- 独占窗口: 专属时间,仅允许特定消息发送,如同VIP包场。例如,刹车信号在9:00-9:01发送。
- 仲裁窗口: 类似标准CAN,消息竞争总线使用权,优先级高的先发送。
- 空闲窗口: 预留用于未来扩展或低优先级消息。
- 矩阵周期: 多个基本周期组成一个大循环,类似于一周的课程表。

3. 参考消息:同步的指挥棒
参考消息是TTCAN的“心脏”,由时间主节点发送,主要功能包括:
- 同步时间: 告知当前时间,校准时钟。
- 触发周期: 标志基本周期的开始,后续按照时间表发送消息。
参考消息包含特殊ID、时间戳(1字节或4字节,取决于级别)以及主节点优先级(最后3位)。例如,参考消息像火车站广播:“现在9:00,下一班车是刹车消息!”节点接收到后对齐时间,按照时间表发送消息。
4. 通信流程:按表发车
TTCAN的通信过程类似于火车发车:
- 时间主节点发送参考消息,宣布“新周期开始”。
- 节点按照系统矩阵的时间窗口发送消息:
- 独占窗口:只有指定消息可以发送,其他节点不得插队。
- 仲裁窗口:类似标准CAN,消息竞争总线使用权。
- 周期结束,主节点再次发送参考消息,进入下一个周期。
- 主节点故障?备份主节点(Potential Time Master)接管。

5. TTCAN的两种级别
TTCAN分为两种级别:
- Level 1: 基础版,16位时间计数器,NTU=1微秒,适用于大多数场景。
- Level 2: 高级版,19位计数器,NTU更精细(小于1微秒),支持外部事件暂停周期,适用于超高精度场景。
例如,Level 1类似于普通手表,精确到秒;Level 2则像计时器,精确到毫秒。
四、TTCAN如何实现同步?为什么如此稳定?
TTCAN的同步机制比标准CAN更为强大,因为它同时管理两个层次的同步:位级同步(确保每个位的发送准确)和全局时间同步(确保所有节点的时间一致)。下面详细解释这两个层次的同步机制:
位级同步(与CAN相同)
每个CAN位被划分为几个阶段:
- 同步段:1个时间单位(Tq),节点检测电平变化(例如从1到0),以对齐时间。
- 传播段:用于补偿总线延迟。
- 相位缓冲段1和2:调整采样点,防止时钟偏差。
- 采样点:读取总线电平的位置。
如果节点时钟出现偏差,通过重同步进行调整:提前跳变则延长缓冲段,滞后跳变则缩短缓冲段,使用同步跳变宽度(SJW)来控制范围。
举例来说,就像大家一起跳舞,当音乐响起时(电平跳变)踩准节拍,如果有人快或慢了就微调步伐。
全局时间同步(TTCAN特有)
- 时间主节点发送带有时间戳的参考消息。
- 节点接收到后,将本地时间计数器调整为主节点的时间。
- 如果时钟出现偏差,微调计数器速度以保持同步。
- 如果主节点故障,备用主节点接管并继续发送参考消息。
为何稳定?
- 高精度时钟:使用晶振(误差几十ppm),确保时间准确如同瑞士表。
- 容错机制:包括主节点切换、错误检测(CRC、位错误),防止系统崩溃。
- 差分信号:CAN使用CAN_H和CAN_L,具有抗干扰能力,边沿清晰,同步更准确。

APM32F407能支持TTCAN吗?
手头有一块APM32F407开发板,查阅资料后发现其CAN控制器支持标准CAN 2.0A/2.0B,最高传输速率为1 Mbit/s,有3个发送邮箱和2个接收FIFO,功能与STM32F407相似。但官方文档未提及TTCAN支持,估计硬件上没有直接支持TTCAN的全局时间同步功能。
然而,TTCAN Level 1可以通过软件模拟实现!例如:
- 使用APM32F407的CAN控制器实现位级同步(配置CAN_BTR寄存器,设置Tq、SJW等)。
- 使用定时器模拟时间计数器,记录全局时间。
- 编写代码解析参考消息,校准时间,安排时间窗口。
这需要相当多的工作,软件模拟的精度和稳定性可能不如专用TTCAN芯片(如Bosch的TTCAN_TC)。如果项目要求不高,标准CAN已经足够,可以暂时搁置TTCAN,毕竟配置时间表较为繁琐。
TTCAN的优缺点
优点:
- 准时:消息按时发送,刹车信号绝不迟到。
- 安全:时间同步加上错误检测,系统稳定。
- 兼容:标准CAN节点可以接收TTCAN消息,便于升级。
- 容错:主节点故障有备份,网络不会崩溃。
缺点:
- 复杂:需要设计时间表,配置窗口,开发难度大。
- 硬件要求:Level 1可以通过软件实现,Level 2可能需要专用芯片。
- 灵活性差:突发消息需挤入仲裁窗口,随机性较差。
- 带宽浪费:独占窗口可能空闲,效率不高。
举例来说,TTCAN像高铁,准时且安全但成本较高;标准CAN像公交车,便宜灵活但在高峰期可能会拥挤。
TTCAN适用于哪些场景?
TTCAN专门设计用于高实时性和高安全性的场景,例如:
- 汽车线控:刹车、转向、油门等,不允许有延迟。
- 无人驾驶:传感器和控制器需要精确同步。
- 工业自动化:生产线机器人按节拍工作。
- 电力系统:同步监控电网状态。
举例来说,在无人驾驶中,刹车信号必须在0.1秒内到达,TTCAN确保消息准时发送,安全第一。
常见问题解答
- TTCAN需要什么硬件?Level 1可以使用普通CAN控制器(如APM32F407)加上软件实现,Level 2可能需要专用芯片,精度更高。
- TTCAN和CAN能混用吗?可以!标准CAN节点可以接收TTCAN消息,但不能参与时间调度,适合逐步升级。
- TTCAN同步有多准?Level 1可达1微秒,Level 2更精细,具体取决于晶振(误差几十ppm)。
- TTCAN有什么局限?开发复杂,支持突发消息能力差,适合周期性任务。
扩展问题解答
- TTCAN的时间表如何设计?根据消息的周期和优先级分配窗口。例如,刹车消息每10ms发送一次,占用独占窗口;次要消息挤入仲裁窗口。可以使用Excel列出时间表,计算每个窗口的NTU数,调试时确保总线负载不超过100%。
- TTCAN的参考消息如何实现?时间主节点定期发送一个特殊ID的消息,包含时间戳。其他节点接收到后解析时间戳,调整本地计数器。可以使用CAN控制器的过滤器识别参考消息,节省CPU资源。
总结
TTCAN可以看作是CAN的“高铁版”,通过参考消息和系统矩阵确保消息准时发送,适用于刹车、无人驾驶等硬核场景。其核心特点包括:
- 全局时间:时间主节点发送参考消息,校准时钟。
- 系统矩阵:规定发车时间,独占窗口最稳定。
- 同步机制:位级同步和全局同步双重保障。
- 容错:主节点故障有备份,非常稳定。
APM32F407的CAN功能强大,适合标准CAN,若想尝试TTCAN则需要费心进行软件模拟。刚开始接触TTCAN的我仍在探索中,欢迎大家分享经验!




作者:DKENNY
链接:https://bbs.21ic.com/icview-3474828-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。


雷达卡


京公网安备 11010802022788号







