EDC15P+


Content


Images

The ECU images below are intended to get an idea and to show of which ECU it is. Furthermore, they could help if the question of the arrangement of the components is in the room after too fast disassembly or desoldering. The most frequently asked question in this context is:
"Where is Pin 1?". The photos shown can not cover all of the ECU revisions, so they should be seen as examples.


Top


Bottom


Connector


Circuit board top


Circuit board bottom


Processor position


EEPROM position



Pin assignment


Slot Pin Description Comment
T81 1 Ignition KL15 (Switched power)
T81 2 Ignition KL15 (Switched power)
T81 4 Ground/GND KL31 (Vehicle ground)
T81 5 Ground/GND KL31 (Vehicle ground)
T81 6 CAN-Low High-Speed-CAN (500 kbit/s) (Not for diagnostic)
T81 7 CAN-High High-Speed-CAN (500 kbit/s) (Not for diagnostic)
T81 16 K-Line
T81 37 Power KL30 (Permanent power)


Memory

Hardware:

Hardware Name
µController B59388
EEPROM ST24C04

Layout:

Type method R/W Memory starting from Memory size (Byte) Comment
Flash ext.Prog 0x0 0x80000 512KB
EEPROM ext.Prog 0x0 0x200 512Byte


EEPROM dump setup


In order to catch data losses, the data is stored redundantly.



OMI function:

//Only supported when ECU use WFS3.
unsigned int getOmi_1(void)
{
  return dump[0x1B0];
}

unsigned char getOmi_2(void)
{
  return dump[0x1DE];
}
...

//omi On  -> omiByte = 0x73;
//omi Off -> omiByte = 0x60;
void setOmi_1(unsigned char omiByte)
{
  dump[0x1B0] = omiByte;
}

void setOmi_2(unsigned char omiByte)
{
  dump[0x1DE] = omiByte;
}



WFS-Code:

//Only supported when ECU use WFS3.
unsigned short getWFSLogin_1(void)
{
  return dump[0x12F] * 0x100 + dump[0x12E];
}

unsigned short getWFSLogin_2(void)
{
  return dump[0x161] * 0x100 + dump[0x160];
}



Mileage of engine control unit:

//Some ECUs do not use this, then the bytes always have the value 0x00.
unsigned long getKM_1(void)
{
  return ( ((dump[0x1C2] & 0x0F ) * 0x1000000)  +  dump[0x1C1]  * 0x10000  +  dump[0x1C0]  * 0x100  +   dump[0x1BF] ) * 10; //unit meter
}

unsigned long getKM_2(void)
{
  return ( ((dump[0x1F0] & 0x0F ) * 0x1000000)  +  dump[0x1EF]  * 0x10000  +  dump[0x1EE]  * 0x100  +   dump[0x1ED] ) * 10; //unit meter
}


Example dump download


There are lots of different software versions for the ECU. This is just an example.