XCP协议全称为X Calibration Protocol,它是一种广泛使用在标定校准和测量的一种通信协议,由 ASAM 工作组标准化, 可以在不同的总线系统上使用,例如:XCP on CAN、XCP on CAN FD、XCP on Ethernet、XCP on FlexRay、XCP on LIN。我们在测试中经常会遇到修改软件的一些内部变量,常规的方法是无法实现该种类型的操作的,不过XCP就是那个例外,它可以访问ECU内部值并且在特定的用例中对其进行控制。在CANoe中,ECU的内部信号被映射为系统变量,因此可以通过分析窗口、CAPL函数等进行集成使用,CANoe软件作为XCP协议的主站,同时与多个设备进行通信,在这里我们就先介绍下CAPL调用XCP的常用函数。
目录
xcpConnect & OnXcpConnect
xcpDisconnect & OnXcpDisconnect
xcpIsConnected
xcpConnect & OnXcpConnect
功能:建立与 XCP/CCP 设备的连接并开始配置的 DAQ 测量。
ecuQualifier:设备名称 – 在 CANoeXCP/CCP 窗口中配置。
返回值:
0:连接成功
-1:具有此名称的设备不存在
-2:不允许操作 – 已连接
示例代码
testcase TC_ConnectToECU ()
{
xcpConnect("ECU_Name");
}
//Callback function:
void OnXcpConnect (char ecuQualifier[])
{
//Set calibration page to RAM
xcpSetCalPage(ecuQualifier, 0x83, 0, 0);
}
xcpDisconnect & OnXcpDisconnect
功能:断开与 XCP/CCP 设备的连接。
ecuQualifier:设备名称 – 在 CANoeXCP/CCP 窗口中配置。
返回值:
0:连接成功
-1:具有此名称的设备不存在
-2:不允许操作 – 已连接
示例代码
testcase TC_DisConnectToECU ()
{
OnXcpDisconnect("ECU_Name");
}
xcpIsConnected
功能:检查CANoe与XCP/CCP设备的当前连接状态。
ecuQualifier:设备名称 – 在 CANoeXCP/CCP 窗口中配置。
返回值:
0:未连接
1:成功连接
-1:名字为ecuQualifier的设备不存在
示例代码
long Get_xcpConnect_State()
{
long xcp_state = 0xFF;
xcp_state = xcpIsConnected("ECU_Name");
return xcp_state;
}