Chinaunix首页 | 论坛 | 博客
  • 博客访问: 420936
  • 博文数量: 55
  • 博客积分: 167
  • 博客等级: 入伍新兵
  • 技术积分: 1167
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-28 10:20
个人简介

一个算是正常的中国码农!

文章分类

全部博文(55)

文章存档

2014年(1)

2013年(31)

2012年(23)

我的朋友

分类: 嵌入式

2013-07-25 14:14:08

原文地址:CAN的ACK深入理解 作者:CUTianrui007

       

CAN信息发送成功后,会有个应答间隙的,在这个间隙内,接收节点可以准备要回复的信息,也就是把应答场填充为显性0,在发送时其为隐性1.应答过程可能如下:当信息传输到ACK前的Del时,可以认为信息已经传输完毕,接收节点也接收到了足够的信息来检测接收的信息是否正确,所以这时接收节点就会检测信号是否正确,如果正确,就将ACK置位为显性0,注意这时,发送节点因为还在发送而接收节点又将ACK信息置位为1,所以它就会在回读时检测到ACK0,判断接收成功。注意:这其中有个接收节点用显性覆盖隐性---覆盖ACK位的过程,覆盖+回读

    ACK前后各加一个Del,就是为了考虑到时间误差,让接收节点有足够的时间对ACK确认。

    这个过程说明,CAN发送是个双向互动的过程,发送节点一边发送,一边对节点进行回收确认数据正确,而接收节点也时刻接收,并在正确的时间将ACK设置为1。那么,如果没有外部CAN接收器,那么其错误类型显然就是

ErrorFrame  ECC: 11011001, Other Type of Error, Segment = ACK Slot   

       |  ECC       11011001              

       |  Code      Other Type of Error   

       |  Segment   ACK Slot  

因为没有CAN节点对接收到的信息进行确认,不管波特率如何,都要有CAN节点进行确认。

2013年1月11日 18:23:02

阅读(11695) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~