xcp ccp uds协议之间的意义
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CAN总线协议、J1939协议、UDS协议、XCP/CCP之间的联系概要图
CAN总线协议:是一种用于实时应用的串行通讯协议总线,它可以使用双绞
线来传输信号,是世界上应用最广泛的现场总线之一。
CAN协议用于汽车中各种不同元件之间的通信,以此取代昂贵而笨重的配电线束。
该协议的健壮性使其用途延伸到其他自动化和工业应用。
CAN物理层的基础知识
CAN总线在汽车的运用的实例图
CAN总线的基本特点:
(1)节点间采用多主通信方式。
(2)采用了短帧结构,报文帧有效字节数为8位,可以达到汽车实时响应的要求。
(3)报文ID值越小,优先级也高。
(4)非破坏性总线仲裁处理机制。
(5)可靠的CRC校验方式。
(6)自动重发的机制。
(7)在节点出现众多的错误时,会自动脱离总线的功能。
(8)CAN通讯距离最大是10公里(设速率为5Kbps),或最大通信速率为
1Mbps(设通信距离为40米)。
(9)CAN总线上的节点数可达110个。
(10)采用双线串行通信方式,检错能力强,可在高噪声干扰环境中工作。
(11)具有实时性强、传输距离较远、抗电磁干扰能力强、成本低等优点。
(12)总线状态总线有“显性”和“隐性”两个状态,“显性”对应逻辑“0”,“隐性”对应逻辑“1”。
“显性”状态和“隐性”状态与为“显性”状态,所以两个节点同时分别发送“0”和“1”时,总线上呈现“0”。
CAN总线采用二
进制不归零(NRZ)编码方式,所以总线上不是“0”,就是“1”。
但是CAN协议并没有具体定义这两种状态的具体实现方式。
CAN的收发器
CAN 收发器的输入信号和输出信号都是CANH-CANL的差分信号。
不归零(NRZ)编码方式
填充位
CAN的串行通信有异步和同步.同步串行通信是每个时钟沿采样数据的
同步串行通信是每个时钟沿采样数据的,所以不会产生波特率误差产生的通讯误差。
位填充区域
CAN节点的物理结构
CAN链接层的基础知识
CAN总线传输的报文有两种格式,分别是标准帧跟扩展帧,CAN报文有以下不同的帧类型:
数据帧:
帧起始(SOF):1bit ,显性信号,表示数据帧或者远程帧的开始。
仲裁段:由标识符和远程请求位RTR组成,标识符确定报文发送优先级的,CAN总线是一种串行总线,总线上一次只能传输一则报文信息,如果同时有多个节点需要在总线上发送报文,通过标识符决定哪个先发送,还可以通过标识符过滤数据帧,采集想要的数据。
远程请求位用于区分该帧是数据帧还是远程帧,显性信号(0)代表数据帧,隐性信号(1)代表远程帧。
这里就解释了非破坏性总线仲裁的处理机制。
控制段:6bit ,数据长度代码DLC占4bit,IDE 1bit用来表示是标准帧还是扩展帧,r 1bit 保留位。
标准格式和扩展格式的控制场格式不同。
标准格式里的帧包括数据长度代码、IDE位(为显性位)及保留位r0。
扩展格式里的帧包括数据长度代码和两个保留位:r1和r0。
其保留位必须发送为显性,但是接收器认可“显性”和“隐性”位的任何组合。
其结构如图所示:
控制场结构
数据长度代码DLC,如下表所示
下面是控制端的标准帧和扩展帧之间需要注意的
数据段:8bit ,由数据帧里的发送数据组成。
它可以为0~8个字节,每字节包含了8个位,首先发送最高有效位(MSB)。
循环冗余码CRC段:16bit ,15bit用于校验是否正确,1bit表示循环校验序列的结束。
CRC是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定
生成 CRC 码的基本原理:
任意一个由二进制位串组成的代码都可以和一个系数仅为‘0’和‘1’取值的多项式一一对应。
例如:代码1010111 对应的多项式为x6+x4+x2+x+1,而多项式为x5+x3+x2+x+1 对应的代码101111。
要传输的信息序列为1101,在末尾添加所给多项式的最高次阶个0,如本题为x^3,则添加3个0,变为:1101000;
由多项式G(X)=X3+X+1,得其阶数为1的二进制编码为:1011;1101000对1011进行模二除法,所得到的余数即为校验码,把校验码添加在原数据尾部即为所求的编码,则实际发送的数据序列为1101001。
校验码计算过程如图所示:
模二除法
确认段(ACK):
帧结束(EOF):7bit,每一个数据帧和远程帧均由一标志序列界定。
这个标志序列由7个“隐性”位组成。
ITM:3个连续的隐性位
ITM之后进入总线空闲状态,节点检测到11个连续隐性位, 认为总线进入空闲阶段,此时节点可以发送报文。
远程帧
通过发送远程帧,总线的节点发出远程帧,请求以前发送给它数据帧的节点再发送一遍。
具体发送哪个数据帧,由远程帧的标识符决定。
与数据帧类似,远程帧也有标准格式和扩展格式,而且都由6个不同的位场组成:帧起始、仲裁场、控制场、CRC场、应答场、帧结尾。
与数据帧相反,远程帧的RTR位是“隐性”的。
它没有数据场,数据长度代码DLC的数值是不受制约的(可以标注为容许范围0~8里的任何数值),此数值是相应于数据帧的数据长度代码。
远程帧结构如图所示:
远程帧做用:
远程帧和数据帧之间可以使用相同的ID地址。
错误帧
错误帧由两个不同的场组成,第一个场是不同节点提供的错误标志(Error Flag)的叠加,第二个场是错误界定符。
为了能正确地终止错误帧,“错误认可”的节点要求总线至少有长度为3个位时间的总线空闲。
因此,总线的载荷不应为100%。
错误帧结构如图:
(1) 错误标志,有两种形式的错误标志:激活错误标志和认可错误标志
“主动错误”标志由6个连续的“显性”位组成;“被动错误”标志由6个连续的“隐性”的位组成,除非被其他节点的“显性”位重写。
(2) 错误界定符,错误界定符包括8个“隐性”的位。
错误标志传送了以后,每一个节点就发送一个“隐性”的位,并一直监视总线直到检测出一个“隐性”的位为止,然后就开始发送其余7个“隐性”位。
CAN的错误类型
位错误
节点检测到的位与自身送出的位数值不同,仲裁或ACK位期间送出“隐性”位,而检测到“显性”位不导致位错误。
填充错误
在使用位填充编码的帧场(帧起始至CRC序列)中,不允许出现六个连续相同的电平位。
CRC错误
节点计算的CRC序列与接收到的CRC序列不同。
格式错误
固定格式位场(如CRC界定符、ACK界定符、帧结束等)含有一个或更多非法位。
ACK错误
发送节点在ACK位期间未检测到“显性”位。
错误检测的区域
发送节点会产生的错误:位错误、格式错误、ACK错误。
接收节点会产生的错误:填充错误、格式错误、CRC错误。
检测到错误后,发送错误标志
位错误、填充错误、格式错误或ACK错误产生后,错误标志在下一位发送。
CRC错误产生错误后,错误标志在ACK错误标志在下一位发送。
CAN节点的状态
每个节点都含有REC和TEC ,当接收错误产生时,REC增加,正确接收到数据帧,REC减少TEC类似,REC、TEC的数值会引发节点状态改变。
如果总线上只有一个节点,该节点发送数据帧后得不到应答,TEC最大只能计到128 即节点只会进入被动错误状态而不会进入总线关闭状态。
过载帧。