UDS 里要先分清两层:UDS:诊断应用层,关心 SID,例如 0x10、0x22、0x2E、0x34、0x36、0x37ISO-TP / CAN-TP:传输层,负责单帧、多帧、流控、连续帧流控帧 FC 和连续帧 CF 严格来说不是 UDS 帧,而是承载 UDS 报文的 ISO-TP 帧。ISO-TP 帧类型普通 8 byte CAN 下,首字节高 4 bit 是 PCI 类型:0x0n:Single Frame,单帧,n = 数据长度,最多 7 byte UDS 数据0x1n:First Frame,首帧,多帧开始,后面带总长度0x2n:Consecutive Frame,连续帧,n = Sequence Number0x30:Flow Control,流控帧,由接收方发给发送方连续帧 CF当 UDS 数据超过单帧容量时,发送方先发 First Frame,然后等待接收方 Flow Control,之后再发 Consecutive Frame。连续帧格式:Byte0: 0x2N 高 4 bit = 2,表示 Consecutive Frame 低 4 bit = SN,序号 1,2,3...F,0,1...Byte1~7: 后续数据例如:21 xx xx xx xx xx xx xx22 xx xx xx xx xx xx xx23 xx xx xx xx xx xx xx...2F xx xx xx xx xx xx xx20 xx xx xx xx xx xx xxSN 的作用是让接收方判断有没有丢帧、乱序、重复帧。流控帧 FC流控帧由“接收方”发出,用来告诉发送方:你可以继续发、等一下、或者我收不了了。格式:Byte0: 0x30 / 0x31 / 0x32Byte1: BSByte2: STminByte3~7:
【UDS-流控帧和连续帧】
UDS 里要先分清两层:UDS:诊断应用层,关心 SID,例如 0x10、0x22、0x2E、0x34、0x36、0x37ISO-TP / CAN-TP:传输层,负责单帧、多帧、流控、连续帧流控帧 FC 和连续帧 CF 严格来说不是 UDS 帧,而是承载 UDS 报文的 ISO-TP 帧。ISO-TP 帧类型普通 8 byte CAN 下,首字节高 4 bit 是 PCI 类型:0x0n:Single Frame,单帧,n = 数据长度,最多 7 byte UDS 数据0x1n:First Frame,首帧,多帧开始,后面带总长度0x2n:Consecutive Frame,连续帧,n = Sequence Number0x30:Flow Control,流控帧,由接收方发给发送方连续帧 CF当 UDS 数据超过单帧容量时,发送方先发 First Frame,然后等待接收方 Flow Control,之后再发 Consecutive Frame。连续帧格式:Byte0: 0x2N 高 4 bit = 2,表示 Consecutive Frame 低 4 bit = SN,序号 1,2,3...F,0,1...Byte1~7: 后续数据例如:21 xx xx xx xx xx xx xx22 xx xx xx xx xx xx xx23 xx xx xx xx xx xx xx...2F xx xx xx xx xx xx xx20 xx xx xx xx xx xx xxSN 的作用是让接收方判断有没有丢帧、乱序、重复帧。流控帧 FC流控帧由“接收方”发出,用来告诉发送方:你可以继续发、等一下、或者我收不了了。格式:Byte0: 0x30 / 0x31 / 0x32Byte1: BSByte2: STminByte3~7: