Cars · Electronics

OBD1 Honda P13 ECU Reference Guide

A complete hardware and software reference guide for the OBD1 P13 Prelude DOHC VTEC H22A ECU, covering diagnostic RAM and ROM parameters.

Intermediate

Adapted from pgmfi.org wiki

The P13 Engine Control Unit (ECU) is the factory controller for the 1993–1995 OBD1 Honda Prelude VTEC equipped with the 2.2L DOHC VTEC H22A engine. Due to its unique architecture, the P13 is highly sought after by Prelude enthusiasts and engine-swap DIYers.

Overview

Unlike more common OBD1 Civic/Integra ECUs (such as the P28 or P30), the P13 uses a distinct circuit board design and a different fuel and ignition map structure (a 1x40 RPM axis scale rather than a standard 10x20 table grid).

This guide details the essential RAM (runtime logging) and ROM (EEPROM calibration) memory address locations for custom tuning, datalogging, and hardware modification.

Board Identification & Variations

Circuit board layouts differ significantly between JDM and USDM models:

  • JDM Small Case: Utilizes a smaller casing footprint with an internal daughterboard layout.
  • USDM/EDM Big Case: Uses the standard large ECU case.

USDM vs JDM P13 resistor area comparison Comparison of USDM (top) and JDM (bottom) resistor and component locations.

JDM vs USDM P13 visual circuit board differences Visual board layout and component positioning differences between JDM and USDM P13 ECUs.

RAM Address Mapping

Below is the memory map of active RAM addresses used during runtime diagnostic monitoring and datalogging:

Location Bytes Description Notes
00A4 1 MAP Sensor Manifold Absolute Pressure raw analog voltage (0V-5V)
00AB 1 TPS Sensor Throttle Position Sensor analog input (scaled 0x00-0xFF)
00AE 2 Current RPM Engine speed (OBD1 16-bit RPM value)
00D9 1 ECT Sensor Engine Coolant Temperature sensor reading
00DF 1 VSS Sensor Vehicle Speed Sensor value in km/h
00ED 1 Active MAP Column Active load pressure column pointer
00EE 1 Low Cam Active Row Low cam RPM row pointer
00EF 1 High Cam Active Row High cam/VTEC RPM row pointer
0110 2 CEL Diagnostics Word 1 Register for active CEL fault codes (set to 0x0000 if clear)
0111 2 CEL Diagnostics Word 2 Register for active CEL fault codes
0113 2 CEL Diagnostics Word 3 Register for active CEL fault codes
0114 2 CEL Diagnostics Word 4 Register for active CEL fault codes
016A 2 Rev Limit Cut Engine speed limit fuel cut (OBD1 16-bit RPM format)
016C 2 Rev Limit Resume Engine speed fuel cut recovery point
0179 1 Current RPM (8-bit) Secondary 8-bit RPM representation (used for VTEC engagement logic)
021D.1 1b VTEC Status Flag 1 if VTEC solenoid output is active, 0 otherwise
0224.0 1b A/C Switch Input 1 if pin B5 (ACS) is grounded (A/C switch active)
0289 1 8-bit RPM Secondary 8-bit RPM value
03D0 1 O2 Sensor Narrowband Oxygen Sensor feedback signal
03D2 1 IAT Sensor Intake Air Temperature sensor reading (0V-5V)
03D3 1 Baro Sensor Barometric Atmospheric pressure sensor value (0V-5V)
03DA 1 ECT Raw Unscaled Engine Coolant Temperature sensor reading

ROM Address Mapping

Below are the hex address offsets within the 28-pin EEPROM chip for stock Prelude P13 calibrations:

Location Bytes Description Notes
0C21 2 High Cam Rev Resume Engine speed where VTEC fuel cut recovers
0C26 2 High Cam Rev Limit Engine speed limit fuel cut in VTEC
0D22 4 Checksum Jump Instruction Diagnostic check. See Disabling Checksum
2EAC 1 Speed Limiter Parameter Maximum speed threshold (0-255 km/h). Set to 0xFF to disable
35CA 1 VTEC Coolant Temp Check Minimum temp to engage VTEC. 0x44 enables check, 0xFF disables
5403 2 Low Cam Rev Resume Engine speed where low cam fuel cut recovers
5407 2 Low Cam Rev Limit Engine speed limit fuel cut (low cam)
540B 2 High Cam Rev Resume (Alternative high cam recovery parameter)
540F 2 High Cam Rev Limit (Alternative high cam VTEC cut parameter)
6000 40 Low Cam RPM Scaler Low cam RPM table scaling index (1x40 row)
6028 40 High Cam RPM Scaler VTEC RPM table scaling index (1x40 row)
6050 10 MAP Load Scaler MAP sensor pressure scaling columns index (10 columns)
605A 40 Fuel Map Multiplier Low Low cam fueling multipliers (1x40 row)
6082 40 Fuel Map Multiplier High High cam VTEC fueling multipliers (1x40 row)
60AA 200 Low Cam Fuel Table 10x20 base fueling lookup map
6172 200 High Cam Fuel Table 10x20 VTEC fueling lookup map
63F8 200 Low Cam Ignition Map 10x20 low cam ignition advance map
659C 200 High Cam Ignition Map 10x20 VTEC ignition advance map
7FF1 1 Debug Mode Enable Diagnostic mode parameter. 0xFF enables, 0x00 disables

Advanced Tuning Calibration

Disabling Checksum

By default, modifying any bytes in the ROM will trigger a solid Check Engine Light (CEL) due to a checksum mismatch. To disable the checksum routine in the P13:

  • Go to hex address 0x0D22.
  • Replace the bytes 90 9D F1 7F with 03 36 0D 00.

Datalogging Registers

If you are writing custom datalogging code for the P13, use the following registers:

  • SRBUF (Serial Receive Buffer): 0x07D
  • STBUF (Serial Transmit Buffer): 0x07C
  • Interrupt Vector Hook: The serial interrupt starts at 0x0043 and jumps to either 0x004B or 0x00DB. Put custom logging code routines at 0x00DB or redirect the vector pointer at 0x0020.

Hardware Modifications

Auto to Manual Transmission Conversion

JDM Auto P13 ECUs can be converted to manual transmission specs by relocating jumpers in the resistor area:

JDM P13 Auto manual transmission jumper configuration Relocate jumpers on RP11 and RP12 to convert JDM P13 ECUs between automatic and manual configurations.

Removing the Knock Sensor Check

If you are swapping an H22A engine into a chassis that does not have a knock sensor (and you wish to run a stock ROM without CEL Error Code 23), see the Knock Sensor bypass guide. If converting the ECU hardware between automatic and manual transmission, consult the OBD1 P13 Auto to Manual conversion guide.

Credits and source

Authors tungsten2k, blundar, eg6ajk, Artifex, ddd, mind-eracer, cybugluder, synoptic, carotman

Source Adapted from P13 on pgmfi.org wiki. Licensed under CC BY-NC-SA 1.0.