ISO-15765 解读

前言

本文主要介绍ISO-15765内容的四个CAN信号帧,单帧,首帧,连续帧,流控帧,对上述四种CAN信号帧,进行深度剖析解读。

ISO15765为实现基于CAN通信的拆包(SDU)与组包(PDU),定义了四种CAN信号帧。如下:

N_PDU nameN_PCI bytes
Byte #0Byte #1Byte #2
Bits 7 - 4Bits 3 - 0
Single Frame(SF)N_PCItype = 0SF_DLN/AN/A
First Frame(FF)N_PCItype = 1FF_DLN/A
Consecutive Frame(CF)N_PCItype = 2SNN/AN/A
Flow Control(FC)N_PCItype = 3FSBSSTmin

单帧

单帧(Single Frame):一条消息仅用一帧即可完成传输,即为单帧

N_PDU nameN_PCI bytes
Byte #0Byte #1Byte #2
Bits 7 - 4Bits 3 - 0
Single Frame(SF)N_PCItype = 0SF_DLN/AN/A

 SF_DL :接下来准备传输的数据长度,定义如下:

HEX描述
0保留
1 ~ 6单帧数据长度值(SF_DL)
7SF_DL = 7时,只允许标准地址
8 ~ F无效

 真实帧数据:

BYTEByte 0Byte 1Byte 2Byte 3Byte 4Byte 5Byte 6Byte 7
BITS7654321076543210765432107654321076543210765432107654321076543210
定义N_PCItype=0SF_DL数据段 空白数据补齐AA或FF或CC
BIN0000010001110100001000000000010000000010110011001100110011001100
HEX0474200402CCCCCC
FRAME0474200402CCCCCC
FRAME示例:0474200402CCCCCC

首帧

首帧(First Frame):当一条消息需要多帧才能完成传输,那么第一帧即被称为首帧

N_PDU nameN_PCI bytes
Byte #0Byte #1Byte #2
Bits 7 - 4Bits 3 - 0
First Frame(FF)N_PCItype = 1FF_DLN/A

FF_DL:接下来准备传输的数据长度,定义如下:

HEX描述
0 ~ 6保留
7FF_DL = 7 只允许扩展地址及混合地址
8 ~ FFF数据总字节数,拆分信息最大数据长度支持 4095 个用户数据

真实帧数据:

BYTEByte 0Byte 1Byte 2Byte 3Byte 4Byte 5Byte 6Byte 7
BITS7654321076543210765432107654321076543210765432107654321076543210
定义N_PCItype=1FF_DL数据段
BIN0001010000000010001101100000000111111111111111111111111111111111
HEX14023601FFFFFFFF
FRAME14023601FFFFFFFF

FRAME示例:14023601FFFFFFFF

连续帧

连续帧(Consecutive Frame):当一条消息需要多帧才能完成传输时,除了首帧外,其他帧被称为连续帧

N_PDU nameN_PCI bytes
Byte #0Byte #1Byte #2
Bits 7 - 4Bits 3 - 0
Consecutive Frame(CF)N_PCItype = 2SNN/AN/A

SN:表示当前连续帧的顺序,第一条连续帧的 SN = 1,后面每发出一帧连续帧SN加1,范围0 ~ 15,当SN = 15时,下一条连续帧重新变成0

真实帧数据:

BYTEByte 0Byte 1Byte 2Byte 3Byte 4Byte 5Byte 6Byte 7
BITS7654321076543210765432107654321076543210765432107654321076543210
定义N_PCItype=2SN数据段
BIN0010000111111111111111111111111111111111111111111111111111111111
HEX21FFFFFFFFFFFFFF
FRAME21FFFFFFFFFFFFFF
FRAME示例:21FFFFFFFFFFFFFF

流控帧

流控帧(Flow Control):流控帧的作用在于接收端告知发送端接受能力,控制消息传输速度的作用。

发送端收到接收端反馈的流控帧后,发送端会按照流控帧给出的接收能力进行发送连续帧。

连续传输的连续帧不超过 BS ,连续帧的发送间隔时间大于等于STmin。

若接收端已经收到 BS 数量的数据,且与首帧中包含的数据长度对比,发现数据还没接收满,则会发送流控帧,发送端会接着发送连续帧。

以此类推,直至所有的数据发送完成。

N_PDU nameN_PCI bytes
Byte #0Byte #1Byte #2
Bits 7 - 4Bits 3 - 0
Flow Control(FC)N_PCItype = 3FSBSSTmin

FS (Flow Status):用来通知发送端当前流状态,定义如下:

HEX描述
0继续发送(CTS),通知发送方重新发送连续帧,该值意味着接收者准备好接收最大 BS 个连续帧
1等待(WT),通知发送方继续等待新的流控帧(N_PDU)的到来,并重新设置 N_BS 定时器
2溢出(0verFlow),通知发送方无法接收该多帧,该流控参数值仅能在跟在回应首帧的流控帧中使用,并且仅能在首帧中 FF_DL 信息的长度超过了接收实体缓冲区大小时使用
3 ~ F保留

BS(Block size):表示接收端在发送下一帧流控帧之前允许发送端连续发送的最大连续帧个数,定义如下:

HEX描述
0用于指示发送端在拆分数据的发送期间接收端不在发送流控制帧了,发送端应当不停的发送剩下的连续帧,以便接收接收端另外的流控帧。
01 ~ FF该范围的 BS 参数值用于指示发送方在没有接收到下一帧流控帧期间能发送的最大数目的连续帧。

STmin(Separation Time min):表示发送端发送连续帧的最小间隔时间,定义如下:

HEX描述
00 ~ 7F间隔时间(STmin)范围:0ms - 127ms
该 STmin 单元的范围 00 - 7F 时,单位为毫秒(ms)
80 - F0保留
F1 - F9间隔时间(STmin)范围:100us - 900us
该 STmin 单元的范围 F1 - F9 时,最小分辨为 100 微秒(us),参数值 F1 = 100us,F9 = 900us
FA - FF保留

真实帧数据:

BYTEByte 0Byte 1Byte 2Byte 3Byte 4Byte 5Byte 6Byte 7
BITS7654321076543210765432107654321076543210765432107654321076543210
定义N_PCItype=3FSBSSTminN/A
BIN0011000000001000000000001100110011001100110011001100110011001100
HEX300800CCCCCCCCCC
FRAME300800CCCCCCCCCC
FRAME示例:300800CCCCCCCCCC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值