【单片机】【UDS】 (单帧与多帧) 数据传输

        对于使用 CAN 的诊断通信系统,每个单帧 (SF)、 第一帧 (FF)、 连续帧 (CF) 或流控 制帧 (FC) 有 8 字节数据场;其中单帧的 CAN_DL≤8 且第一帧的 FF_DL≤4095;下表 中已定义 每个报文的类型。 CAN FD 帧的数据场支持最大 64 个字节,可包含的帧类型有单帧 (SF)、 第一帧 (FF)、 连续帧 (CF) 或流控制帧 (FC)。包含单帧的 CAN_DL>8 和第一帧的 FF_DL>4095。下表已定义每个报文的类型。

(1)单帧传输
       单帧意味着这一帧的数据场部分有效字节数<=8,不足的地方多以0xAA/55/CC等填充;无论单帧还是多帧,每一帧的0号字节的高四位用于区别帧类型(0/1/2/3);对于单帧SingleFrame,0号字节低4位【SF_DL】表示DLC(Data-Length-Control),表示需要读后面多长的数据(即后续有多少有效的数据位);
例:
02 10 03 55 55 55 55 55 -----> 有效数据是10 03
01 10 03 55 55 55 55 55 -----> 有效数据是10


(2)多帧传输
       首帧FF ---- FirstFrame,0号字节高4位固定为1,低4位加上1号字节组成DLC,表示多帧传输的数据长度(如果是22/2R读写数据服务,需要包含SID+DID)
       连续帧CF ---- ContinueFrame,0号字节高4位固定为2,低4位表示包的连续号SN,后面跟数据。SN根据以下规则定义: 首帧的SN值为 0,连续帧的第一帧SN值为1, 每增加一个连续帧,SN值增加1, 流控制帧不影响SN值的计算,当SN值达到15后,下一个连续帧的SN值为0。


       流控帧FC ---- FrameControl,0号字节高4位固定为3,低4位表示流状态参数FS。
FS(流控状态):0,CTS表示继续发送;1,WT表示等待,令发送方停止发送,直到下一个流控帧的到来;2,OVFLW表示溢出,当接收方接收到首帧,判断到FF_DL的长度比接收方缓冲区大时发送,随后发送方终止发送。1号字节表示BS(BlockSize)块大小,即告知发送方允许接下来发多少帧连续帧。当BS=0时,块大小不做限制。2号字节表示STmin(SeparationTimeminimum),规定了连续帧发送的最小时间间隔。

 

       下图为多帧传输机制,适用于 CAN 和 CAN FD 诊断通信系统。多帧传输时,应支持 ISO
15765-2 定义的流控传输方式。

                          

 
       为了确保正确的通信,每个控制器都必须遵守一组定时参数,这些参数在 ISO_15765-2 中
定义,仅适用于 CAN 控制器。支持以下参数集。
 

例:

UDS(统一诊断服务)是在车辆中使用的一种通信协议,它是基于ISO 14229标准开发的,用于车辆的诊断通信。在UDS中,数据的传输涉及种不同类型的,包括连续、流控等。 连续(Flow Control Frame):在处理较大的数据传输时,如果数据量超过了单帧能够承载的大小,就需要将数据分割成来传输。连续用于标记一个数据消息的的连续部分。它们通常会包含一个连续计数器,这个计数器会指明当前是该消息中的第几,以及消息总共有。 流控(Flow Control Frame):用于控制数据的发送速率,确保发送端和接收端的数据处理能够匹配。流控可以是正向的,比如发送方请求继续发送更的数据,也可以是反向的,比如接收方请求发送方减慢发送速度或者暂停发送。在UDS中,流控制通常通过发送特定的消息(如ISO 14229-3中定义的单帧和连续)来实现。 (Multi Frame):当传输的数据量超过一个的最大数据载荷时,就需要使用帧传输帧传输涉及到将数据分成个连续的,每个都有序号和总数的信息,接收方通过这些信息将重新组合成原始的数据消息。 在使用帧传输时,发送方和接收方之间的通信需要有相应的协议来确保数据的完整性和顺序性。如果在数据传输过程中,接收方没有正确地接收到某个,它可以通过发送流控来请求重传那个特定的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值