Electronic – What do chips like ELM327 and STN1110 do

automotivecanmicrocontrollerobd

What problems are the chips ELM327 and STN1110 solving?

If I connect the necessary interface ICs (I mean dumb ICs, like level shifters, inverters, etc., not pre-programmed devices like ELM327) between the OBD pins and a suitable micro-controller, can I not read OBD data? I suspect these devices help in simplifying the software. Is that right? If so, what is the big problem they solve?

And if I don't want to use these chips, what do I need to know to start reading data from the port using just the dumb interface ICs and a microcontroller? I really don't wan't to depend on a closed-source product.

Best Answer

PIC Microcontrollers (and others) contain hardware serial blocks for speaking OBD/CAN protocols. You can buy a PIC yourself and implement the protocol engines, which amounts to programming the register space, clock dividers, handling interrupts etc. If you are then sending the data to a PC/mobile you also need a UART and transmission buffer.

This becomes quite a lot of work if you are making an adapter cable - hence the popularity of off-the-shelf OBD-to-UART adapters such as ELM327/STN1110. They are both PIC chips (ELM327 is implemented on the PIC18F2480, STN1110 on the PIC24HJ128GP502) loaded with software that does rx/tx buffering, filtering, power management etc.

Microchip has reference designs if you want to design your own:

AN738 - PIC18C CAN Routines in 'C'                                     05 Nov 2001
AN853 - PIC18XXX8 CAN Driver with Prioritized Transmit Buffer          09 Sep 2002
AN816 - A CAN System Using Multiple MCP25050 I/O Expanders             04 Nov 2002
AN873 - Using the MCP2515 CAN Developer?s Kit                          02 Sep 2003
AN877 - DeviceNet™ Group 2 Slave Firmware for PIC18 with CAN           06 Oct 2003
AN916 - Comparing CAN and ECAN Modules                                 05 Mar 2004
TB078 - PLL Jitter and Its Effects in the CAN Protocol                 15 Jun 2004
AN930 - J1939 C Library for CAN-Enabled PICmicro® Microcontrollers     16 Jun 2004
AN733 - Using the MCP2510 CAN Developer's Kit                          27 Jul 2004
AN878 - PIC18C ECAN C Routines                                         28 Feb 2005
AN228 - A CAN Physical Layer Discussion                                16 Sep 2005
AN713 - An introduction to the CAN protocol key features.              16 Sep 2005
AN754 - Understanding Microchip's CAN Module Bit Timing                16 Sep 2005
AN945 - A CANopen Stack for PIC18 ECAN Microcontrollers                12 Oct 2005
AN247 - A CAN Bootloader for PIC18F CAN Microcontrollers               15 Dec 2008
AN1249 - ECAN Operation with DMA on dsPIC33F and PIC24H Devices        13 Feb 2009
TB3017 - dsPIC30F CAN Interrupt Management                             27 Feb 2009
AN212 - Smart Sensor CAN Node using the MCP2510 and PIC16F876          04 Nov 2010
AN215 - A Simple CAN Node using the MCP2510 and PIC12C67X              08 Nov 2010