Hex Maps and addresses
There are 7 maps which are important:
1. Injection
map
2. Ignition map
3. Turbo pressure map
4. Turbo pressure limiter map
5. WOT (wide open throttle) injection enrichment map
6. Injection timing map
7. RPM limiter map
This map controls, how long injectors
are open (how much gasoline enters in the combustion chamber).
This map has 16x16 fields. There are 16 RPM breakpoints and 16 air
density breakpoints.
COLUMNS are RPM breakpoints. Address is at hex 7000-701F. In order
to calculate one breakpoint, you have to sum two 8 bit values and
divide the number 1875000 with sum to get RPM value:
1. breakpoint:
address hex 7000: value 1 hex =
1 dec *256 = 256
address hex 7001: value 20 hex = 32 dec
256+32=288 1875000/288 = 6510 RPM
16. breakpoint: address hex
701E: value 9 hex = 9 dec *256 =2304
address hex 701F: value 83 hex = 131 dec
2304+131=2435 1875000/2435 = 770
RPM
ROWS are air density breakpoints
(absolute pressure) in bars. Address is at hex 7020-703F. In order
to calculate one breakpoint you have to sum two 8 bit values and divide
them with 1032 to get the air density (absolute pressure) in bars:
1. breakpoint:
address hex 7020: value 0 hex = 0 dec *256 =0
address hex 7021: value CC hex = 204 dec
0+204= 204/1032=0.2 bar (-0.8 bar
vacuum)
16. breakpoint:
address hex 703E: value 8 hex =
8 dec *256 =2048
address hex 703F: value 77 hex = 119 dec
2048+119= 2167/1032 =2.1 bar
Now at address hex 7040 follow 256 values for injection time (for every RPM breakpoint and every airdensity point). These values are only 8 bit. To get the injector opening duration in miliseconds, you have to make the following calculation :
(dec value*0.064)+1
This map controls the ignition advance.
This map has 16x10 fields. There are 16 RPM breakpoints and 10 airdensity breakpoints.
COLUMNS are RPM breakpoints. Address is at hex 7230-724F. Calculation is the same as with injection map RPM breakpoints.
ROWS are air density breakpoints (absolute pressure) in bars. Address is at hex 7250-7263. The calculation is the same as with injection map airedensity breakpoints.
At address hex 7270 follow ignition advance values. These values are 8 bit. To get the ignition advance in degrees BTDC (before piston top dead center). To get the ignition advance in degress you have to make the following calculation:
dec value*0.25
This map controls the turbo pressure. This is achieved via duty cycle of opening the overboost (pierburg) valve.
This map has 16x4 fields. There are 16 RPM breakpoints and 4 breakpoints for TPS (throttle position sensor) opening angle in degrees.
COLUMNS are RPM breakpoints. Addres is at hex 75A0-75BF. Calculation is the same as with injection map RPM breakpoints.
ROWS are breakpoints for TPS opening angle in degrees (how much you push the throttle). Address is at hex 75C0-75C7. There are two different calculations:
for angles<30 degrees: (dec value*0.1848)-1.41
for angles>30 degrees: (dec value*0.7058)-90
1. breakpoint
address hex 75C0: value 0 hex =
0 dec
address hex 75C1: value A8 hex = 168 dec
0+168= 168*0.1848= 31.05-1.41= 29.64 degrees
4. breakpoint
address hex 75C6: value 0 hex =
0 dec
address hex 75C7: value E0 hex = 224 dec
0+224= 224*0.7058= 158.10-90= 68.1 degrees
At address hex 75C8 follow the duty cycle values. These values are 8 bit. To get the duty cycle values in %, you have to make the following calculation:
((dec value*100)/256)*2
Max value for this map is 128 and not 8 bit max value of 256, as (128*100)/256)*2= 100%, so the value of dec 128 means the 100% duty cycle or 100% opening of the overboost valve which means the highest turbo pressure. But as the turbo pressure build up is dependant of turbo charger type, wastegate actuator stiffness and RPMs, there is no logical calculation for altering the values to get the desired turbo pressure. You have to try different values and make test runs.
This map controls max turbo pressure which is allowed before ECU cuts the ignition.
This map is 16x2 fields. There are 16 RPM breakpoints. This map shares the same RPM breakpoints with TURBO PRESSURE map.
COLUMNS are RPM breakpoints. Calculation is the same as with injection map RPM breakpoints.
There are 2 ROWS. Second row is the max pressure limit. When this pressure is reached, ECU will cut the ignition. First row is max pressure set. When ECU cuts the ignition due to reached max pressure, it will start working again, when the set value is reached.
At address hex 7650 follow the pressure limit and pressure set values. These values are 8 bit. To get the pressure limit and pressure set values in bars you have to divide dec value with 170.
WOT (wide open throttle) INJECTION ENRICHMENT MAP
This map controls the fuel enrichment at WOT (wide open throttle).
This map is 16x1 field. There are 16 RPM breakpoints. This map shares the same RPM breakpoints with IGNITION map.
COLUMNS are RPM breakpoints.
There is one ROW. It represents the factor which is multiplied with injection time at WOT.
At address hex 71D0-71DF follow the fuel enrichment factor values. These are 8 bit values. In order to get the factor value, you have to divide dec value with 128.
Example: address hex 71DA (11th value - 3200 RPM breakpoint): value 9D hex= 157 dec
157/128= 1.23
So at WOT at 3200 RPMs (here the turbo pressure starts to raise rapidly), there must be highest fuel enrichment at full throttle. ECU multiply the value from injection map (selected accordingly to RPM and pressure) with factor 1.23.
This means 23% enrichment at WOT.
This map controls the injection timing (at what degree of turn of the crankshaft injectors start to open)
This map is 16x1 field. There are 16 RPM breakpoints. This map shares the same RPM breakpoints with IGNITION map.
COLUMNS are RPM breakpoints.
There is one ROW. It represents the angle of the crankshaft where injectors start to open.
At address hex 7200-720F follow angle values. These are 8 bit values. In order to get the angle values in degrees, you have to make the following calculation:
450+90*(128-dec value)/32
This map controls the rev limiter.
There are two values. At first value ECU cuts the ignition and at second start to work again. These are 16 bit values. You must divide 1875000 with dec value to get the RPM.
First value is at address hex 7497-7498
Second value is at address hex 7499-749A
Address hex 7497: value hex 1=
dec 1*256 =256
Address hex 7498: value hex 14= dec 20
256+20= 276 1875000/276= 6793 RPM
Example to raise RPM limit to 7500 RPM:
1875000/7500= 250
250/256= 0 dec = 0
hex remains 250 dec = FA hex
You have to alter the value at address hex 7497 to 0 and value at hex 7498 to FA.
You have to alter the second value accordingly (for example to 7300 RPM)
If you want to make the changes and raise the power safely, you have to test the new chip with wideband lambda and some sort of knock sensing. I use LM-1 from Innovative motorsports. I'm also logging all significant sensors (TPS, knock, RPM, boost, ATS). With that in mind you can raise the power of individual car well beyond the power of "of the shelf" chips, as every engine is unique in its own way and you can make the chip which is best for particular engine.