
73 of 83
ELM329
ELM329DSC
Elm Electronics – Circuits for the Hobbyist
www.elmelectronics.com
A very common question that we receive is ‘Can I
connect the ELM329 directly to my own circuit, or must
I use the RS232 interface shown?’ Certainly you may
connect directly to our ICs, and you do not need to use
an RS232 interface. There are a few items to consider,
however.
The ELM329 is actually a microprocessor that
contains a standard UART type interface, connected to
the RS232 Tx and Rx pins. The logic type is CMOS,
and this is compatible with virtually all 5V TTL and
CMOS circuits, so you should be able to connect
directly to these pins provided that the two devices
share the same power supply (5V), and that they are
not physically more than about 10 to 20 inches apart
(CMOS circuits are subject to latchup from induced
currents, which may be a problem if you have long
leads).
The normal (idle) levels of the ELM329 transmit
and receive pins are at the V
DD
(5V) level. Most
microprocessors and RS232 interface ICs expect that
to be the idle level, but you should verify it for your
microprocessor before connecting to the ELM329. The
connections are straightforward - transmit connects to
receive, and receive connects to transmit, as shown
below. Don’t forget to set both devices to the same
baud rate.
The ELM329 also provides a hand-shaking feature
that may simplify the flow of data for you (if you turn
the low power feature off). The interface consists of
two pins - an input an an output. The input is called
‘request to send’ (RTS), and it is used to interrupt the
ELM329, just the same as tapping a key on the
keyboard when using a terminal program. The output
pin (‘Busy’) is used by the ELM329 to tell your system
that it is processing data.
To use the handshaking feature, set one of your
port pins to normally provide a high output, and
connect it to the RTS input (pin 15). Use another port
pin as an input to monitor the ELM329 Busy output
(pin 16). When you want to send a command, simply
check the Busy output first. If it is at a high logic level,
then either wait for it to go low, or if you need to
interrupt the IC, then bring the RTS line low and wait
for the Busy line to go low. (You might want to
consider using an edge triggered interrupt on the Busy
output, if one is available). When Busy does go low,
restore your RTS line to a high level, and then send
your command to the ELM329. No need to worry
about the ELM329 becoming busy again after you
raise the RTS line at this point – once Busy goes low,
the ELM329 will wait (indefinitely) for your command.
If you do not use the RTS input on the ELM329, it
must be connected to a high logic level, as shown
below.
Microprocessor Interfaces
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
+5V
X1
4.00MHz
C4
27pF
C3
27pF
+5V
+5V
+5V
329
your microprocessor
Tx
Rx
Tx
Rx
The ELM329 and your
microprocessor must
use the same 5V supply
Busy RTS