0% found this document useful (0 votes)
50 views21 pages

PCAN-PassThru-API UserMan Eng

Uploaded by

slawaw
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
50 views21 pages

PCAN-PassThru-API UserMan Eng

Uploaded by

slawaw
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 21

PCAN-PassThru API 04.

04
Pass-Thru API and Connection of Pass-Thru
Software to PEAK CAN Interfaces

User Manual

Document version 1.4.1 (2022-07-18)


PCAN-PassThru API 04.04 – User Manual

PCAN® is a registered trademark of PEAK-System Technik GmbH.


Other product names in this document may be the trademarks or registered trademarks of their respective companies. They are not
explicitly marked by ™or ®.

© 2022 PEAK-System Technik GmbH


Duplication (copying, printing, or other forms) and the electronic distribution of this document is only allowed with explicit
permission of PEAK-System Technik GmbH. PEAK-System Technik GmbH reserves the right to change technical data without prior
announcement. The general business conditions and the regulations of the license agreement apply. All rights are reserved.

PEAK-System Technik GmbH


Otto-Roehm-Strasse 69
64293 Darmstadt
Germany

Phone: +49 6151 8173-20


Fax: +49 6151 8173-29

www.peak-system.com
[email protected]

Document version 1.4.0 (2022-07-18)

2
PCAN-PassThru API 04.04 – User Manual

Contents

1 Introduction 4
1.1 Features 4
1.2 System Requirements 4
1.3 Scope of Supply 5

2 Installation 6
2.1 Hardware Interface Configuration 6
2.1.1 Additional Options 7

3 Programming Interface 8
3.1 Implementation 8
3.1.1 PassThru Functions 8
3.1.2 PassThru Message Structure 9
3.1.3 PassThruIoctl 9
3.2 Function Examples 10
3.2.1 Opening a PassThru Device 10
3.2.2 Connecting to CAN 11
3.2.3 Connecting to CAN FD 12
3.2.4 Writing Messages 12
3.2.5 Setting a Filter Message 13
3.2.6 Reading Messages 13
3.2.7 Tx Loopback Configuration 13
3.2.8 Periodic Messages 14
3.2.9 Disconnect from the channel 14
3.2.10 Close the device 14
3.3 Technical Notes 14
3.3.1 Rx/Tx Queues 14
3.3.2 Message Filtering 14
3.3.3 Periodic Messages 15
3.3.4 ERROR_IND with ISO15765 15

4 License Information 16

Appendix A Supported Features from SAE J2534 and


GM Extensions 17
A.1 SAE J2534-1 Revised DEC2004 17
A.1.1 Communication Protocols 17
A.1.2 Other Features 17
A.1.3 PASSTHRUIOCTL 17
A.2 SAE J2534-2 Revised JAN2019 19
A.3 SAE J2534-1 Revised OCT2015 19
A.4 GM Extension GMW17753 20
A.5 Supported Bit Rates 20

3
PCAN-PassThru API 04.04 – User Manual

1 Introduction

For the programming of control units (ECU), there are many applications from various manufacturers
which are used in the development and diagnosis of vehicle electronics. The interface for the communi-
cation between these applications and the control units is defined by the international standard SAE
J2534 (Pass-Thru). Thus, the hardware for the connection to the control unit can be selected regardless of
its manufacturer.

PCAN-PassThru allows the use of SAE J2534-based applications with CAN adapters from PEAK-System.
The functions defined by the standard are provided by Windows DLLs for 32 and 64-bit systems. These
can also be used to develop own Pass-Thru applications. The API is thread-safe. It uses mutual exclusion
mechanisms to allow several threads from one or several processes to call functions of the API in a safe
way.

The communication via CAN and OBD-2 (ISO 15765-4) is based on the programming interfaces PCAN-
Basic and PCAN-ISO-TP. PCAN-PassThru is supplied with each PC CAN interface from PEAK-System.

Note: The SAE J2534 protocol is fully described in its norm. It is required for the development of
your own Pass-Thru applications. This manual cannot supersede this API documentation.

1.1 Features
Implementation of the international standard SAE J2534 version 04.04 (Pass-Thru)
Implementation of SAE J2534 extension J2535-2:2019 and General Motors’ extension GMW17753 to
support CAN FD and messages extension
Use of SAE J2534 applications with PC CAN interfaces from PEAK-System
Windows DLLs for the development of your own SAE J2534 applications for 32 and 64 bit
Thread-safe API
Physical communication via CAN and OBD-2 (ISO 15765-4) using a CAN interface of the PCAN series
Uses the PCAN-Basic programming interface to access the CAN hardware in the computer
Uses the PCAN-ISO-TP programming interface (ISO 15765-2) for the transfer of data packages up to
4095 (or 32768 with GMW17753 extension) bytes via the CAN bus

1.2 System Requirements


Windows 11 (x64), 10 (x86/x64)
At least 2 GB RAM and 1.5 GHz CPU
For the CAN bus connection: PC CAN interface from PEAK-System
PCAN-Basic API
PCAN-ISO-TP API

Note: The required APIs PCAN-Basic and PCAN-ISO-TP are installed both with the PCAN-PassThru
setup.

4
PCAN-PassThru API 04.04 – User Manual

1.3 Scope of Supply


PCAN-PassThru API installation including
• Interface DLLs for Windows (32/64-bit)
• Configuration software for Windows
• PCAN-Basic API
• PCAN-ISO-TP API
Documentation in PDF format

5
PCAN-PassThru API 04.04 – User Manual

2 Installation

This chapter covers the setup of the PCAN-PassThru package under Windows and the use of its
configuration software.

Do the following to install the package:


1. Insert the supplied DVD into the appropriate drive of the computer.
Usually a navigation program appears a few moments later. If not, start the file Intro.exe from
the root directory of the DVD.
2. In the main menu, select Tools, and then click on Install.
Besides the product DVD, the setup is also available as a download from the website www.peak-
system.com. Double click the included file PCAN-PassThru Setup.exe to start the installation.
3. Confirm the message of the User Account Control.
The setup program for the package is started.
4. Follow the instructions of the program.
The setup will install the PCAN-PassThru interface DLLs for Windows 32- and 64-bit, the required APIs
PCAN-Basic and PCAN-ISO-TP, and the configuration software PCAN-PassThru Configuration.

2.1 Hardware Interface Configuration


The CAN or OBD-II communication of PCAN-PassThru requires a CAN interface from PEAK-System which
can be set up using the tool PCAN-PassThru Configuration. The desired PEAK CAN interface and its
driver have to be successfully installed. A detailed description how to put your CAN interface into
operation is included in the related documentation.

Do the following to configure a PEAK CAN interface to be used by the PCAN-PassThru API:
1. Open the Windows Start menu or the Windows Start page and select PCAN-PassThru
Configuration.
The dialog box for selecting the hardware and for setting the parameters appears.

Figure 1: PCAN-PassThru Configuration (PnP hardware selected)

6
PCAN-PassThru API 04.04 – User Manual

2. If you like to use non-PnP hardware like the PCAN-ISA, PCAN-PC/104, or PCAN-Dongle activate
the Show non-PnP hardware checkbox at the bottom on the left.
3. Hardware: Select the interface to be used by the PassThru API from the list. If this is a PnP
hardware, the next 3 parameters are skipped.
Note: If the adapter was connected to the computer after the tool was started, you can update the
list with the button Refresh button.
4. Hardware Type: Select the type of your adapter.
5. I/O Port and Interrupt: Each CAN channel of non-PnP interfaces is set up with an interrupt (IRQ)
and an I/O port before the hardware is installed in the computer. Select these parameters from
the following drop-down lists.
The entered parameters can be checked with the Test button on the top right.
6. Finally, save the configuration with Save or close the tool with Exit.

2.1.1 Additional Options


The PCAN-PassThru Configuration tool offers additional options for debugging and logging.

Activate Debug mode: Activate this checkbox to enable logging and the trace option. With this, all
function calls with their parameters are saved to a csv file. The parameters are: timestamp of the function
call, function name, return value, parameters, and error message.

The log file is named with the pattern:

PCAN_log_[Year][Month][Day][Hours][Minutes][Seconds]_[Counter].csv

Trace CAN frames: This option is available if Activate Debug mode is checked. With this enabled, the
CAN traffic is traced to the configured directory. The trace file format PCAN-Trace 1.1 by PEAK-System is
used. If the file reaches a size of 10 MB a new one is created. File naming follows the pattern:

[Year][Month][Day][Hours][Minutes][Seconds]_[Used_CAN-Channel]_[Counter].trc

Note: Both, creating log and trace files is done until the capacity of the hard drive is reached.

Output Directory: If Use applications current directory to store debug information is disabled, the
directory for saving log and trace files can be chosen via Browse.

7
PCAN-PassThru API 04.04 – User Manual

3 Programming Interface

3.1 Implementation

3.1.1 PassThru Functions


The following functions are available:

PassThruOpen: establishes a connection and initializes the Pass-Thru device.


PassThruClose: closes the connection to the Pass-Thru device.
PassThruConnect: establishes a logical connection with a protocol channel on the specified SAE
J2534 device.
PassThruDisconnect: terminates a logical connection with a protocol channel.
PassThruReadMsgs: reads messages and indications from the receive buffer.
PassThruWriteMsgs: sends messages.
PassThruStartPeriodicMsg: queues the specified message for transmission, and repeats at the
specified interval.
PassThruStopPeriodicMsg: stops the specified periodic message.
PassThruStartMsgFilter: starts filtering of incoming messages.
PassThruStopMsgFilter: removes the specified filter.
PassThruSetProgrammingVoltage: Sets a single programming voltage on a single specific pin. This
function is not supported.
PassThruReadVersion: returns the version strings associated with the DLL.
PassThruIoctl: read/write configuration parameters. Only the following IOCTL ID values are
supported:
• GET_CONFIG: read configuration parameters. Only the following parameter details are
supported:
- DATA_RATE: get the bit rate value (in bps).
- LOOPBACK: states whether Tx messages are echoed (1) or not (0).
- BIT_SAMPLE_POINT: bit sample point as a percentage of the bit time.
- SYNC_JUMP_WIDTH: synchronization jump width (undefined unit, value from BRCan).
Note: Use a pointer to an SCONFIG_LIST structure for the InputPtr parameter.
• SET_CONFIG: write configuration parameters. Only the following parameter details are
supported:
- DATA_RATE: set the bit rate value (in bps). This will call a disconnection and a
connection of the channel.
- LOOPBACK: states whether Tx messages are echoed (1) or not (0).
Note: Use a pointer to an SCONFIG_LIST structure for the InputPtr parameter.
• CLEAR_TX_BUFFER: Tx AND Rx buffer will be cleared.
• CLEAR_RX_BUFFER: Tx AND Rx buffer will be cleared.
• CLEAR_PERIODIC_MSGS: clears periodic messages.

8
PCAN-PassThru API 04.04 – User Manual

• CLEAR_MSGS_FILTERS: clears filter messages.


• GET_DEVICE_INFO: acquires the general capabilities of the device.
• GET_PROTOCOL_INFO: acquires the protocol specific capabilities of the devices.

3.1.2 PassThru Message Structure


The ISO-TP message has the following structure:

typedef struct {
unsigned long ProtocolID;
unsigned long RxStatus;
unsigned long TxFlags;
unsigned long Timestamp;
unsigned long DataSize;
unsigned long ExtraDataIndex;
unsigned char Data[4128];
} PASSTHRU_MSG;

Data fileds:
ProtocolID: supported protocols are CAN (0x05) or ISO-15765 (0x06).
RxStatus: only available when receiving a message. Supported flags are:
• CAN_29BIT_ID: the value of the bit #8 states if the message is standard (11bit, value = 0) or
extended (29bit, value = 1).
• TX_MSG_TYPE: the value of the bit #0 states if the message is a transmit loopback (value = 1) or
not (value = 0).
TxFlags: transmit message flags. Supported flags are:
• CAN_29BIT_ID: the value of the bit #8 states if the message is standard (11bit, value = 0) or
extended (29bit, value = 1).
Timestamp: timestamp in microseconds.
DataSize: data size in bytes (including the 4 CAN ID bytes).
ExtraDataIndex: when no extra data, the value should be equal to DataSize.
Data: array of data bytes.

3.1.3 PassThruIoctl
The following structures are used with the PassThruIoctl and the Ioctl ID values GET_CONFIG and
SET_CONFIG.

// parameter for PassThruIoCtl (used with GET_CONFIG/SET_CONFIG Ioctl IDs)


typedef struct {
unsigned long Parameter; // name of the parameter
unsigned long Value; // value of the parameter
} SCONFIG;

// list of parameters for PassThruIoCtl (used with GET_CONFIG/SET_CONFIG Ioctl IDs)


typedef struct {
unsigned long NumOfParams; // number of SCONFIG elements
SCONFIG* ConfigPtr; // array of SCONFIG
} SCONFIG_LIST;

9
PCAN-PassThru API 04.04 – User Manual

The following structures are used with the PassThruIoctl and the Ioctl ID values GET_DEVICE_INFO and
GET_PROTOCOL_INFO.

// parameter for PassThruIoCtl (used with GET_DEVICE_INFO/GET_PROTOCOL_INFO Ioctl


IDs)
typedef struct {
unsigned long Parameter; // name of the parameter
unsigned long Value; // value of the parameter
unsigned long Supported; // support for parameter
} SPARAM;
// list of parameters for PassThruIoCtl (used with
GET_DEVICE_INFO/GET_PROTOCOL_INFO Ioctl IDs)
typedef struct {
unsigned long NumOfParams; // number of SCONFIG elements
SPARAM* ParamPtr; // array of SPARAM
} SPARAM_LIST;

3.2 Function Examples


The following example is divided in several steps demonstrating the supported PassThru functions.

3.2.1 Opening a PassThru Device


With this step the default PassThru device is opened. Furthermore checking for an error is shown.

#define PASSTHRU_NB_MSG 10

TPTResult result;
ULONG deviceId;

result = PassThruOpen(NULL, &deviceId);


if (result != STATUS_NOERROR)
{
char errText[BUFSIZ];
memset(errText, 0, sizeof(BUFSIZ));

if (STATUS_NOERROR != PassThruGetLastError(errText))
fprintf(stderr, "Failed to get LastError.\n");
else
fprintf(stderr, errText);
}

To connect to a specific device, the “pName” parameter must be formatted like such:

J2534-2:PEAK {PCANHandle}
Where {PCANHandle} is one of the following PCAN Device Channel Handle:

Value Description Value Description


0x41 PCAN-PCI interface, channel 1 0x50A PCAN-USB interface, channel 10
0x42 PCAN-PCI interface, channel 2 0x50B PCAN-USB interface, channel 11
0x43 PCAN-PCI interface, channel 3 0x50C PCAN-USB interface, channel 12
0x44 PCAN-PCI interface, channel 4 0x50D PCAN-USB interface, channel 13
0x45 PCAN-PCI interface, channel 5 0x50E PCAN-USB interface, channel 14
0x46 PCAN-PCI interface, channel 6 0x50F PCAN-USB interface, channel 15
0x47 PCAN-PCI interface, channel 7 0x510 PCAN-USB interface, channel 16
0x48 PCAN-PCI interface, channel 8 0x61 PCAN-PC Card interface, channel 1
0x409 PCAN-PCI interface, channel 9 0x62 PCAN-PC Card interface, channel 2
0x40A PCAN-PCI interface, channel 10 0x801 PCAN-LAN interface, channel 1

10
PCAN-PassThru API 04.04 – User Manual

Value Description Value Description


0x40B PCAN-PCI interface, channel 11 0x802 PCAN-LAN interface, channel 2
0x40C PCAN-PCI interface, channel 12 0x803 PCAN-LAN interface, channel 3
0x40D PCAN-PCI interface, channel 13 0x804 PCAN-LAN interface, channel 4
0x40E PCAN-PCI interface, channel 14 0x805 PCAN-LAN interface, channel 5
0x40F PCAN-PCI interface, channel 15 0x806 PCAN-LAN interface, channel 6
0x410 PCAN-PCI interface, channel 16 0x807 PCAN-LAN interface, channel 7
0x51 PCAN-USB interface, channel 1 0x808 PCAN-LAN interface, channel 8
0x52 PCAN-USB interface, channel 2 0x809 PCAN-LAN interface, channel 9
0x53 PCAN-USB interface, channel 3 0x80A PCAN-LAN interface, channel 10
0x54 PCAN-USB interface, channel 4 0x80B PCAN-LAN interface, channel 11
0x55 PCAN-USB interface, channel 5 0x80C PCAN-LAN interface, channel 12
0x56 PCAN-USB interface, channel 6 0x80D PCAN-LAN interface, channel 13
0x57 PCAN-USB interface, channel 7 0x80E PCAN-LAN interface, channel 14
0x58 PCAN-USB interface, channel 8 0x80F PCAN-LAN interface, channel 15
0x509 PCAN-USB interface, channel 9 0x810 PCAN-LAN interface, channel 16

With this step, the 3rd PEAK device connected on USB is opened.

#define PASSTHRU_NB_MSG 10

TPTResult result;
ULONG deviceId;

result = PassThruOpen("J2534-2:PEAK 0x53", &deviceId);


if (result != STATUS_NOERROR)
{
[...]
}

3.2.2 Connecting to CAN


This step shows how to connect to a raw CAN channel.

ULONG channelId;

result = PassThruConnect(deviceId, CAN, 0, BAUDRATE_250K, &channelId);

if (result != STATUS_NOERROR) { /* TODO … */ }

11
PCAN-PassThru API 04.04 – User Manual

3.2.3 Connecting to CAN FD


This step shows how to connect to a CAN FD channel.

ULONG channelId;

result = PassThruConnect(deviceId, FD_CAN_PS, 0, BAUDRATE_250K, &channelId);

if (result != STATUS_NOERROR) {
SCONFIG configs[10];
// Set pins and data rate, to make connection effective
// set data bitrate
configs[0].Parameter = FD_CAN_DATA_PHASE_RATE;
configs[0].Value = 2000000;
configList.NumOfParams = 1;
configList.ConfigPtr = configs;
result = PassThruIoctl(channelId, SET_CONFIG, &configList, NULL);
if (result != STATUS_NOERROR) {
// set pins
configs[0].Parameter = J1962_PINS;
configs[0].Value = 0x0000060E;
configList.NumOfParams = 1;
configList.ConfigPtr = configs;
result = PassThruIoctl(channelId, SET_CONFIG, &configList, NULL);
printf("PassThruIoctl pins %s\n", OK_KO(result));
}
/* TODO … */
}

3.2.4 Writing Messages


PASSTHRU_MSG pMsg[PASSTHRU_NB_MSG];
ULONG pNumMsgs;
ULONG i, j;

// initialization
memset(pMsg, 0, sizeof(PASSTHRU_MSG) * PASSTHRU_NB_MSG);
pNumMsgs = PASSTHRU_NB_MSG;
for (i = 0; i < pNumMsgs; i++)
{
// Initializes each message.
j = 0;
pMsg[i].ProtocolID = CAN;

// Sets a length.
pMsg[i].DataSize = min(4+i, 4+8);

// Sets CAN ID.


pMsg[i].Data[j++] = 0x00;
pMsg[i].Data[j++] = 0x00;
pMsg[i].Data[j++] = 0x00;
pMsg[i].Data[j++] = (unsigned char) (0xA0 + i);

// Sets CAN Data.


for (; j < pMsg[i].DataSize; j++)
pMsg[i].Data[j] = (unsigned char) (0xB0 + j);
}

// Writes the messages.


result = PassThruWriteMsgs(channelId, pMsg, &pNumMsgs, 0);
if (result != STATUS_NOERROR) { /* TODO … */ }

12
PCAN-PassThru API 04.04 – User Manual

3.2.5 Setting a Filter Message


PASSTHRU_MSG pMsgMask, pMsgPattern;
ULONG filterId;

// initialization
memset(&pMsgMask, 0, sizeof(PASSTHRU_MSG));
memset(&pMsgPattern, 0, sizeof(PASSTHRU_MSG));

// Filters on a 11-bit CAN ID.


pMsgMask.ProtocolID = pMsgPattern.ProtocolID = CAN;
pMsgMask.DataSize = pMsgPattern.DataSize = 4;

// Filters on an ID anything like 0x????0140.


pMsgMask.Data[2] = 0xFF;
pMsgMask.Data[3] = 0xFF;
pMsgPattern.Data[2] = 0x01;
pMsgPattern.Data[3] = 0x40;

// Sets a filter message.


result = PassThruStartMsgFilter(channelId, PASS_FILTER, &pMsgMask, &pMsgPattern, NULL, &filterId);
if (result != STATUS_NOERROR) { /* TODO … */ }

3.2.6 Reading Messages


// initialization
memset(pMsg, 0, sizeof(PASSTHRU_MSG) * PASSTHRU_NB_MSG);
pNumMsgs = PASSTHRU_NB_MSG;

// Reads the messages.


result = PassThruReadMsgs(channelId, pMsg, &pNumMsgs, 0);
if (result == STATUS_NOERROR)
{ /* Process messages… */ }
else if (result == ERR_BUFFER_EMPTY)
{ printf("No message received"); }
else { /* TODO … */ }

3.2.7 Tx Loopback Configuration


This step demonstrates how to set and get a Tx loopback configuration.

SCONFIG_LIST configList;
SCONFIG configs[10];
unsigned long nbParams;

// Prepares a parameter Tx loopack to enabled.


nbParams = 0;
configs[nbParams].Parameter = LOOPBACK;
configs[nbParams++].Value = 1;
configList.NumOfParams = nbParams;
configList.ConfigPtr = configs;

// Sets a configuration.
result = PassThruIoctl(channelId, SET_CONFIG, &configList, NULL);
if (result != STATUS_NOERROR) { /* TODO … */ }

// Reads the configuration.


configs[0].Value = 0;
result = PassThruIoctl(channelId, GET_CONFIG, &configList, NULL);
if (result != STATUS_NOERROR) { /* TODO … */ }

13
PCAN-PassThru API 04.04 – User Manual

3.2.8 Periodic Messages


The step covers the setup of periodic messages.

PASSTHRU_MSG msg;
ULONG msgID;
ULONG timeInterval;

// Sets up a periodic message.


memset(&msg, 0, sizeof(PASSTHRU_MSG));
msg.ProtocolID = CAN;
msg.DataSize = 7+4;

// Sets a CAN ID
j = 0;
msg.Data[j++] = 0x00;
msg.Data[j++] = 0x00;
msg.Data[j++] = 0x00;
msg.Data[j++] = (unsigned char) (0xC1);

// Sets a CAN Data


for (; j < msg.DataSize; j++)
msg.Data[j] = (unsigned char) (0xB0 + j);

timeInterval = 100;
result = PassThruStartPeriodicMsg(channelId, &msg, &msgID, timeInterval);
if (result != STATUS_NOERROR) { /* TODO … */ }

3.2.9 Disconnect from the channel


// Disconnect from the channel.
result = PassThruDisconnect(channelId);
if (result != STATUS_NOERROR) { /* TODO … */ }

3.2.10 Close the device


// Closes the device.
result = PassThruClose(deviceId);
if (result != STATUS_NOERROR) { /* TODO … */ }

3.3 Technical Notes

3.3.1 Rx/Tx Queues


There is no receive queue or transmit queue:
When PassThruReadMsgs is called, the messages are directly read from PCAN-Basic via a loop.
When PassThruWriteMsgs is called, the messages are directly written via PCAN-Basic.

3.3.2 Message Filtering


Although the PCAN-Basic API provides message filtering features, it was not used for the PCAN-PassThru
API since the way you define a filter in this API differs a lot from the way used in PCAN-Basic. PCAN-
PassThru uses a mask and a pattern for the CAN ID and the data. PCAN-Basic uses a range of CAN IDs
instead.

14
PCAN-PassThru API 04.04 – User Manual

3.3.3 Periodic Messages


Periodic messages are handled via a map for each channel. A unique thread periodically checks each
channel every 1ms and transmits messages if needed.

3.3.4 ERROR_IND with ISO15765


If a network error occurred during ISO15765 communications, ERROR_IND flag is set and the message’s
extradata will have a size of 1 containing the error code of the ISO15765 network error.

15
PCAN-PassThru API 04.04 – User Manual

4 License Information

The use of this software is subject to the terms of the End User License Agreement of PEAK-System
Technik GmbH.

The APIs PCAN-PassThru, PCAN-Basic, and PCAN-ISO-TP are property of the PEAK-System Technik
GmbH and may be used only in connection with a hardware component purchased from PEAK-System or
one of its partners. If CAN hardware of third-party suppliers should be compatible to that of PEAK-
System, then you are not allowed to use the mentioned APIs with those components.

If a third-party supplier develops software based on the mentioned APIs and problems occur during the
use of this software, consult that third-party supplier.

16
PCAN-PassThru API 04.04 – User Manual

Appendix A Supported Features from SAE J2534


and GM Extensions

A.1 SAE J2534-1 Revised DEC2004

A.1.1 Communication Protocols


The following figure lists the supported communication protocols:

Protocol Supported?
CAN Yes
ISO 15765-4 Yes
ISO 9141 No
ISO 14230-4 (KWP2000) No
SAE J1850 No
SAE J2610 No

A.1.2 Other Features


The following figure lists unsupported features from the Pass-Thru System Requirements:

Feature Supported?
PROGRAMMABLE Software pin assignment is not supported. Function
POWER SUPPLY PassThruSetProgrammingVoltage always returns
ERR_NOT_SUPPORTED.

A.1.3 PASSTHRUIOCTL
The following figure lists the supported IOCTL IDs for the function PassThruIOCTL:

IOCTL ID Supported?
GET_CONFIG Yes
SET_CONFIG Yes
READ_VBATT No
FIVE_BAUD_INIT No
FAST_INIT No
CLEAR_TX_BUFFER Yes
CLEAR_RX_BUFFER Yes
CLEAR_PERIODIC_MSGS Yes
CLEAR_MSG_FILTERS Yes
CLEAR_FUNCT_MSG_LOOKUP_TABLE No
ADD_TO_FUNCT_MSG_LOOKUP_TABLE No
DELETE_FROM_FUNCT_MSG_LOOKUP_ No
TABLE
READ_PROG_VOLTAGE No

17
PCAN-PassThru API 04.04 – User Manual

The following figure lists the supported parameters associated with the IOCTL IDs « GET_CONFIG » and
« SET_CONFIG »:

Parameter Supported ?
DATA_RATE Yes
LOOPBACK Yes
NODE_ADDRESS No
NETWORK_LINE No
P1_MIN No
P1_MAX No
P2_MIN No
P2_MAX No
P3_MIN No
P3_MAX No
P4_MIN No
P4_MAX No
W0 No
W1 No
W2 No
W3 No
W4 No
W5 No
TIDLE No
TINIL No
TWUP No
PARITY No
BIT_SAMPLE_POINT No
SYNC_WIDTH_JUMP No
T1_MAX No
T2_MAX No
T3_MAX No
T4_MAX No
T5_MAX No
ISO15765_BS Yes
ISO15765_STMIN Yes
BS_TX Yes
STMIN_TX Yes
DATA_BITS No
FIVE_BAUD_MOD No
ISO15765_WFT_MAX Yes

J1962_PINS Yes
FD_CAN_DATA_PHASE_RATE Yes
FD_ISO15765_TX_DATA_LEN Yes
GTH
HS_CAN_TERMINATION No (but for compatibility reasons, this IOCTL returns
STATUS_OK when set to off (value of 0))
N_CR_MAX Yes
ISO15765_PAD_VALUE Yes

18
PCAN-PassThru API 04.04 – User Manual

A.2 SAE J2534-2 Revised JAN2019


The following figure lists the supported features from optional PassThru extension SAE J2534-2:

Feature Supported?
Enabling SAE J2534-2 features Yes
and accessing multiple SAE
J2534 devices
PIN SELECTION Yes (Protocols: CAN_PS, ISO15765_PS, FD_CAN_PS,
FD_ISO15765_PS)
ACCESS TO ADDITIONAL No
CHANNELS
Discovery Support & Discovery Yes
mechanism
MIXED FORMAT FRAMES ON A Yes
CAN NETWORK
Single Wire CAN No
Analog Inputs No
GM UART (SAE J2740) No
UART Echo Byte Protocol No
Honda Protocol No
Repeat Messaging No
Extended Programming Voltage No
Support
J1939 Protocol No
J1708 Protocol No
Extended PassThru IOCTL for Yes
Device Configuration Parameters
TP2.0 Protocol No
Fault-Tolerent CAN No
CAN FD Protocol Yes
ISO15765 on CAN FD Yes

A.3 SAE J2534-1 Revised OCT2015


The following figure lists the supported features included in PCAN-PassThru API. Please note that those
features are intended only for forward compatibility. The PassThruReadVersion still returns « 04.04 ».

Feature Supported?
USE PASSTHRUOPEN YES. The pName argument in PassThruOpen function can
WITH A DEVICE NAME start with J2534-1:PEAK or J2534-2:PEAK followed by
the handle of the PEAK device that shall be opened (ex.
0x51).

19
PCAN-PassThru API 04.04 – User Manual

A.4 GM Extension GMW17753


Note: PEAK-System does not provide documentation about this extension. This must be acquired
separately in any store online for standards.

The following table lists the supported features included in GMW17753.

Feature Supported?
PIN SELECTION (CAN_FD_PS, ISO15765_FD_PS) Only J1962_PINS with 0x60E
Protocols: CAN_FD_PS, ISO15765_FD_PS Yes
Tx Flags: CAN_FD_BRS, CAN_FD_FORMAT Yes
Rx Status: CAN_FD_BRS, CAN_FD_FORMAT, CAN_FD_ESI, ERROR_IND. Yes
RX Status: RX_MSG_TRUNCATED Yes
Mixed format with ISO15765_FD Yes
Message Extension (DataSize > 4128) Yes
Dynamic Flow CONTROL No
IOCTL: CAN_FD_PHASE_RATE, CAN_FD_TC_DATA_LENGTH, CAN_FD_TYPE (ISO CAN FD), Yes
N_CR_MAX (as GM value)
IOCTL: CAN_FD_TYpE (BOSCH CAN FD) No
IOCTL: CAN_FD_TERMINATION No (but for compatibility reasons,
this IOCTL always returns
STATUS_OK)

ERROR_IND with 4 bytes data No

A.5 Supported Bit Rates


The following tables lists the valid bit rate combinations specified in SAE J2535-1, SAE J2535-2 and
GMW17753 and the corresponding register value sets.

Nominal Bit Rate Data Bit Rate (bits per second)


500 000 500 000 1 000 000 2 000 000 4 000 000 5 000 000 (Default)
250 000 250 000 500 000 1 000 000 2 000 000 2 500 000 (Default)
125 000 125 000 250 000 500 000 1 000 000 1 250 000 (Default)

Bit Rate Combination Register Value Set


f_clock nom. nom. nom. nom. data data data data
BRP TSEQ1 TSEQ2 SJW BRP TSEQ1 TSEQ2 SJW
500 kbit/s | 500 kbit/s 80000000 10 12 3 1 4 29 10 1
1 Mbit/s | 1 MBit/s 80000000 20 2 1 1 20 2 1 1
1 Mbit/s | 2 Mbit/s 80000000 10 5 2 2 10 2 1 2
1 Mbit/s | 4 Mbit/s 80000000 5 11 4 4 5 2 1 1
1 Mbit/s | 5 Mbit/s 80000000 4 14 5 5 4 1 2 2

500 kbit/s | 1 Mbit/s 80000000 10 12 3 1 2 29 10 1


500 kbit/s | 2 Mbit/s 80000000 2 63 16 16 2 15 4 4
500 kbit/s | 4 Mbit/s 80000000 10 12 3 1 1 14 5 1
500 kbit/s | 5 Mbit/s 80000000 1 127 32 32 1 11 4 4

250 kbit/s | 250 kbit/s 80000000 2 139 20 1 8 29 10 1


250 kbit/s | 500 kbit/s 80000000 2 139 20 1 4 29 10 1
250 kbit/s | 1 Mbit/s 80000000 2 139 20 1 2 29 10 1
250 kbit/s | 2 Mbit/s 80000000 2 139 20 1 1 29 10 1

20
PCAN-PassThru API 04.04 – User Manual

Bit Rate Combination Register Value Set


f_clock nom. nom. nom. nom. data data data data
BRP TSEQ1 TSEQ2 SJW BRP TSEQ1 TSEQ2 SJW
250 kbit/s | 2.5 Mbit/s 80000000 2 139 20 1 1 23 8 1
250 kbit/s | 4 Mbit/s 80000000 5 55 8 8 5 1 2 2
250 kbit/s | 5 Mbit/s 80000000 4 69 10 10 4 1 2 2

125 kbit/s | 125 kbit/s 80000000 4 139 20 1 16 29 10 1


125 kbit/s | 250 kbit/s 80000000 4 139 20 1 8 29 10 1
125 kbit/s | 500 kbit/s 80000000 4 139 20 1 4 29 10 1
125 kbit/s | 1 Mbit/s 80000000 4 139 20 1 2 29 10 1
125 kbit/s | 1.25 Mbit/s 80000000 4 139 20 1 2 23 8 1
125 kbit/s | 2 Mbit/s 80000000 10 55 8 8 10 1 2 2
125 kbit/s | 4 Mbit/s 80000000 5 111 16 16 5 1 2 2
125 kbit/s | 5 Mbit/s 80000000 4 139 20 20 4 1 2 2

21

You might also like