云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > CAN与CANopen总结 - 图文

CAN与CANopen总结 - 图文

  • 62 次阅读
  • 3 次下载
  • 2026/1/9 7:17:54

1.2.3 发送器/接收器的定义

发送器(TRANSMITTER)

产生报文的单元被称之为报文的“发送器”。此单元保持作为报文发送器直到总线出现空闲或此单元失去仲裁(ARBITRATION)为止。

接收器(RECEIVER)

如果有一单元不作为报文的发送器并且总线也不空闲,则这一单元就被称之为报文的“接收器”。

1.2.4 报文校验

校验报文是否有效的时间点,发送器与接收器各不相同。 发送器:

如果直到帧的末尾位均没有错误,则此报文对于发送器有效。如果报文破损,则报文会根据优先权自动重发。为了能够和其他信息竞争总线,重新传输必须在总线空闲时启动。 接收器:

如果直到一最后的位(除了帧末尾位)均没有错误,则报文对于接收器有效。

1.2.5编码

CAN-bus上的位流序列:仲裁场-CANID最高位最先发送;数据场-Data0最先发送,Data7最后传输,对应每一个字节,高位msb将会先发送; 位填充规则:位流序列中一旦出现五个连续的显性位将插入一个隐性位,如下图示;同时位流序列中一旦出现五个连续的隐性位将插入一个显性位。

位编码规则:

(1) 错误帧和过载帧形式固定,并不通过位填充编码;

(2) 数据帧或远程帧的CRC界定符、应答场、帧结束等位场形式固定,不通过位填充编码;

(3) 数据帧或远程帧的帧起始、仲裁场、控制场、数据场、CRC序列等位场,均通过位填充规则编码。

1.3 CAN笔记二

1、Message一词在CAN通讯中有特殊的内涵:首先它是一个位流序列,有固定的长度,并且有固定的格式;

2、通常用一个ID(IDENTIFIER)来标识一个CAN-bus上的Message,在同一个CAN-bus上(如一条双铰线)传输的Message必须具有不同的ID;

3、一个以某ID值标识的CAN Message也称一个CAN帧(CAN ),有两种帧类型: 当这个CAN帧的ID用11位二进制来标识时为一个标准帧(Standard ),用29位二进制来标识时为一个扩展帧(Extended );

4、CAN通讯严格执行“非破坏性仲裁”机制,最低优先级的CAN帧具有最高的ID二进制值,因为CAN-bus采用差分驱动,同时写入总线上的显性电平、隐性电平仅表现为显性电平; 5、标准帧的优先级高于扩展帧;

6、数据帧和远程帧用ID标识,错误帧和过载帧并不占用ID标识符,因为程序员不可能向CAN网络发送错误帧或过载帧,这两种帧由CAN控制器单独编码解码,CAN控制器内部集成错误、过载检测机制,一旦检测到传输错误或过载,CAN控制器会自动发送错误帧或过载帧,程序员只能查询CAN控制器状态位观察网络状态(是什么错误或者是否出现过载);

1.4 CAN笔记三

1、当同一个CAN网络中出现相同的CANID时

CAN总线的非破坏性仲裁机制不允许两个(多个)相同ID的CAN帧存在同一网络,当这种情况出现时,就存在一种可能:两个CAN帧同时参与总线竞争,要不同时竞争失败,要不同时竞争成功均获得总线使用权,一旦这两个具有相同ID的CAN帧同时享用总线,仲裁场发送完毕接着发送控制场、数据场??当然这两个位流序列不可能完全相同于是位错误(Bit

Check Error)必将同时被两节点检测到,两节点同时发出错误帧接着CAN-bus重启两个CAN帧重新参与竞争????有一种可能,网络上将出现死循环,所以必须小心!!

Make sure two nodes never send the same ID value at the same time. It is illegal but possible to do this. If two messages sent at the same time are identical, they will be seen as one. If the data bytes are different, this will result in a bus error and the frames will be resent continuously. This creates havoc on the bus until bus-off occurs.

2、以标准帧(数据帧)为例,拆解CAN帧位序流

SOF(Start Of ):显性位(0),必须在Bus Idle状态发出,网络上所有节点在“下降沿”执行一次同步; Identifier Field:11bits,CANID;

RTR(Remote Transmission Request Bit):显性位(0),隐性(1)时标识该帧为远程帧; IDE(Identifier Extension Bit):显性位(0),标识该帧为标准帧;

r0(reserved bit):保留位,发送器必须发送显性位,但接收器检测到该位表现为不敏感,不会激发bit error错误; DLC(Data Length Code):4bits,标识数据场的数据字节数,DLC=0时,数据场无数据,DLC>=0x1000时,数据场为8字节数据;

Data Field:将要发送的过程数据,0-8字节,具体有DLC确定,Data0先发送,Data0的Msb先发送; CRC Sequence:循环冗余检测序列,校验和,15bits,由CAN控制器硬件完成CRC算法并位场填充; CRC Delimiter:CRC界定符,1bit,必须为隐性;

Ack Slot:应答间隙,1bit,发送器端送出隐性电平,接收端送出显性位标识握手信号,发送器检测该位为隐性将激发应答错误;

Ack Delimiter:应答界定符,1bit,必须为隐性; End Of :发送端送出7个隐性电平,标识数据帧结束。 1、CAN错误检测(Error Detection)

CAN网络具有严格的错误诊断功能,该功能已固化在硅片之中,一旦错误被检测,正在传送的数据帧将会立即停止而待总线空闲时再次重发直至发送成功,该过程并不需要CPU的干涉除非错误累计该发送器退隐(Bus Off)。CAN控制器可检测如下五种错误:

√ 位错误(Bit Check Error)

发送器在发送比特流的同时也对发出的比特流采样回收,若送出的bit与所期待的bit不合,则会检测到一个Bit Check Error;如果所发送的位值与所监视的位值不相符合,则在此位时间里检测到一个位错误(BIT ERROR)。但是在仲裁场(ARBITRATION

FIELD)的填充位流期间或ACK间隙(ACK SLOT)发送一“隐性”位的情况是例外的—— 此时,当监视到一“显性”位时,不会发出位 错误(BIT ERROR)。当发送器发送一个被动错误标志但检测到“显性”位时,也不视为位错误。(CAN控制器當然是發出去的每一筆都會收回來,這是CAN總線的錯誤控制功能,但同時收回來的數據,你的CPU不會收到,因為是你發出去的,你就不必收到了)

√ 位填充错误(Bit Stuff Error)

在需要执行位编码规则的位流序列中检测到第6个连续的极性相同的位序流时,则检测到一个Bit Stuff Error;

√ CRC 错误(CRC Error)

发送端送出的CRC序列由发送器算出,接收器执行同样的CRC算法,若计算结果与接收到的CRC序列不符,一个CRC Error被检测到,由发送端送出;

√ 帧格式错误( Check Error)

当一个固定形式的位场含非法位,则检测到一个 Check Error(接收端检测到帧结束最后一位为显性时帧错误忽略);

√ 应答错误(Acknowledgment Error)

ACK SLOT采样为隐性,则检测到一个Acknowledgement Error;

2、CAN错误界定(Error Confinement)

CAN控制器内置两个错误计数器:Receive Error Counter及Tranmit Error Counter(错误计数器的计数规则后附)。当某个计数器的当前值达到128时,CAN控制器将进入“Error Passive Mode”,此时该节点仍然参与CAN通讯,检测到错误时只能发送“Error Passive Flag”,且错误帧发送完毕重启下一个发送之前有8bits位时的挂起状态;当Tranmit Error Counter当前值为255接着又一个错误被检测到时,CAN控制器将进入“Bus Off Mode”,此时该节点与总线完全脱离,整个瘫痪;计数器当前值均小于128时,CAN控制器被标识为“Error Active Mode”,CAN节点可正常通讯并检测到错误时发送“Error Active Flag”。这三种状态之间关系为:

报文成功传送后(得到应答及直到帧末尾结束没有错误),发送错误计数器值减1,除非已经是0。 错误计数器是控制器自己计数(凡是没有提供外部接口而CAN协议包含的功能都是控制器自动完成的)。

3、LPC2294中的CAN控制器错误处理

LPC2294内置的CAN控制模块完全符合CAN Spec 2.0B,当CAN控制器被迫进入BusOff状态后:CANGSR寄存器中的BS位置位;CANICR中的BEI位置位,若CANIER寄存器的BEIE使能,将引发CAN中断;CANMOD中的RM置位,CAN控制器处于复位状态;同时发送错误计数器被设置为127,接收错误计数器清零。CAN控制器进入BusOff状态后必须由软件复位RM位,以恢复通讯;RM清零进入Normal Operation状态后,当检测到总线上11bits的连续隐性位流出现128次之后,发送错误计数器清零,CANGSR中的BS、ES位清零,同时若中断允许,将产生中断,CAN控制器重返CAN通讯。

4、CAN2.0B(Active)规范的错误计数器的计数规则:

1. When a RECEIVER detects an error, the RECEIVE ERROR COUNT will be increased by 1, except when the detected error was a BIT ERROR during the sending of an ACTIVE ERROR FLAG or an OVERLOAD FLAG.

2. When a RECEIVER detects a ’dominant’ bit as the first bit after sending an ERROR FLAG the RECEIVE ERROR COUNT will be increased by 8.

3. When a TRANSMITTER sends an ERROR FLAG the TRANSMIT ERROR COUNT is increased by 8. Exception 1:

If the TRANSMITTER is ’error passive’ and detects an ACKNOWLEDGEMENT ERROR because of not detecting a ’dominant’ ACK and does not detect a ’dominant’ bit while sending its PASSIVE ERROR FLAG. Exception 2:

If the TRANSMITTER sends an ERROR FLAG because a STUFF ERROR occurred during ARBITRATION, and should have been ’recessive’, and has been sent as ’recessive’ but monitored as ’dominant’. In exceptions 1 and 2 the TRANSMIT ERROR COUNT is not changed.

搜索更多关于: CAN与CANopen总结 - 图文 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

1.2.3 发送器/接收器的定义 发送器(TRANSMITTER) 产生报文的单元被称之为报文的“发送器”。此单元保持作为报文发送器直到总线出现空闲或此单元失去仲裁(ARBITRATION)为止。 接收器(RECEIVER) 如果有一单元不作为报文的发送器并且总线也不空闲,则这一单元就被称之为报文的“接收器”。 1.2.4 报文校验 校验报文是否有效的时间点,发送器与接收器各不相同。 发送器: 如果直到帧的末尾位均没有错误,则此报文对于发送器有效。如果报文破损,则报文会根据优先权自动重发。为了能够和其他信息竞争总线,重新传输必须在总线空闲时启动。 接收器: 如果直到一最后的位(除了帧末尾位)均没有错误,则报文对于接收器有效。 1.2.5编码 <

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com