ELM329
JS1A9E39J1S9u3p9pMorets(scaognetisn(uceodn)tinued)
the values assigned to the PDU Format field. If the
PDU Format value begins with ‘F’ (when expressed as
a hexadecimal number), it is PDU2. Any other value
for the first digit means that it is a PDU1 Format frame,
which contains an address.
discussed previously, but we will repeat it here, to be
complete. Since the priority (and DP and EDP) values
only rarely change, they are assigned with the CP
command. By default, the ELM329 uses a priority of 6
(binary 110), and sets the EDP and DP to 0. The
default value for the CP setting is then 110+0+0 (which
would be entered as 11000 or 18 in hex). The values
assigned using the SH command relate directly to the
bytes in the J1939 ID, as shown below.
This has tried to cover the basics of the J1939
message structure, but if you want more information,
you should look at the standards mentioned
previously. One other one that gives good examples of
actual data is J1939-84 which describes the
compliance tests and shows the expected responses.
Even at 250 kbps, J1939 data is transferred at a
rate that is more than ten times faster than the
previous heavy duty vehicle standard (SAE J1708),
and several of the light duty standards. As designers
build more into each system, the amount of
information required continues to grow, however, so
the 500 kbps version of J1939 will be a welcome
addition.
To summarize, PDU1 format frames are sent to a
specific address, and PDU2 frames are sent to all
addresses. To further complicate matters, however,
PDU1 frames may be sent to all addresses. This is
done by sending the message to a special ‘global
address’ which has the value FF. That is, if you see a
PDU1 message (where the first digit of the PDU
Format byte is not an F), and the Destination Address
is FF, then that message is being sent to all devices.
The J1939 recommended practices document
provides a list of addresses that should be used by
devices. It is particularly important to adhere to this list
with the ELM329, as the IC uses a fixed address
method and is not able to negotiate a different one, per
J1939-81. OBD Service Tools should use either F9 or
FA as their address (the ELM329 uses F9). If you wish
to change this, you can use the AT TA (tester address)
command, or simply define it with the header.
The J1939 protocol uses the AT CP and AT SH
commands to assign values for the ID bits, just as the
other CAN protocols do. How these are used was
>AT CP vv
>AT SH xx yy zz
5 bits
only
PDU
Format
Destination
Address
Source
Address
Priority
Setting the J1939 CAN ID
ELM329DSB
Elm Electronics – Circuits for the Hobbyist
48 of 76
www.elmelectronics.com