关于h5的网站模板,开个网站做英语培训,wap网站建设方案,北京移动端网站优化目录
CAN总线简介 CAN总线硬件电路
CAN电平标准
CAN收发器
编辑 CAN物理层特性
CAN总线帧格式
数据帧
数据帧格式
数据帧发展历史
遥控帧
错误帧
过载帧
帧间隔
位填充
波形实例
CAN总线接收方数据采样 接收方数据采样遇到的问题
位时序
硬同步
再同步
波…目录
CAN总线简介 CAN总线硬件电路
CAN电平标准
CAN收发器
编辑 CAN物理层特性
CAN总线帧格式
数据帧
数据帧格式
数据帧发展历史
遥控帧
错误帧
过载帧
帧间隔
位填充
波形实例
CAN总线接收方数据采样 接收方数据采样遇到的问题
位时序
硬同步
再同步
波特率计算
CAN总线多设备同时发送遇到的问题
资源分配规则1-先占先得
资源分配规则2-非破坏性仲裁
非破坏性仲裁过程
数据帧和遥控帧的优先级
标准格式和拓展格式的优先级
CAN总线错误处理
错误类型
错误状态
错误计数器
波形示例 CAN总线简介
CAN总线Controller Area Network Bus控制器局域网总线CAN总线是由BOSCH公司开发的一种简洁易用、传输速度快、易扩展、可靠性高的串行通信总线广泛应用于汽车、嵌入式、工业控制等领域CAN总线特征
两根通信线CAN_H、CAN_L线路少无需共地差分信号通信抗干扰能力强高速CANISO11898125k~1Mbps, 40m低速CANISO1151910k~125kbps, 1km异步无需时钟线通信速率由设备各自约定半双工可挂载多设备多设备同时发送数据时通过仲裁判断先后顺序11位/29位报文ID用于区分消息功能同时决定优先级可配置1~8字节的有效载荷可实现广播式和请求式两种传输方式应答、CRC校验、位填充、位同步、错误处理等特性 CAN总线可以实现多个主控互相通信它的应用场景是超过两个的单片机主控系统之间进行通信用两根线的CAN总线将每个主控串起来这样就可以实现任意的数据传输了。 CAN总线硬件电路
每个设备通过CAN收发器挂载在CAN总线网络上CAN控制器引出的TX和RX与CAN收发器相连CAN收发器引出的CAN_H和CAN_L分别与总线的CAN_H和CAN_L相连高速CAN使用闭环网络CAN_H和CAN_L两端添加120Ω的终端电阻低速CAN使用开环网络CAN_H和CAN_L其中一端添加2.2kΩ的终端电阻 CAN收发器主要实现电平转换、输出驱动和输入采样几个功能。
CAN电平标准
CAN总线采用差分信号即两线电压差VCAN_H-VCAN_L传输数据位高速CAN规定 电压差为0V时表示逻辑1隐性电平 电压差为2V时表示逻辑0显性电平
低速CAN规定 电压差为-1.5V时表示逻辑1隐性电平 电压差为3V时表示逻辑0显性电平 CAN收发器
以TJA1050高速CAN为例 CAN物理层特性 CAN总线帧格式
CAN协议规定了以下5种类型的帧 数据帧
数据帧格式
数据帧的用途是发送设备主动发送数据帧属于广播式通信方式。有标准格式和拓展格式两种CAN总线刚制定时只有标准格式拓展格式是后来新增的拓展格式增加了ID位数能承载更多类型的ID。 图例的灰色部分表示显性电平也就是灰色部分必须发显性电平0图上紫色部分D/R表示这段时序根据要发送的数据的不同可以选择发D也可以选择发R白色部分表示必须是隐形电平1。白色和灰色各占一半是应答位特有的在这一位发送方必须发送隐形1接收方必须发显性0也就是发送方释放总线接收方拉开总线表示接收方对发送方的应答。
在发送数据帧之前总线必须处于空闲状态空闲状态时总线是隐形电平随后数据帧开始数据帧第一位图上线画的低电平颜色是灰色表示此位必须是显性电平0它的意思是SOF帧起始。与串口波形的起始位一样帧起始的作用是“打破宁静”因为空闲是隐形1所有设备都不去碰总线那你要开始发数据帧第一位就必须得张开总线发送显性0。
一位帧起始之后首先发送的是报文ID标准格式是11位如果你想发报文ID是101 0101 0101那这一段时序就是隐显隐 显隐显隐 显隐显隐报文ID可以表示后面数据的功能因为总线上各种报文信息都有如果没有ID加以区分那肯定就搞混了。同时报文ID还用于区分优先级当多个设备同时发送时根据仲裁规则后文再详细介绍ID小的报文优先发送ID大的报文等待下一次总线空闲再重新发送不同功能的数据帧其ID都不同。
报文ID后紧跟着的是RTR占据1位在数据帧里必须为显性0RTR的意思是远程请求标志位用于区分数据帧还是遥控帧数据帧必须为显性0遥控帧必须为隐形1。报文IDRTR位可以称为仲裁段仲裁主要靠ID来实现RTR也加入进来的目的是相同ID的数据帧和遥控帧数据帧的优先级大于遥控帧。
之后进入控制段控制段首先是IDE意思是ID拓展标志位用于区分标准格式还是拓展格式标准格式固定为显性0拓展格式固定为隐形1。之后下一位是r0必须为显性0r0意思是保留位目前还没有用到。后面四位是DLC意思是表示数据段的长度CAN总线一帧数据可以有1~8个字节有效载荷并且可以灵活指定就靠这个DLC指定如果想发一个字节DLC就给0001如果想发8个字节DLC就给1000DLC要配合后面数据段使用。
数据段就是有效载荷的数据了根据DLC的指定数据段可以有多个字节DLC指定几个字节数据段就发几个字节。数据段长度是0~64位最大64位即8个字节这里位数是8的倍数。
数据段之后是CRC段有15位CRC是高效的校验算法。从SOF到Data这些数据位计算得到的校验码附在这后面接收方收到数据和校验码也会调用CRC算法进行计算CRC算法不细讲了。
下一个是CRC界定符1位必须是隐形电平之后就是ACK段里面有ACK槽和ACK界定符都是1位ACK槽的作用就是应答发送方发送一帧数据到底有没有设备接收到呢就靠ACK位来实现这里的应答设计和I2C的应答异曲同工它的基本思想就是当发送方发完一帧数据的主要内容后在应答这一位时发送方释放总线总线回归默认状态隐形1如果接收方收到数据了它就会在ACK槽这一位主动出击把总线再拉开时总线呈现显性0的状态发送方释放总线后在ACK槽会读取总线状态如果发送方读取为显性0那就是数据被接收了如果发送方读取为隐形1就说明发送失败发送方可以配置自动重发。可以看到在ACK槽这一位操作总线的权力是有一个短暂的交接的前面所有波形都只有发送方有权操作总线在ACK槽这一位变为接收方操作总线为了给权力交接流出时间ACK槽前后就要留两个界定符在CRC界定符时发送方必须发隐形1除了做一个分隔另一个作用就是在ACK槽之前发送方必须释放总线发送隐形1就是释放总线之后在ACK槽的时间点接收方会拉开总线ACK槽接收后接收方不能一直拉着不放所以在ACK界定符时接收方必须及时释放总线交出控制权。
这里有两个注意事项第一个是ACK槽时可以允许多个接收方共同拉开总线因为一个报文消息可以被多个设备同时接收所以多个设备可以在这里同时拉开多个设备同时操作总线输出显性0是没问题的。第二个是我没要知道并不是发送方把一段波形完整发出去然后在接收应答的而是发送方和接收方共同完成一整个波形发送方每发出一位接收方就立刻接收到这一位了所以在这条时序的最后整个数据帧还没结束接收方其实已经收完了也就是应答位夹在发送过程之中。
最后应答位结束发送方再发7个隐形1作为EOF帧结束与串口波形里的停止位是一个意思。
看完了标准格式再看一下拓展格式拓展格式出现的原因是标准格式的11位ID不够用了需要加一些并且拓展格式必须要考虑对标准格式的兼容。首先前面的11位ID仍然保持不变后面另外再额外加上18位ID那么中间还夹着两位一个是SRR意思是替代RTR位标准格式这一位是RTR后面学仲裁会知道。仲裁是先比较ID再比较RTR所以RTR必须在所有ID位的后面图上也用箭头指示了拓展格式中RTR位已经挪到后面那原来属于RTR的位置就空出来了这一位虽然空出来了但是也不能做别的用途因为同样是为了保证仲裁规则中标准格式优先级高于拓展格式的设计这一位SRR虽然没用但是必须给隐形电平1。然后后面IDE这一位就是拓展格式标志位了标准格式中IDE为显性0拓展格式中IDE为隐形1。最后ID结束后是RTR。
数据帧各部分用途总结
SOFStart of Frame帧起始表示后面一段波形为传输的数据位IDIdentify标识符区分功能同时决定优先级RTRRemote Transmission Request 远程请求位区分数据帧和遥控帧IDEIdentifier Extension扩展标志位区分标准格式和扩展格式SRRSubstitute Remote Request替代RTR协议升级时留下的无意义位r0/r1Reserve保留位为后续协议升级留下空间DLCData Length Code数据长度指示数据段有几个字节Data数据段的1~8个字节有效数据CRCCyclic Redundancy Check循环冗余校验校验数据是否正确ACKAcknowledgement应答位判断数据有没有被接收方接收CRC/ACK界定符为应答位前后发送方和接收方释放总线留下时间EOFEnd of Frame 帧结束表示数据位已经传输完毕
数据帧发展历史 遥控帧
遥控帧用途是接收设备主动请求数据与数据帧非常类似只是没有数据段有效载荷这部分。目前我们了解到CAN总线的数据主要靠发送方自觉广播出来一般发送方会定一个周期定时广播自己的数据但如果发送方没有及时发送数据或者这个数据使用频率太低了广播太频繁大家都用不着浪费总线资源广播太慢了偶尔用的话又不能及时拿到这样我们就可以规定发送方就不用主动广播这个数据了而是如果有设备需要的话首先接收方发出一个遥控帧遥控帧包含报文ID其实遥控帧也是广播出来的每个设备都能收到遥控帧然后如果其中某个设备有这个ID的数据它就会再通过数据帧广播出来这样接收方就能及时获取这个数据了所以可以看出遥控帧实现请求式数据传输也需要数据帧配合请求式传输每传输一次数据都需要一来一回两个过程适合那种使用频率低但偶尔又需要集中用几次的数。 遥控帧无数据段RTR为隐性电平1其他部分与数据帧相同 遥控帧和数据帧通过RTR进行区分数据帧RTR是显性0遥控帧RTR是隐形1当接收方收到RTR是隐形1后续就按照遥控帧的格式解析遥控帧的DLC之后没有数据段直接跟着就是CRC校验码遥控帧ID代表要请求的数据响应请求的一方通过相同ID的数据帧反馈数据当请求和反馈数据同时发生时数据帧拥有更高的优先级。
错误帧
初学了解即可。错误帧用途是某个设备检测出错误时向其他设备通知错误当某个设备发现总线上的波形不对产生错误它就会发出错误帧错误帧可以叠加在数据帧上并且可以破坏数据帧数据意思就是我发现这一帧数据有错现在我破坏了这个数据大家都不要用了是一种错误处理机制。
总线上所有设备都会监督总线的数据一旦发现“位错误”或“填充错误”或“CRC错误”或“格式错误”或“应答错误” 这些设备便会发出错误帧来破坏数据同时终止当前的发送设备 错误分为主动错误和被动错误设备默认处于主动错误状态处于主动错误状态的设备检测出错误时会连续发6个显性位发显性位就是拉开总线总线只要有一个设备拉开了就必然处于显性状态即0和1相遇总线总是处于0状态这是线与特性所以主动错误标志的6个显性位必然会破坏正常传输的数据其他设备检测到错误标志就会抛弃这个数据。主动错误产生太频繁说明这个设备不太可靠设备就会进入被动错误状态处于被动错误状态的设备检测出错误时会连续发6个隐形位发送隐形位就是不去碰总线不破坏总线别人发的数据但是会破坏自己发的数据自己的数据有问题自己破坏掉。发完错误标志后再发8个隐形1作为错误界定符。0~6位的延长时间是因为一个设备发出的错误标志可能会引发其他设备连带产生错误标志位多个设备的错误标志叠加起来这个标志位的长度可能就不止6位了所以后面这里画的是错误标志可能会延长0~6位的时间。
过载帧
初学了解即可。用途是接收设备通知其尚未做好接收准备其帧格式和错误帧类似只是过载帧不是在错误帧的时候产生而是发送方发太快接收方处理不了时由接收方产生。发过载帧将数据破坏掉发送方发不出去就会重试在这个破坏和重试的过程中发送数据就被延误了同时也间接告诉发送方接收方收不了。
当接收方收到大量数据而无法处理时其可以发出过载帧延缓发送方的数据发送以平衡总线负载避免数据丢失 帧间隔
初学了解即可。
将数据帧和遥控帧与前面的帧分离开 知道连续发送数据帧时其中间会有一小段间隔就好。帧间隔也分主动错误状态和被动错误状态主动错误状态帧间隔是3位被动错误状态帧间隔是3位另外加8位延迟传输。
位填充
为防止数据波形长时间不变化引入位填充。
位填充规则发送方每发送5个相同电平后自动追加一个相反电平的填充位接收方检测到填充位时会自动移除填充位恢复原始数据 位填充作用
增加波形的定时信息利于接收方执行“再同步”防止波形长时间无变化导致接收方不能精确掌握数据采样时机将正常数据流与“错误帧”和“过载帧”区分开标志“错误帧”和“过载帧”的特异性保持CAN总线在发送正常数据流时的活跃状态防止被误认为总线空闲
波形实例 CAN总线接收方数据采样
挂载在CAN总线上的所有设备初始都默认为接收方当某一个设备想要广播自己的数据时它就会主动出击变为发送方拉开或释放总线产生一段波形。那这个发送方产生波形后其他所有接收方该如何准确地采样得到每一个数据位是1还是0呢
CAN总线没有时钟线总线上的所有设备通过约定波特率的方式确定每一个数据位的时长发送方以约定的位时长每隔固定时间输出一个数据位接收方以约定的位时长每隔固定时间采样总线的电平输入一个数据位理想状态下接收方能依次采样到发送方发出的每个数据位且采样点位于数据位中心附近 接收方数据采样遇到的问题 位时序
为了灵活调整每个采样点的位置使采样点对齐数据位中心附近CAN总线对每一个数据位的时长进行了更细的划分分为同步段SS、传播时间段PTS、相位缓冲段1PBS1和相位缓冲段2PBS2每个段又由若干个最小时间单位Tq构成
Tq是程序中自己指定的比如可以确定一个Tq0.5us之后一位包含的四个段SS段固定为1TqPTS段可以由自己指定配置为1~8TqPBS1段也是自己指定配置为1~8TqPBS2段自己指定配置为2~8Tq除了SS段固定为1Tq其他的可以由自己在一个范围内指定。指定好之后在一位中SS、PTS、PBS1、PBS2就会依次排列。SS段意为同步段如果数据跳变沿正好出现在SS段那就说明当前设备与波形达成同步如果数据跳变沿不在SS段那就要调整当前设备的位时序使跳变沿正好出现在同步段。PTS意为传播时间段作业在手册里是这样说的PTS用于吸收网络上的物理延迟网络的物理延迟指发送单元的输出延迟、总线上信号的传播延迟、接收单元的输入延迟。PTS的时间为以上延迟时间的和的两倍。之后两个PBS1和PBS2意为相位缓冲段作用就是确定采样点的位置采样点会在PBS1和PBS2中间。 硬同步
硬同步也可以叫硬件同步解决的问题是时接收方第一个采样点与波形的第一位对齐。
每个设备都有一个位时序计时周期当某个设备发送方率先发送报文其他所有设备接收方收到SOF的下降沿时接收方会将自己的位时序计时周期拨到SS段的位置与发送方的位时序计时周期保持同步硬同步只在帧的第一个下降沿SOF下降沿有效经过硬同步后若发送方和接收方的时钟没有误差则后续所有数据位的采样点必然都会对齐数据位中心附近 这就是位时序周期可以想象成秒表总线上每个设备内部都有一个这样的秒表这个秒表顺时针一直转每转一圈就是一个数据位的时间那这个秒表的最佳状态就是所有设备的秒表都时刻处于同一个位置保持同步比如其中一个设备转到SS段了那么其他所有设备也都处于SS段。
举个例子假设现在所有秒表同步转动有一个设备想作为发送方开始一段波形那么发送方会在自己的秒表转到SS段时开始一个新数据位即发送方的每次数据跳变都会等自己的秒表转到SS段时产生这样接收方秒表每次转到SS段接收方就知道一个新的数据位开始了之后接收方直接在PBS1和PBS2之间进行数据采样这样正好是想要的采样位置。
如何保证所有设备的秒表都同步转动呢那就是其他所有接收方收到SOF就是第一个数据跳变边沿的下降沿时这时接收方会把自己的秒表直接拨到SS段与发送方保持同步因为发送方产生第一个跳变沿肯定也是发送方自己的SS段这样一个SOF边沿就将所有设备的秒表同步了。
接下来看一下接收方内部的位时序周期 先看上面那个图红线画的是总线上的波形当红线由逻辑高电平跳变到逻辑低电平时这个下降沿是发送方产生SOF的第一个下降沿下降沿时刻肯定是发送方的SS段那接收方一看这个下降沿并不在我的SS段里所以接收方就直接把自己的SS段与波形下降沿对齐也就是变成下面这个图接收方SS段与波形下降沿重合。
再同步
再同步也叫重新同步它的目的就是补偿误差如果所有设备的时钟都绝对精准那就用不到再同步功能。
若发送方或接收方的时钟有误差随着误差积累数据位边沿逐渐偏离SS段则此时接收方根据再同步补偿宽度值SJW通过加长PBS1段或缩短PBS2段以调整同步再同步可以发生在第一个下降沿之后的每个数据位跳变边沿
SJW自己指定配置为1~4Tq。 先看上面的波形这个位时序是接收方的蓝色的线表示总线上发送方发出的波形比如这个波形之前执行了硬同步之后传了很多位到这一位时可以看到当前数据跳变沿出现在了SS段之后也就是接收方的秒表跑的比发送方快接收方认为在SS部分就应该出现边沿但实际出现的晚了。所以接收方会执行再同步在其PBS1段之后额外加上SJW指定的补偿宽度。比如下面那个波形SJW配置为2误差也是2Tq所以PBS1延长2Tq这样下一次接收方SS段就会往后挪新的波形跳变沿就会往SS段的方向调整。 这是接收方秒表跑慢了波形的数据跳变沿就会提前出现这时接收方就会把它的PBS2段减少SJW指定的宽度。
注意事项如果误差值小于或者等于SJW指定值则误差几个Tq就补偿几个Tq。比如误差2TqSJW指定3Tq那实际补偿就是2Tq如果误差2TqSJW指定1Tq那实际补偿就是指定的1Tq。相当于SJW是再同步补偿宽度的最大限制。
波特率计算
波特率 1 / 一个数据位的时长 1 / (TSS TPTS TPBS1 TPBS2)例如 SS 1TqPTS 3TqPBS1 3TqPBS2 3Tq Tq 0.5us 波特率 1 / (0.5us 1.5us 1.5us 1.5us) 200kbps CAN总线多设备同时发送遇到的问题
CAN总线只有一对差分信号线同一时间只能有一个设备操作总线发送数据若多个设备同时有发送需求该如何分配总线资源解决问题的思路制定资源分配规则依次满足多个设备的发送需求确保同一时间只有一个设备操作总线 资源分配规则1-先占先得
若当前已经有设备正在操作总线发送数据帧/遥控帧则其他任何设备不能再同时发送数据帧/遥控帧可以发送错误帧/过载帧破坏当前数据任何设备检测到连续11个隐性电平即认为总线空闲只有在总线空闲时设备才能发送数据帧/遥控帧一旦有设备正在发送数据帧/遥控帧总线就会变为活跃状态必然不会出现连续11个隐性电平其他设备自然也不会破坏当前发送若总线活跃状态其他设备有发送需求则需要等待总线变为空闲才能执行发送需求
资源分配规则2-非破坏性仲裁
若多个设备的发送需求同时到来或因等待而同时到来则CAN总线协议会根据ID号仲裁段进行非破坏性仲裁ID号小的优先级高取到总线控制权ID号大的优先级低仲裁失利后将转入接收状态等待下一次总线空闲时再尝试发送实现非破坏性仲裁需要两个要求
线与特性总线上任何一个设备发送显性电平0时总线就会呈现显性电平0状态只有当所有设备都发送隐性电平1时总线才呈现隐性电平1状态即0 X X 01 1 1 1回读机制每个设备发出一个数据位后都会读回总线当前的电平状态以确认自己发出的电平是否被真实地发送出去了根据线与特性发出0读回必然是0发出1读回不一定是1
回读机制目的是确认自己发出的电平是否真实地发送出去了。因为根据线与特性我发送1如果要别的设备也在发送数据别的设备发送了0那么我读回的数据就不再是1了因为我的数据1被别的设备的数据0损坏了这个现象对仲裁就很重要我发出1但是读回的是0这说明总线上有别的设备我感知到了别的设备和我的冲突所以这时候我就退出不再跟别的设备抢总线资源。
非破坏性仲裁过程
规则是数据位从前到后依次比较出现差异且数据位为1的设备仲裁失利 单元1第一位SOF是显性0单元2第一位SOF也是显性0两个单元同时张开总线根据线与特性总线呈现显性0然后单元1回读总线电平是0没问题单元2回读总线电平是0也没问题所以单元1和单元2会继续发送之后依次分析直到图上红色所示位单元1的这一位ID号是1单元1发1释放总线单元2的这一位ID号是0单元2发0拉开总线。根据线与规则总线呈现显性0状态之后单元2回读为0和自己发的一样没问题但是单元1这时候回读也是0这就有问题了单元1发的是1读回却是0这说明有别的设备正在和单元1抢总线并且在这一位我发1它发0所以才会呈现出我发1但是读回0的现象此时刻单元1仲裁失利之后单元1就转为接收状态。
从仲裁过程可以看出为什么ID号小的优先级高ID号越小其二进制数据1出现的就越晚ID号出现差异且发送数据1的仲裁失利。
当有更多设备同时开始每个设备仍然执行“发一位回读一位”的流程一旦回读的和自己发的不一样自己就退出又因为每个设备发出消息的仲裁段必然不同所以在仲裁段数据位从前往后的比较中必然会陆续有设备主动退出并且在仲裁段结束时必然有且只有一个设备操作总线之后在执行后续数据位的发送就不会再出现多设备冲突的问题了。
位填充会不会影响仲裁呢首先说明位填充的作用范围是帧起始、仲裁场、控制场、数据场以及CRC序列所以在仲裁场里会进行为填充。如果填充位会改变A和B的优先级那填充位前面的位A和B就必须一样而一旦A和B前面的位一样那么A和B就填充一样的位了。结论就是填充位不会影响仲裁也不会改变原有ID号的优先级。
数据帧和遥控帧的优先级
数据帧和遥控帧ID号一样时数据帧的优先级高于遥控帧 仲裁段最后一位RTR遥控帧定义为1数据帧定义为0所以有ID号相同时数据帧优先级高于遥控帧。
标准格式和拓展格式的优先级
标准格式11位ID号和扩展格式29位ID号的高11位一样时标准格式的优先级高于扩展格式SRR必须始终为1以保证此要求 单元1拓展数据帧ID号的高11位正好和单元2标准数据帧的11位ID号完全一致下一位单元1发出的是SRR位SRR位在拓展数据帧中必须始终为1所以单元1发送数据1单元2此时要发出RTR位因为单元2是数据帧RTR位是0所以单元2发数据0。单元1仲裁失利转入接收状态。单元2继续发送后续数据。
CAN总线错误处理
错误类型
错误共有5种 位错误、填充错误、CRC错误、格式错误、应答错误 检测到对应错误时发送单元或者接收单元就会紧跟着主动出击发出错误帧破坏总线上的数据发出错误帧的行为就叫错误通知。意思是不管你们其他设备有没有检测到这个错误反正我现在检测到了错误我要破坏这个数据帧大家都不要收了。
错误状态
错误通知赋予了每个设备破坏传输的能力如果有设备无论收到啥都认为是错的那总线上正常的数据传输都无法完成了为了防止某一个设备因为自己的问题而干扰正常数据传输这个限制措施就是错误状态。
主动错误状态的设备正常参与通信并在检测到错误时发出主动错误帧被动错误状态的设备正常参与通信但检测到错误时只能发出被动错误帧总线关闭状态的设备不能参与通信每个设备内部管理一个TEC和REC根据TEC和REC的值确定自己的状态 TEC是发送错误计数器设备每发送一个错误这个TEC就会增加一次注意不是加1当然每进行一次正常的发送后TEC也会减小一次。REC是接收错误计数器设备在接收时每发现一个错误这个REC就会增加一次同样进行正常接收后REC也会减小一次。所以TEC和REC的值反映了当前设备检测错误的相对频率如果正常传输没几次错误检测到了一堆那TEC或REC肯定会迅速增加如果正常传输的次数很多只是偶尔报告了一些错误那么TEC或REC增加后肯定会迅速减回来。
初始状态是主动错误状态主动错误状态是比较可靠的状态如果TEC127或者REC127只要发送或接收有一个不正常就是错误报告相对与正常传输太频繁了那就把设备转入到被动错误状态被动错误状态表示设备不太可靠当然如果在被动错误状态设备又变好了进行了很多正常数据传输那么TEC或REC就会减小减小到TEC127并且REC127后设备重新回到主动错误状态。但是如果设备在被动错误状态仍然不断报告错误那么就说明这个设备可能出问题了所以在TEC255时会直接把设备转为总线关闭状态跟REC没关系。如果设备处于关闭状态就不能进行通信但是考虑到这个设备对系统可能有很重要的作用所以处于总线关闭状态的设备还有一条生路就是在执行上检测到128次连续11个位的隐形位总线关闭状态的设备就会直接回到主动错误状态满血复活TEC和REC都会清零。
错误计数器 波形示例