If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below.
I'm looking for any and all information on interfacing with the 20 pin diagnostic plug. I have searched around online and found limited information. So literally anything is helpful thanks.
I think that it is a not-so-great translation from another language, so a lot of it reads incorrectly but you can figure it out. I made an Arduino program to pull all of the internal ROM from the 8051 microcontroller, and you can also request RAM values in real time to get stuff like RPM, fuel injection, etc. But I have not really bothered with doing that.
Interfacing with it involves 2 wires: the L-Line and the K-Line. The L-Line is only used for wake-up and initiating communication, and this is described in the link above. Once you do that, you do some handshaking with the K-Line and then you can make a program to request data, if you know what you want. You will need to buy a KW71 level shifter though sine these operate on 12V and are bi-directional. I opted to bypass a bunch of circuitry and have my Arduino communicate directly with the microcontroller's UART/serial lines at 5V.
"Speed 9600 bauds, 8 data bits, no parity, 1 stop bit. "
That's your key to start playing with it. To be honest, I've never hooked a scope up to it. Anyone?????
I have somewhere a document that says what it spits out. And IRC it's not much. It's maybe injector pulse width, and a few other timing things - but nothing analog. I could be wrong. It's been 10 years since I looked into getting data out of that port.
Originally posted by Matt-B
hey does anyone know anyone who gets upset and makes electronics?
You can pull a tremendous amount out of it, but it requires you to know what RAM address stores which run-time variable. This is helped somewhat if you know what the axis descriptors are for the various maps in the ECU. It turns out that the axis descriptors are actually pointers, so in the case of an RPM axis which uses descriptor 0x3B, it really means that the current RPM value is stored there (0x3B:3C I think, since it is a 16b value). Load being 0x40 is the same story...the currently calculated load value is in that RAM location. All running variables are in RAM, so if you know what is where, you can read it all.
Other things you can do are dump the MCU's internal ROM and the EPROM, get serial and version numbers, and even overwrite RAM. I think you can also program the EPROM, although it requires externally supplied VPP and a blank chip. 9600 baud is really slow, so it is obviously pretty limited in terms of what sort of real-time info you can pull.
I had this dumb idea to replace the control panel with a little 5" touchscreen connected to my raspi maybe I should Fina another way to pull data maybe.
You can pull a tremendous amount out of it, but it requires you to know what RAM address stores which run-time variable. This is helped somewhat if you know what the axis descriptors are for the various maps in the ECU. It turns out that the axis descriptors are actually pointers, so in the case of an RPM axis which uses descriptor 0x3B, it really means that the current RPM value is stored there (0x3B:3C I think, since it is a 16b value). Load being 0x40 is the same story...the currently calculated load value is in that RAM location. All running variables are in RAM, so if you know what is where, you can read it all.
Other things you can do are dump the MCU's internal ROM and the EPROM, get serial and version numbers, and even overwrite RAM. I think you can also program the EPROM, although it requires externally supplied VPP and a blank chip. 9600 baud is really slow, so it is obviously pretty limited in terms of what sort of real-time info you can pull.
I made an Arduino program to pull all of the internal ROM from the 8051 microcontroller, and you can also request RAM values in real time to get stuff like RPM, fuel injection, etc. But I have not really bothered with doing that.
bmwman91 Would you mind sharing the details of your arduino project? I'm interested in having an Arduino fetch live data, so any help you could provide would be greatly appreciated!
thanks!
What do you need? Something like this: Description Protocol KW-71; Getting started. Wake-Up - procedure. Do you need this or a device that can make a good diagnostic for your car? I am using thinkdiag for some months in my car service and it is a perfect one. It shows all the errors and all were correct and I checked it on many cars. Moreover, it is easy to use and I think that every driver should have it in their garage because he can find quickly the problem. You can find it on thinkdiag.co.uk.
Comment