ELM329
AT Command Descriptions (continued)
>AT BD
C0 and C1
[ Control output off* or on ]
0C 00 00 07 E8 03 41 05 42 00 00 00 00
These commands are used to set the level at the
Control output (pin 4). The AT C0 command sets it to a
low logic level (0V), while AT C1 sets it to a high level
(5V). After a system reset or wakeup from low power
mode (unless PP 0F bit 0 = ‘1’), the Control output will
be reset to a low level.
The 0C is the length byte - it tells us that the
following 12 bytes are valid. The actual bytes that have
been sent or received appear after the length. Note
that wakeup (CAN periodic) messages do not use the
buffer as an intermediate step, so you are not able to
see them with AT BD.
CA
[is there CAN Activity at pin 11?]
This command is used to determine if there is a
BI
[ Bypass the Initialization sequence ]
CAN signal present at pin 11 (the CAN Monitor pin). If
there is, the response will be the letter ‘Y’ (for yes),
while if there is no signal, the response will be the
letter ‘N’, for no. If there has been no signal detected
since the last reset, the output will be a dash (‘-’).
This command should be used with caution. It
allows the currently selected protocol to be made
active without requiring any sort of initiation or
handshaking to occur. The initiation process is
normally used to validate the protocol, and without it,
results may be difficult to predict. It should not be used
for routine OBD use, and has only been provided to
allow the construction of ECU simulators and training
demonstrators.
CAF0 and CAF1
[ CAN Auto Formatting off or on ]
These commands determine whether the ELM329
assists you with the formatting of the CAN data that is
sent and received. With CAN Automatic Formatting
enabled (CAF1), the IC will automatically generate the
formatting (PCI) bytes for you when sending, and will
remove them when receiving. This means that you can
continue to issue OBD requests (01 00, etc.), without
regard to the extra bytes that some CAN systems
require. Also, with formatting on, any extra (unused)
data bytes that are received in the frame will be
removed, and any messages with invalid PCI bytes will
be ignored. (When monitoring, however, messages
with invalid PCI bytes will be shown, with a ‘<DATA
ERROR’ message beside them).
Multi-frame responses may be returned by the
vehicle with ISO 15765 and J1939. To make these
more readable, the Auto Formatting mode will extract
the total data length and print it on one line, then show
each line of data with the segment number followed by
a colon (‘:’), and then the data bytes.
BRD hh
[ try Baud Rate Divisor hh ]
This command is used to change the RS232 baud
rate divisor to the hex value provided by hh, while
under computer control. It is not intended for casual
experimenting - if you wish to change the baud rate
from a terminal program, you should use PP 0C.
Since some interface circuits are not able to be
operated at high data rates, the BRD command uses a
sequence of sends and receives to test the interface,
with any failure resulting in a fallback to the previous
baud rate. This allows several baud rates to be tested
and a reliable one chosen for the communications.
The entire process is described in detail in the ‘Using
Higher RS232 Baud Rates’ section, on pages 44 and
45.
If successful, the actual baud rate (in kbps) will be
4000 divided by the divisor (hh).
You may also see the characters 'FC:' on a line (if
you are experimenting). This identifies a Flow Control
message that has been sent as part of the multi-line
message signalling. Flow Control messages are
automatically generated by the ELM329 in response to
a ‘First Frame’ reply, as long as the CFC setting is on
(it does not matter if auto formatting is on or not).
Another type of message – the RTR (or ‘Remote
Transmission Request’) – will be automatically hidden
for you when in the CAF1 mode, since they contain no
data. When auto formatting is off (CAF0), you will see
BRT hh
[ set Baud Rate Timeout to hh ]
This command allows the timeout used for the
Baud Rate handshake (ie. AT BRD) to be varied. The
time delay is given by hh x 5.0 msec, where hh is a
hexadecimal value. The default value for this setting is
0F, providing a 75 msec timeout. Note that a value of
00 does not result in 0 msec - it provides the
maximum time of 256 x 5.0 msec, or 1.28 seconds.
ELM329DSB
Elm Electronics – Circuits for the Hobbyist
www.elmelectronics.com
12 of 76