概要:CAN协议使用同步传输提升性能,但需复杂位同步。位同步通过重新同步实现,包括硬同步和帧中间的重新同步,以补偿发送器和接收器间的时钟差异。位时间划分为同步段、传输段和两个相位缓冲段,通过编程调整以维持总线稳定和信号传输。
CAN协议之所以在众多现场总线协议中独树一帜,其独特之处在于它摒弃了传统的异步传输(面向字符)方式,转而采用了同步数据传输。这一创新性的改变不仅使得数据传输性能得到了极大的提升,数据流通更为迅速、准确,同时也对数据传输的实时性和稳定性提出了更高的要求。
同步数据传输的引入,使得CAN协议在复杂的工业环境中能够游刃有余,确保关键数据的即时传输和准确处理。然而,这种高效能的表现背后,也离不开更为复杂的位同步方法的支持。正是这些精细而复杂的同步技术,使得CAN协议能够在高负载、高噪声的环境下,依然保持出色的数据传输性能。
简而言之,CAN协议以其独特的同步数据传输方式和精湛的位同步技术,为现代工业通信领域带来了革命性的变革,为工业自动化、智能交通等领域的发展提供了强有力的支持。
如何确保位同步?
在数字通信的世界里,位同步对于确保数据传输的准确无误起着至关重要的作用。当我们谈论面向字符的协议时,位同步的实现显得尤为简单直接,它通常在每个字符的起始位瞬间进行同步。然而,一旦我们深入探索同步传输协议,便会发现其中的奥秘与挑战。
在同步传输协议中,一帧的起始位成为了同步的关键点,但这仅仅是一帧的开端。仅凭这一点,往往难以确保接收器与发送器在整个帧传输过程中的完美同步。为了确保在帧的末尾,接收器也能精准地采样到每一位数据,接收器必须不断地进行精细的重新同步操作。
重新同步,不仅仅是简单的时钟调整,它更是对数据流中每个信号边沿的细致观察和响应。在每一个信号边沿到来时,接收器都会进行一次对接收信号时钟周期的精准检测。这样的操作确保了即使在信号边沿之间可能存在的时间差异,也能通过精细的“相位缓冲段”来补偿,确保发送和接收振荡器之间的时间差始终在一个位间隔内的标称采样点之前和之后得到妥善处理。
在数字通信的海洋中,位同步就像是航船的指南针,指引着数据准确无误地到达目的地。正是这样的精准同步,让数字通信在日益复杂的网络环境中,依然能够保持其高效、稳定、可靠的特点。
位时间的4个时间段
CAN协议以其独特的非破坏性位总线仲裁和显性应答位设计,确保了信号从发送器到接收器,再准确无误地返回,这一切都发生在令人惊叹的极短时间内——仅仅一个位时间!除了精心保留的同步时间,还有一个被称为“传输延迟段”的关键时段,它巧妙地补偿了总线上的信号传输延迟,并充分考虑了发送和接收节点的内部信号延迟。
如图1所示,这标称的位时间被精心划分为四个互不重叠的时间段,每个时间段都发挥着不可或缺的作用,确保CAN通信的可靠与高效。
- 同步段(Sync_Seg)
- 传输时间段(Prop_Seg)
- 相位缓冲段1(Phase_Seg1)
- 相位缓冲段2(Phase_Seg2)
图1:揭示时间的精密划分
你是否曾经思考过,在网络信号的传递中,时间是如何被精准地切割和管理的?在这幅图中,我们将带你一探究竟。
想象一下,每一个位间隔的时间段,它就像是一串精心编排的音符,其长度是根据振荡器周期来确定的。每一个音符,都是一个基本时间单位(时间份额)的倍数,它们共同谱写出数字信号的交响曲。
这其中的“基本时间单位tq”,就像是交响乐团中的指挥棒,它代表着同步机制时间分辨率的基准。每当CAN信号电平的边沿即将产生时,同步段就如同指挥家轻轻一挥,引领着整个乐团进入下一个乐章。
而在同步段之后,产生的边沿与同步段之间的距离,就是我们所说的“相位误差e”。这个小小的误差,如同乐队中某个乐器的细微走调,虽然微小,但足以影响整个乐曲的和谐。
为了确保信号的稳定传输,传输延迟段就像是一个缓冲区域,它提供了足够的时间来处理网络中的最大信号传输延迟。这段时间的长度,需要精确计算,它必须能够容纳两个节点之间的最大信号传输延迟时间,再加上发送和接收节点的内部延迟时间之和的两倍。
如此精细的时间管理,正是现代通信技术中不可或缺的一部分。让我们一同欣赏这幅图,感受时间在数字信号传输中的魅力与奥秘。
位同步之“硬同步”和“重新同步”
在深入探讨总线通信的精髓时,我们必须明晰两种关键的同步机制:“硬同步”与“重新同步”。在帧的起始处,我们迎来了“硬同步”的庄严登场。此刻,位时间仿佛重新焕发活力,在sync段结束时重新启动,不受相位误差的羁绊。硬同步以其坚定不移的姿态,确保了同步边沿坚定地延伸至重启后的位时间同步段中。
而“重新同步”则像是位时间的微调师,它细腻地调整位时间,使其缩短或延长,从而优雅地引导采样点产生微妙的移位。这一切都在标称采样点前后的相位缓冲段中悄然进行,为实际采样点的移位预留了宝贵的空闲时间。
值得注意的是,同步的魔法只在隐性位与显性位电平转换的边沿上施展。通过精准地在每个时间量内对总线实际电平进行采样,并与前一次采样点的总线电平进行比较,我们便能捕捉到这些神奇的边沿。若在同步段内探测到边沿,那么同步便如愿以偿地实现;反之,信号边沿与同步段结束之间的距离便构成了边沿相位误差,它用时间来度量。
边沿若提前于同步段出现,相位误差便为负;反之,则为正。面对正相位误差,相位缓冲段1会展现其柔韧性,适当地延长以应对挑战。而每次重新同步时,相位缓冲段缩短或延长的幅度(“同步跳转宽度”,SJW)都受到严格的限制,它可根据需求在1和Min{4, Phase_Seg1}之间的值进行编程。
当信号边沿的相位误差数值在SJW的编程值之内或相等时,硬同步与重新同步将展现出惊人的默契,它们的值将完美统一。然而,若相位误差超越了SJW的界限,重新同步将无法完全消除误差,剩余的误差(相位误差-SJW)将依然存在。但请放心,在两次采样点之间,我们只允许执行一次同步操作,确保了同步的精确性和稳定性。
重新同步不仅维持了边沿与采样点之间的最小距离,更使总线电平在传输段和相位段1时间之和内得以稳定,并有效滤除了潜在的尖峰干扰。如此精密而高效的同步机制,让位时间内的不同段可按需进行编程,展现出总线通信的无限魅力。
- Sync_Seg:1时间份额
- Prop_Seg1:1...8或更多时间份额
- Phase_Seg1:1...8或更多时间份额
- Phase_Seg2:Max{Phase_Seg1,信息处理时间}
- 波特率预分频器:1...32
- SJW:1...4,但是不大于Min{4, Phase_Seg1}
在数据传输的精确编排中,Phase_Seg1展现出了其特有的灵活性,它可以超越编程时预设的标称时间,而与之相对的Phase_Seg2则可能更为紧凑,短于既定的时间标准。而在这背后,是“数据处理时间”这一关键要素在默默发挥着作用。从采样点的一刹那开始,它便肩负起决定后续发送数据位、CRC位、填充位、错误标志或空闲状态位电平的重要使命。这段处理时间,如同精密的计时器,必须严格控制,不得超过两个时间单位的限制。其长度的底线,正是Phase_Seg2编程值的下限。
令人称奇的是,即便在同步的过程中,Phase_Seg2可以短暂地低于数据处理时间,但这丝毫不会撼动总线时序的稳固基石。正是这种微妙而精妙的平衡,保证了数据传输的高效与稳定。而为了保障这一切的顺利运行,每个位时间的时间份额值都被严格设置在8到25的精确范围内,确保每一个环节都精准无误。
图2 重新同步的原理
图2清晰展现了重新同步的奥秘。想象一下,当发送器的振荡器稍显迟缓(a),用于维系双方同步的信号边沿宛如迟到的邮递员,缓缓步入接收器的怀抱。这时,我们的接收器智慧非凡,通过微妙地调整采样点的位置,仿佛跳起了一曲优美的华尔兹,补偿了这份“迟到”。而这份补偿的极限,即最大累积的“延迟”(边沿相位误差),是由相位段1守护的时间边界所确定的。
在重新同步的魔法旅程中,如果相位误差的值没有超过SJW的警戒线,采样点便会根据边沿相位误差e的大小进行精确的移位,如同魔术般,重新定位了与当前位位置息息相关的采样点。
然而,当发送器的振荡器过于急躁(b),信号边沿的到达比接收器预期的还要早,仿佛一个急躁的旅人,迫不及待地闯入下一个位时间间隔。为了应对这种局面,接收器巧妙地缩短了相位缓冲段2,如同一位精明的导演,提前拉起了下一个场景的帷幕。在这种情况下,同步段被悄然隐藏,但在重新同步的幕后,从信号边沿到采样点之间的距离,与同步段到采样点之间的距离,却如同双胞胎般惊人地相似(只要没有检测到边沿的调皮)。
在第一个例子中,这“提前”边沿的相位误差值乖巧地保持在SJW的界限内,因此接收器得以施展它的魔力,实现了完美的补偿。而相位缓冲段,这位临时的舞者,只是在舞台上短暂地改变了步伐,若下一个位时间里没有新的挑战,它们便会优雅地回归到标称值的舞台中央。
接收器始终期待着边沿在同步段的舞台上闪亮登场。而这一切,都遵循着位同步的至高规则——[ISO99-1]。
- 在一个位时间内的两次采样点之间只有一次同步。
- 只有在前一个采样点检测到的信号电平与后一个采样点的信号电平不同时,才能使用从隐性到显性的信号边沿进行同步。短暂的干扰脉冲是不起作用的。
- 只要在总线空闲时出现一个隐性到显性的信号边沿,就会执行一个“硬同步”(新的位时间间隔的起始)。
- 在帧间空间中(间歇场的第一位除外)隐性到显性的信号边沿会导致执行一个硬同步。