XCP支持不同的传输层,如:XCP on CAN, XCP on CANFD,XCP on FlexRay, XCP on Ethernet, XCP on LIN, XCP on SxI 等等。下面将对不同的传输层进行简单的介绍。
XCP的帧报文结构
1、CAN
XCP需要通过CAN标识符来传输XCP的消息。XCP需要使用一对标识符来识别主单元(标定工具)和从单元(ECU),如下图标定工具标识符定义为555,从单元ECU的标识符定义为554。
CAN总线的每条消息最多传输8个有用字节。 但是,在XCP的情况下,CAN有用字节中的第一个字节表示PID标识符信息。 这意味着每个CAN消息有七个字节可用于传输有用数据。
图中的FILL、DAQ、TIMESRTAMP在DTO数据报文中才会存在,在CTO中并不存在。详情请查看XCP之CTO和XCP之DTO的文章。
2、CAN FD
CAN FD总线更改了CAN总线”带宽“和“数据场长度”的制约,CAN FD与CAN的主要区别为:
(1)新增了3个bit位:EDL位-隐性表示CAN FD报文,显性表示CAN报文;BRS位-隐性表示转换可变速率,显性表示不转换速率;ESI位-隐性表示发送节点处于被动错误状态,显性表示发送节点处于主动错误状态。
(2) 可变速率:CAN FD采用了两种不同的位速率。从控制场中的BRS位到ACK场之前(含CRC分界符)为可变速率,其余部分为原CAN总线用的标准速率。两种速率各自有一套位时间定义寄存器,它们除了采用不同的位时间单位TQ外,位时间各段的分配比例也可不同;
(3) 数据场长度:CAN FD对数据场的长度做了扩充,DLC为4bit长度,最大支持64个字节,在DLC小于等于8时与CAN总线是一致的,大于8时有一个非线性的增长,支持的数据字节长度可以为12,16,20,24,32,48,64。
主单元配置文件包含XCP的最大数据长度以及第二传输速率的参数。
3、FlexRay
FlexRay具有确定性。FlexRay是时间触发的总线系统,时间控制区域内的时隙会分配给确定的消息(定义哪个节点在哪个时隙发送什么内容),时隙通过固定的周期进行循环,也就是说消息在总线上的时间是可以被预测出来的。
FlexRay具有两条传输通道,两条通道的信息是相同的。当一条通道发生错误时,另外一条通道的数据仍可正常传输。如图中所示,节点1和4都是双通道冗余连接的。
FLexRay在国内的使用并不普遍,因此此处不再详细介绍其XCP的使用。
4、Ethernet
以太网上的XCP协议可以用到TCP/IP或者UDP/IP中。TCP/IP协议可以防止数据的丢失,具有重传机制。UDP/IP可能存在传输数据的丢失情况。
IP数据包始终包含发送单元和接收单元的地址,其地址对于节点来说是唯一的,并且由IP地址和端口号共同组成。
报文包含四个字节的控制区域,其中LEN为XCP数据包的字节长度,CTR为计数器,CTR用来监测数据包的丢失。主单元和从单元存在独立的计数器,主单元发送一条数据则其计数器+1,从单元接收到数据则计数器+1。UDP/IP适合发送测量数据,部分数据丢失是可以接受的。
主单元通过GET_SLAVE_ID监测网络中的从单元,从单元接收到命令后回复的响应信息包含以下几部分:
(1)IP地址(IPv4,不支持IPV6)
(2)端口号
(3) 支持的协议(TCP或UDP或两者都有)
(4)是否已经连接到XCP主单元的状态信息
5、Sxl
SxI是SPI或SCI的统称。SxI不是总线,而是仅适用于点对点连接的控制器接口,因此在这种类型的传输中没有寻址。任意两个节点之间的通信可以同步或异步运行。
报文包含四个字节的控制区域,其中LEN为XCP数据包的字节长度,CTR为计数器,CTR用来监测数据包的丢失。
6、USB/LIN
由于XCP on USB没有实际的意义,因此不做介绍。ASAM并没有定义XCP on LIN的标准,因此不做研究。
领取专属 10元无门槛券
私享最新 技术干货