打印
[其他产品]

为什么CAN信号传输中要插入反码位

[复制链接]
882|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
meiyaolei|  楼主 | 2024-7-17 19:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

绘制两个简单的波形图,一个表示曼彻斯特编码(每个位都有电平变化),另一个表示CAN使用的NRZ编码(长时间可能无电平变化)。
在NRZ编码的波形图上,当检测到连续5个相同值的位时,在第5个位后插入一个反码位(即0变1,1变0),显示一个明显的电平变化,帮助接收器重新同步。
绘制一个简化的CAN帧结构图,包括帧起始(SOF)、仲裁场、控制场、数据场、CRC序列等部分。在这些部分旁边标注“应用位填充”,而在CRC分隔符、ACK场和EOF等部分旁边标注“不应用位填充”。在一个大图中整合上述三个部分,或者使用三个独立但相互关联的小图来展示。每个部分都清晰地标注出位填充的作用和效果,以及它在CAN帧中的具体应用位置。
顶部,简述CAN信号传输的概述和位填充的重要性。
中部,分为三个小图,分别展示位同步、防止信号丢失和遵循协议规范的具体图示。
底部,总结位填充对CAN信号传输可靠性和同步性的贡献。

数据数字编码有很多方法,诸如非归零(NRZ)、曼彻斯特或脉宽编码,它们的区别在于用来表示一个位的时隙的数目不同,如图1所示。

非归零电平编码的信号电平在整个位时间里保持不变,因此只需要一个时隙来表示一个位。而曼彻斯特编码的信号在一个位时间内发生变化,因此需要两个时隙来表示一个位。曼彻斯特编码的优点是每个位都有一个信号边沿用来实现位同步(Self-clocking code)。但是曼彻斯特编码和非归零编码相比,在相同的位时间(位频率)时,位速率只能达到非归零码一半。由于非归零编码的信号电平可长时间保持不变(取决于所传输的数据),因此有必要采取适当的措施以确保不超过两个信号沿之间最大允许的时间间隔。重新同步点之间最大的时间间隔由节点振荡器的误差决定。重新同步可通过应用“位填充”的方法实现。这种方法是在一定数量的恒定位电平之后将一个反码插入到位流中。

图1 NRZ和曼彻斯特编码的位表示

CAN协议中应用的是带位填充(填充宽度为5位)的NRZ信号编码,它保证了具有足够同步能力的最高传输性能。这种类型的编码还提供非常良好的信号辐射特性(总线辐射的能量大致上和传输信号的频率以及信号边沿的数量成比例)。

CAN协议中应用NRZ编码的部分包括SOF、仲裁场、控制场、数据场、数据帧和远程请求帧的CRC序列。发送器一检测到5个连续相同值的序列,它就会在实际传输的位流中插入一个反码位。数据帧或远程帧剩下的部分(CRC分隔符、ACK场和EOF)都有一个固定的形式(隐性电平),并且不采用位填充进行发送。出错和超载帧也是如此。



CAN协议中的NRZ编码与位填充
1. NRZ编码基础
非归零(NRZ)编码:在这种编码方式中,信号的电平在整个位时间内保持不变,以表示二进制数据中的0或1。这意味着每个位只需要一个时隙来表示。
优点:具有较高的数据传输速率,因为每个位只需要一个时隙。
缺点:长时间连续相同的电平可能导致接收端失去同步,特别是当存在节点振荡器误差时。
2. 位填充(Bit Stuffing)
目的:通过在连续相同值的位序列中插入反码位(即0变1,1变0),来限制重新同步点之间的最大时间间隔,从而保持同步并防止信号丢失。
应用规则:CAN协议规定,当发送器检测到5个连续相同值的位时,它会在第5个位后插入一个反码位。
优点:确保了信号的同步性和可靠性,同时保持了较高的数据传输速率。
3. CAN帧结构中的位填充
应用部分:位填充应用于CAN帧的多个部分,包括帧起始(SOF)、仲裁场、控制场、数据场以及数据帧和远程请求帧的CRC序列。
不应用部分:CRC分隔符、ACK场、EOF(帧结束)、出错帧和超载帧等部分由于具有固定的形式(通常为隐性电平),因此不采用位填充进行发送。
4. 图示概念(文字描述)

垂直轴:表示信号电平(高电平为显性,低电平为隐性)。
水平轴:表示时间,从左到右为时间流逝。

使用特权

评论回复
沙发
捉虫天师| | 2024-7-19 19:41 | 只看该作者
归零码比普通的编码抗干扰能力更好吧。

使用特权

评论回复
板凳
nqty| | 2024-8-10 14:37 | 只看该作者
在CAN信号传输中插入反码位(也称为差错检测位或反码校验位)是为了提高数据传输的可靠性

使用特权

评论回复
地板
canfeil| | 2024-8-10 15:42 | 只看该作者
CAN总线是一种多主机串行通信协议,广泛应用于汽车和工业自动化等领域,它需要确保在嘈杂的环境中也能可靠地传输数据

使用特权

评论回复
5
suiziq| | 2024-8-10 17:00 | 只看该作者
插入反码位的主要目的是进行差错检测,具体原因主要是差错检测

使用特权

评论回复
6
hhdhy| | 2024-8-10 18:04 | 只看该作者
反码位是通过对数据位进行逻辑操作(通常是按位取反)生成的。接收端在接收到数据后,会重新计算反码位,并与接收到的反码位进行比较。如果两者不一致,说明在传输过程中可能发生了错误。

使用特权

评论回复
7
星星点点didi| | 2024-8-10 19:09 | 只看该作者
通过插入反码位,可以增加检测到单比特错误和某些多比特错误的概率。这对于确保数据的完整性至关重要,尤其是在电磁干扰较强的环境中

使用特权

评论回复
8
一切D都好| | 2024-8-10 20:24 | 只看该作者
反码位的生成和校验可以通过简单的逻辑电路实现,这有助于简化硬件设计,降低成本,并提高系统的可靠性

使用特权

评论回复
9
teaccch| | 2024-8-11 08:26 | 只看该作者
CAN协议的标准化要求实现一定的差错检测机制,插入反码位是满足这一要求的一种方法。这确保了不同制造商的设备可以在同一总线上互操作

使用特权

评论回复
10
pe66ak| | 2024-8-11 10:00 | 只看该作者
通过有效的差错检测,可以在数据被错误地解释之前检测到错误,从而减少数据重传的需求,提高通信效率

使用特权

评论回复
11
清芯芯清| | 2024-8-11 11:08 | 只看该作者
需要注意的是,虽然插入反码位可以提高差错检测的概率,但它并不能保证检测到所有的错误。

使用特权

评论回复
12
eleg34ance| | 2024-8-11 13:25 | 只看该作者
如果两个比特同时发生错误并且恰好相互抵消,这种错误模式可能无法被检测到。因此,CAN协议还采用了其他机制,如循环冗余校验(CRC),来进一步提高差错检测的能力

使用特权

评论回复
13
AloneKaven| | 2024-8-15 23:13 | 只看该作者
为了纠错吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:工程师
简介:超越自我,为设计激发灵感和想象。

134

主题

579

帖子

2

粉丝