CAN总线笔记(有关报文基础知识的理解)

答辩结束了,认真看了CAN总线的基础,写了第一个博客。

(一)基本概念
1.CAN总线是双绞线,分为CAN_HIGH和CAN_LOW两根线双绞线。
2.具体功能就是支持CAN总线共能的一个或者多个设备通过两个条CAN总线进行数据通讯。
3.设备在can总线上通讯没有主从关系,以广播的形式进行。所有节点都可以接收到某一设备发出的报文(一串二进制数据),接受到数据的设备通过报文来识别是不是需要自己 处理的。
(二)显性和隐性
can总线中一个非常重要的概念就是显性(0)和隐性(1),只要有一个设备有显性的请求,总线就是显性,只有总线上设备全部隐性时才呈隐性。形成显性和隐性的原因是电压差,来自CAN_HIGH和CAN_LOW这两根线的电压差,隐性状态下,两根线都是2.5V,当有信号改变的时候,形成显性状态,在显性状态下一个3.5V另一个1.5V。形成方式如图:
形成显性和隐性的原因
(二)报文
报文是can总线上设备之间互相交流的语言,他们有固定的沟通规则,也就是can总线上发送的数据串。报文的格式有两种,一种是标准can,一种扩展can,两种形式的can总线,主要不同在标识符(下边说,重点就说标准can)。报文包含四种帧,数据帧、远程帧、错误帧和过载帧(实际上就是根据一定规则建立的二进制串)。

  1. 数据帧
    数据帧的内容由七个部分组成,(1)一个起始位(一定显性)。(2)11位仲裁领域(也就是标识符,扩展can有29位仲裁域)和1位RTR,大概理解就是谁的仲裁域越小谁就先用总线(标准can优先级永远大于扩展can,主要因为RTR位)。1位RTR位,这一位标准can为显性,扩展can为隐性,所以标准can的优先级永远大于扩展can。(3)6位控制域,一位IDE(标准can为显性,扩展can为隐性),一位预留位,后4位代表代码长度。(4)0-8个字节的数据域,就是设备想要发送的内容。(5)CRC校验域,15位CRC值和1位CRC界定符,会自动根据发送内容生成一个CRC值,用于校验数据是否在传输过程中发生错误(下一篇博客我会做一篇手算CRC的过程,一个小算法)(6)ACK(应答域),包含1位ACK槽和1位应答界定符,发送端ACK是两个隐性位,接收端在接受到数据后,在ACK槽发送显性位。(7)帧结束,表示该帧结束,由七个隐性位构成。标准can数据帧
    每一个帧里边这域多少位特别重要,一定要记准。

  2. 错误帧
    错误帧,包含6位错误标志和8位隐性错误界定符。(提错误帧,要提一个位填充规则,就是连续五个相同极性之后会出现一个位填充与前边五个极性相反。)
    错误形式也分两种,主动错误和被动错误,主动错误标志由6个显性位组成,被动错误标志由6个隐形位组成。根据位填充规则,明显是错误标志破坏了位填充规则。
    而错误界定符,在错误标志发送之后发送8个隐形位。(错误监测一定相对也很重要)
    错误帧

  3. 远程帧
    这个帧就是向总线上的设备提一个需求,能做得就给他返回一个数据帧。远程帧RTR是隐性的其他的都和数据帧相同。

  4. 过载帧
    过载帧是用于接收单元通知其尚未完成接收准备的帧。
    这一帧基本用不上,can总线设备会处理好需求。

最后还有一个帧之间的间隔,叫帧间隔。有三个隐形位构成。用于将上述几个帧分隔开。
下一篇博客是CRC手推的内容。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值