CAN学习之路【day2】

CAN学习之路day2


前言

供大方向软件工程转偏嵌入式开发者学习,本人为初学者


一、CAN的每一个数据帧能携带的数据长度??

(一)CAN数据帧分析
在这里插入图片描述
标准CAN只有11位标识符,每帧的数据长度为51+(0-64)=(51~117)位。

SOF : 帧起始,显性(逻辑0)表示报文的开始,并用于同步总线上的节点。

标识符: 标准CAN具有11位标识符号,用来确定报文的优先级。此域的数值越小,优先级越高。

RTR: 远程发送请求位,当需要从另一个节点请求信息时,此位为显性(逻辑0)。所有节点都能接收这个请求,但是帧标识符确定被指定的节点。响应数据帧同样被所有节点接收,可以被有兴趣的节点使用。

IDE: 标识符扩展位为显性时(逻辑0)表示这是一个标准CAN格式,为隐性时(逻辑1)表示这是扩展CAN格式。

r0: 保留位(可能将来标准修订会使用)

DLC: 4位数据长度代码表示传输数据的字节数目,一帧CAN最多传输8字节用户数据

数据0~64: 最多可以传输64位用户数据(8字节)

CRC: 16位(包含1位定界符)CRC校验码用来校验用户数据区之前的(包含数据区)传输数据段。

ACK: 2位,包含应答位和应答界定符。发送节点的报文帧中,ACK两位是隐性位,当接收器正确地接收到有效的报文,接收器会在应答位期间向发送节点发送一个显性位,表示应答。如果接收器发现这帧数据有错误,则不向发送节点发送ACK应答,发送节点会稍后重传这帧数据。

EOF: 7位帧结束标志位,全部为隐性位。如果这7位出现显性位,则会引起填充错误。

IFS: 7位帧间隔标志位,CAN控制器将接收到的帧正确的放入消息缓冲区是需要一定时间的,帧间隔可以提供这个时间。

扩展CAN具有29位标识符号,每帧数据长度位71+(0-64)=(71~135)位。
扩展CAN消息相对于标准CAN消息增加的内容如下:

SRR: 代替远程请求位,为隐性。所以当标准帧与扩展帧发送相互冲突并且扩展帧的基本标识符与标准帧的标识符相同时,标准帧优先级高于扩展帧。

IDE: 为隐性位表示标志位扩展帧,18位扩展标识符紧跟着IDE位。

r1: 保留

二、J1939的协议里,是如何定义的点对点和群发的?

MJ1939标准定义的大部分报文均旨在广播。意味着网络中传输的数据没有指定目标地址。这样任何想要使用数据的设备都不需要再额外请求报文。将来的软件升级也可以方便兼容新设备(地址分配)。
当报文必须指向特定设备时,可以再报文标识符里包含特定的目标地址。

J1939使用CAN2.0B协议中定义的29位标识符。
含有指定目标地址的报文(“PDU 1”)与旨在广播的报文(“PDU 2”)使用的标识符略有不同。
PDU是协议数据单元(即报文格式)。
SOF,SRR和IDE位由CAN标准定义,此处忽略。RTR位(远程请求位)在J1939中总是设置为0。
J1939协议中使用的29位标识符结构如下:
在这里插入图片描述
标识符的前三位是用于在仲裁过程中控制报文的优先级。0值拥有最高优先级。更高优先级值通常用于高速控制报文,例如从传动装置至发动机的转矩控制报文。包含时间不重要的数据的报文,例如车辆行驶速度,会被赋予较低优先级值。
标识符的下一位将保留备用,在报文发送中应设置为0。
标识符中的下一位是数据页选择器。此位扩展可由标识符表示的潜在参数组的数目。
协议数据单元格式(PF)用于确定是否可以作为包含目标地址报文发送或者报文总是作为广播报文发送。
对特定协议数据单元(PS)字段变化的解释以PF的值为依据:
如果PF处于0和239之间,则报文可寻址,且PS字段包含目标地址。
如果PF处于240和255之间,则报文只能广播(PDU2),且PS字段包含组扩展。
组扩展扩展了可由标识符表示的潜在广播参数组的数目。
术语参数组编号(PGN)适用于将保留位、DP、PF和PS字段的值合并成单个18位的值。

三、J1939的协议通讯原理及内容?

(1)J1939与CAN
J1939是一种支持闭环控制的在多个ECU之间高速通信的网络协议冈。主要运用于载货车和客车上。它是以CAN2.0为网络核心。
表1介绍了CAN2.0的标准和扩展格式,及J1939协议所定义的格式。
表2则给出了J1939年的一个协议报文单元的具体格式。可以看出,J1939标识符包括:PRIORTY(优先权位);R(保留位);DP(数据页位);PDU FORMAAT(协议数据单元);PDU SPECIFIC(扩展单元)和SOURCE ADDRESS(源地址)。而报文单元还包括64位的数据场。

表1:CAN2.0的标准和扩展格式及J1939协议所定义的格式
在这里插入图片描述
表2:J1939协议报文单元的具体格式
在这里插入图片描述
(2)数据传转协议
J1939通信中的核心是负责数据传输的传输协议。它的功能分为两部分:
1)数据的拆分打包和重组。一个J1939的报文单元只有8个字节的数据场。因此如果所要发送的数据超过了8个字节,就应该分成几个小的数据包分批发送。数据场的第一个字节从1开始作为报文的序号,后7个字节用来存放数据。所以可以发送255×7=1785个字节的数据。报文被接收以后按序号重新组合成原来的数据。
2)连接管理。主要对节点之间连接的建立和关闭,数据的传送进行管理。其中定义了5种帧结构:发送请求帧、发送清除帧、结束应答帧、连接失败帧以及用来全局接收的广播帧。节点之间的连接通过一个节点向目的地址发送一个发送请求帧而建立。在接收发送请求帧以后,节点如果有足够的空间来接收数据并且数据有效,则发送一个发送清除帧,开始数据的传送。如果存储空间不够或者数据无效等原因,节点需要拒绝连接,则发送连接失败帧,连接关闭。如果数据接收全部完成。则节点发送一个结束应答帧,连接关闭。
(3)J1939的参数格式
J1939中还定义了参数的具体格式,如标识符、优先级、数据长度、参数的范围等。参数又划分为状态参数和测量参数。状态参数表示具有多态信号的某一种状态,如发动机刹车使能/禁能、巡航控制激活/关闭,扭矩/速度控制超载模式、错误代码等。而测量参数则表示所接收到的信号的值的具体大小,如缸内爆发压力、最大巡航速度、发动机转速等。


总结

对CAN数据帧进行分析了解,对J1939中点对点和群发有初步了解。

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

测机电子枸吴咬风

感谢投喂~喵

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值