CAN 基础笔记

CAN特性

双线差分信号,显0隐1,CAN_H 3.5V/CAN_L 1.5V ——抗电磁干扰

Node工作方式:ID小优先,仲裁实现:回读+线与

回读:总线空时ECU发信号,CAN构件通过RX线检测总线电平(1为空闲),发出信号。发送时,接收器(RX线)检查接受是否正确,(发出的位和回读的位是否一致<一位一位比较>,不一致停发并转为接受状态)。

线与:从SOF开始11位,从左往右0出现的位置越早,总线报文ID越小,优先级越高。

非破坏性仲裁:退出仲裁后“只听”;空闲时随机退避后发送(空闲之后还是会发出)。

采用NRZ(不归零制)+位填充编码方式

NRZ与曼彻斯特编码相比,在相同位情况下可以携带更多信息。但可能出现位丢失不能同步的情况,此时引入位填充。

位填充:炒年糕时间不跳变保持相同电平会有误差。5011:五位相同,填反。

数据一致性--检错纠错:接口抗电磁干扰能力、CRC(循环冗余校验)校验、错误报文重发、临时错误恢复、永久错误关闭等

CRC: Y-1011001(A——1011001+FCS, B——1011001+FCS’)生成多项式x

FCS--free check sequence(真检验序列),模2取余

帧结构

数据帧:标准帧11位id 拓展帧29位id(11+18)

SOF(start of fram):帧起始,一位显性0,用于同步。仅总线上连续11位1才可发送SOF。

1、仲裁场

2、控制场&数据场

控制场:r1/IDE、r0和DLC

数据场:0~8字节,CAN数据部分;

3、CRC场&ACK场&EOF

CRC场:FCS+DEL

发送节点从SOF开始到数据场位,计算一个FCS冗余码放到CRC前15位中,接受节点收到后同样进行计算,结果CRC场和FCS比较,检查帧是否有效;

DEL :CRC界定符,隐形固定格式 #规定CRC界定符之前的数据进行位填充(5011)

ACK场:ACK+DEL

接受节点接受自起始帧到CRC段之间内容无错,将在ACK字段发送一个显性0。发送节点据此判断发送成功

EOF:帧结束

7个连续因行为表示数据帧结束;

节点在检测11个连续隐形位后认为总线空闲;CRC之后的位场都是固定格式,不需要位填充。

远程帧:接收接地那请求发送节点发送报文,无数据场部分,其余部分和数据帧一致。数据帧又称遥控帧。现在基本不用。

错误检测

错误帧:

位错(比特错):例如:1-0、0-1。例外:仲裁场及ACK场除外;

填充错误:出现6个相同的比特位;

CRC错误:计算的值和FCS不同;

格式检测

ACK检测:发送节点在ACK场中未检测到显性位——NoACK

错误状态:

主动错误:节点可收发,发出主动错误标志(6个连续的0,覆盖其他位,其他节点检测到放弃当前帧),正常参与总线通信。但CAN协议中最多位5个,检测到一个填充错误(留个显性0)后,标记位填充错误,发送(0-6bit)主动错误填充。随后发送错误界定符(8bit),8bit错误界定符+3bit帧间间隔=11位连续隐性位——表示总线空闲,重发。

被动错误:节点可收发,发送被动错误标志(6个连续的1,被其他位覆盖,不妨碍其他节点通信),使总线忽视其通信。

BusOFF:节点不参与任何总线活动。

 

 

先快恢复后慢恢复。

 位定时

暂时没看懂。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值