CAN的数据链路层

 一、总线的标准:分为底层标准化和高层协议

其中:     2.0A是认为29位ID为错误

                2.0B Passive仅支持识别11位ID数据帧

                2.0B Active可支持识别11位和29位两种数据帧

二、通信机制(半双工)

报文发送:

  1. 节点发送报文(总线空闲且需进行回读判断是否一致)
  2. “线与”机制(可以理解为“与”逻辑,其通过ID号进行仲裁、显性覆盖隐性—ID越小、报文优先级越高
  3. 非破坏性仲裁(退出仲裁进入“只听”,在总线空闲的时候进行报文重发)——只听模式:CAN控制器可以认为它的TX与收发器的TX已经被断开,只有RX可以接收总线上的信号
  4. 报文接受过滤:通过过滤器对接收的报文进行过滤(相关-接收、不相关-过滤)
  5. 编码方法:NRZ编码(优点:确保报文紧凑-相同带宽下信息量更大、缺点:不能保证足够的跳变沿用于同步、带来节点间的计时器累计误差—位填充

位填充 :作用于帧起始、仲裁场、控制场、数据场以及CRC序列

  规则

发送方:发送5个相同电平后,自动追加相反电平的填充位     

接收方:检测到填充位,自动移除填充位,恢复原始数据

作用

  • 增加波形的定时信息、利于接收方执行“异同步”,防止波形长时间无变化、导致接收方不能精确掌握数据采样时机
  • 将正常数据流与“错误帧”和“过载帧”区分
  • 保持CAN总线的活跃状态、防止误认为总线空闲

三、CAN报文帧的种类与帧格式解析 

1)种类:数据帧(报文)、遥控帧(接收设备请求数据,向其他节点发出具有同一标识符的数据帧)、错误帧(某个设备测出错位向其它设备通知)、过载帧(接收设备通知其尚未做好接收准备)、帧间空间(数据帧和(远程帧)通过帧间空间与前述的各帧分开)

SOF(起始帧)

显性位、在空闲时候发送

ID(报文)

包含意义、功能

RTR(数据帧/遥控帧)

数据帧(0)、遥控帧(1)

IDE(标准/扩展)

标准帧(0)、扩展帧(1)

SRR(代替远程请求)

扩展格式下代替RTR,无意义、永远(1)

R0、R1(保留位)

DLC(数据长度)

单位:字节

Data

有效载荷

CRC(校验)

CRC界定符

CRC界定符之前进行位填充

ACK

确保至少有一个节点正确接受,即发送方发1,有接收方存在则发0

EOF

7个连续(1)

ITM

3个(1)后总线进入空闲状态

DEL(界定符)

 

 帧格式:数据帧和遥控帧都是这种方式

当一帧发完后,怎么判断总线是否空闲准备接下一个呢?直到检测到11个1就认为总线空闲,这个时候就可以继续发数据

续:错误帧、帧间空间以及超载帧的分析以及一些仲裁在专栏继续分享

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值