SECTION 5
HIGH SPEED SERIAL DATA
1.0 PURPOSE AND SCOPE
This document describes the operational characteristics, communication protocol, and transmitted data for the serial data stream. The serial data output is to be utilized to transmit predetermined data parameters to intelligent receiving devices external to the vehicle. Receivers external to the vehicle shall utilize the transmitted information to identify ECM type and for testing during the ECM assembly and in-car installation procedures. A high speed UART link option is available for GMAD assembly line diagnostics.
2.0 REFERENCE DOCUMENTS
3.0 SERIAL DATA TRANSMISSION RATE
Low speed serial data is not implemented. The high speed serial data transmits data at the rate of one bit each 122.07 microseconds 0.5% This is equivalent to 8192 baud. The high speed serial data is transmitted on the serial data output.
4.0 MESSAGE TYPE
Different data message types are transmitted by the ECM via the serial data output port if the ignition is on. The message type sent at any point in time is dependent upon the state of the diagnostic request line as summarized in the table below:
Resistance to
Power Ground Mode Serial Data
Greater Than20K Normal Normal Mode *
10K +-5% End of Line Test ALDL *
(ALDL Mode)
3.9K +-5% ECM Factory Test See Factory Test Section
Less Than 500 ohms Diagnostics/Field ALDL *
Service
* See High Speed Serial Data Specification, Section 2.0
5.0 TRANSMITTED DATA SPECIFICATION
5.1 Low Speed Serial Data Specification
Low speed serial data is not implemented.
5.2 High Speed Serial Data Specification
5.2.1 High Speed Serial Data Format
The approach used for the high speed transmission is intended to be the same as that used in a UART system. A description follows:
5.2.1.1 Bit Format
A bit time is 122.07 microseconds +-0.5%. This is equivalent to 819? Baud. A high voltage state indicates a logic one "1" condition and a low voltage state indicates a lo9ic zero "0" condition. The high speed serial data is output on the serial data output port.
5.2.1.2 Word Format
A word consists of ten bit times. The first bit is a logic zero and is called the Start Bit. The last (tenth bit) in the word is always 3 logic one and is called the Stop Bit. The remaining eight center bits are data bits and are transmitted LSB first. A Start Bit must always be preceded by at least one logic one bit time (either the stop bit of the preceding word or an Idle Line).
5.2.2 Message Format
Any and all data transmitted on the serial data bus must be part of a message. All messages must be of the following format:
- Idle Line
- Message Identification Word (ID)
- Message Length Word (85 + 1 + N)
- Mode Number Word
- Message Data (N Bytes)
- Sum Check
- Idle Line
5.2.2.1 Idle Line
Ten or more consecutive logic one bit times constitute an Idle Line. All receivers on the bus will use the occurrence of an Idle Line followed by a Start Bit to indicate the start of a message.
5.2.2.2 Message Identification Word
The first word of each message is a message identification (ID) word. Each message ID must be unique; therefore, all message ID's must be assigned in the particular Application Document. The total number of unique message ID's is limited to 254. ID's of $00 and $FF shall not be used in the vehicle.
5.2.2.3 Message Length Word
The message length word indicated the total number of data words in the remainder of the message plus 85 (decimal). The maximum number of data words within one message which can be transmitted by any transmitter is 64. Thus a valid message length word must lie in the range of 85 to 149. Many messages with no data words are possible; for such messages, the Message Length Word would contain the binary word 0101 0101 (MSB-LSB). This pattern has been selected because, under an abnormally severe noise environment, there is a higher probability that an erroneously received message will be detected as such.
5.2.2.4 Mode Number Word
All high speed messages have an assigned mode number. An external ALDL tester that requests high speed communications will specify the desired mode of operation.
5.2.2.5 Sum Check
The last word to be transmitted in a message is the two's complement of the sum of all the other words in the message, including the message ID and message length words. Any carrycuts of this eight-bit word while it is being formed by both the transmitter and receivers are neglected. The two's complement is used so that the sum of all the words in the message is zero for a valid message.
6.0 HIGH SPEED SERIAL DATA MESSAGES
The following sections define the input and output message formats for the various modes of high speed serial data.
The operating modes are divided into two categories, normal and ALDL modes. The ALDL modes can be entered independent of the diagnostic request line.
6.1 Normal Mode
The normal mode will be enabled if any of the following conditions are satisfied:
- ALDL device not present.
- Mode 0 requested by ALDL device.
- No ALDL message received for a time of 5 seconds.
When the normal mode is enabled, messages will be continuously transmitted by the scheduler unless the ALDL mode is enabled. The scheduler consists of a table of message addresses corresponding to messages that can be transmitted at a given 12.5 msec interval. Onlv one message can be transmitted in a given 12.5 msec interval.
The scheduler table *F9OMST* shown below, shows the expected messages and rates for this application:
Schedules Message Code Message
0 No Message
1 No Message
2 No Message
3 No Message
4 *F97*
5 No Message
6 No Message
7 No Message
8 No Message
9 No Message
A No Message
B No Message
C No Message
D No Message
E No Message
F No Message
The scheduler shows that message *F97* is transmitted once every 200 msec.
6.1.1 Normal Mode Message *F97*
Message *F97* is used to poll for the presence of an ALDL testing device The message ID for the testing device is = $FO Hex, and the message length is zero.
6.2 ALDL Mode
The ALDL Mode is enabled when the ALDL device responds to the normal mode ALDL polling message (*F97*).
Once in the ALDL mode, the ECM will cease transmitting the normal mode messages.
The ALDL mode is divided into the following sub-modes and uses a message ID of $FO Hex:
- Mode 0 (Return to normal mode)
- Mode 1 (Transmit fixed data stream)
- Mode 2 (Selectable memory dump)
- Mode 3 (RAM contents)
- Mode 4 (Controller function)
- Mode 7 (Command normal mode message)
6.2.1 ALDL Mode 0 (Return to Normal Mode)
When the ALDL device requests Mode 0, the ECM will revert back to the normal mode. The ALDL device requests Mode 0 by sending the following message:
- Message ID = $F0 Hex.
- Message Length = 85 + 1 = 86 = $56 Hex.
- Mode = $00 Hex.
- Sum Check.
The ECM will respond by transmitting the normal mode messages as described in previous sections.
6.2.2 ALDL Mode 1 (Transmit Fixed Data Stream)
When the ALDL device requests Mode 1, the ECM will respond by transmitting a predetermined 63 byte message as defined in table *F95*. See Figure 3.
The ALDL device requests Mode I by sending the following message:
- Message ID + $FO Hex.
- Message Length = 85 + 1 = 86 = $56 Hex.
- Mode = $01 Hex.
- Sum Check.
The ECM will respond with the following message:
- Message ID = $F0 Hex.
- Message Length = 85 + 64 = 149 = $95 Hex.
- Mode = $01 Hex.
- Data Byte 1
- -
- -
- Data Byte 63
- Sum Check
6.2.3 ALDL Mode 2 (Selectable Memory Dump)
When the ALDL device request Mode 2, the ECM will respond by transmitting the contents of 64 memory locations be9innin9 with the address specified in the Mode 2 request.
The ALDL device request Mode a by sending the following message:
- Message ID = $F0 Hex.
- Message Length = 85 + 3 = 86 = $58 Hex.
- Mode = $02 Hex.
- Starting Address Upper byte.
- Starting Address Lower byte.
- Sum Check.
The ECM will respond with the following message:
- Message ID = $F0 Hex.
- Message Length = 85 + 65 = 150 = $96 Hex.
- Mode = $02 Hex.
- Contents of Address 1
- -
- -
- Contents of Address (1 + 63)
- Sum Check
6.2.4 ALDL Mode 3 (RAM Contents)
When the ALDL device requests Mode 3, the ECM will respond by transmitting the contents of the RAM locations specified in the request (from 0 to 8 locations).
The ALDL device requests Mode 3 by sending the following message:
- Message ID = $F0 Hex.
- Message Length = 85 + 2N + 1 (N = 0 to 8).
- Mode = $03 Hex.
- Address I Upper byte
- Address I Lower byte
- -
- -
- Address N Upper byte
- Address N Lower byte
- Sum Check
The ECM will respond with the following message:
- Message ID = $F0 Hex.
- Message Length = 85 + N + I (N = 0 to 8).
- Mode = $03 Hex.
- Contents of Address 1
- -
- -
- Contents of Address N
- Sum Check
6.2.5 Mode 4 Input Message (ALDL Tester Request)
- ID
- MESSAGE LENGTH (2N + 11 + 85)
- MODE 4
- DISCRETE OUTPUT ENABLE CONTROL WORD *
- DISCRETE OUTPUT STATE WORD *
- MODE CONTROL ENABLE WORD *
- MODE CONTROL STATE WORD *
- PWM OUTPUT ENABLE CONTROL WORD *
- PWM OUTPUT DUTY CYCLE *
- FUNCTION MODIFICATION CONTROL WORD*
- IAC DESIRED POSITION/IDLE RPM *
- DESIRED A/F RATIO *
- SPARK ABSOLUTE/DELTA MODIFICATION *
- START ADDRESS HIGH
- START ADDRESS LOW
- -
- -
- ADDRESS N HIGH
- ADDRESS N LOW
- CHECK SUM
Where N is the number of data bytes requested (0 to 8). See "Mode 4 - ECM Function Modification Mode Table".
The ECM will respond with the following message:
- ID
- MESSAGE LENGTH = 85 + N + 1 (N = 0 to 8)
- MODE = $04 Hex.
- ADDRESS 1 CONTENTS
- -
- -
- ADDRESS N CONTENTS
- CHECK SUM
The Function Modifications will have immediate response (next applicable program loop), and will override the normal operation of the Outputs.
6.2.5.1 MODE 4 - ECM FUNCTION MODIFICATION MODE TABLE
1. Discrete Output Enable Control Word
Bit 0 = Check engine Light Control
Bit 1 = Fan Control
Bit 2 = Not Used
Bit 3 = Not Used
Bit 4 = Not Used
1 = Control enabled
0 = Control disabled
2. Discrete Output State Word
Bit 0 = Check Engine Light: 1 = On, 0 = Off
Bit 1 = Fan: 1 = On, 0 = Off
Bit 2 = Not Used
Bit 3 = Not Used
Bit 4 = Not Used
3. Mode Control Enable Word
Bit 0 = Fuel Closed Loop (C/L)
Bit 1 = Idle Air Control (IAC) C/L
Bit 2 = Not Used
Bit 3 = Spark Back-up (Does Not Force Fuel Backup)
Bit 4 = Block Learn Memory (BLM) Reset, (see Note 1)
Bit 5 = IAC Motor Reset, (See Note 2)
Bit 6 = Clear Malfunction Codes, (See Note 1)
Bit 7 = Fuel Back-up (COP 2 not toggled, also forces Spark Backup)
1= Select Function or feature
0 = Deselect
Note 1: Block Learn Memory Reset and Malfunction Code clearing can only occur during the first pass through the Mode 4 logic.
Note 2: IAC Motor Reset can occur at any time while in Mode 4 logic, however, it can only occur once
4. Mode Control State Word
Bit 0 = Fuel C/L: I = C/L, 0 = Not C/L
Bit I = IAC C/L: 1 = C/L, 0 = Not C/L
Bit 2 = Not Used
Bit 3 = Not Used
Bit 4 = Not Used
5. PWM Output Control Enable Word
Bit 0 = EGR Output
Bit 1 = A/C Output
Bit 2 = TCC Output
Bit 3 = Not Used
Bit 4 = Not Used
Bit 5 = Not Used
Bit 6 = Not Used
Bit 7 = Waste Gate
6. PWM Output Duty Cycle (0 - 100%)
7. Function Modification Control Word
Bit 0 = IAC Modification: 1 = Selected
Bit 1 = IAC: 0 = Position; 1 = RPM
Bit 2 = A/F Modification: 1 = Selected
Bit 3 = Spark Modification: 1 = Selected
Bit 4 = Spark: 0 = A8S; 1 = Delta
Bit 5 = Spark: 0 = ADV; 1 = RTD
Bit 6 = Not Used
Bit 7 = Not Used
8.IAC Desired Position/Idle RPM
IAC Position (0 - 255) or RPM (0 - 3200)
9. Desired A/F Ratio
Open Loop A/F (0.0 - 25.5, N = A/F * 10)
10. Spark Absolute/Delta Modification (0 - 90 deg.)
6.2.6 ALDL Mode 7 (Command Normal Mode Message)
When the ALDL device requests Mode 7, the ECM will transmit the normal mode scheduler message specified in the request.
The ALDL device requests Mode 7 by sending the following message:
- Message ID = $F0 Hex.
- Message Length = 85 + 2 = 87 = $57 Hex.
- Mode = $07 Hex.
- ECM Scheduler Message Code (0-F)
- Sum Check
The ECM will respond with the appropriate normal mode scheduler message if one exists for that particular scheduler message code.
7.0 ERROR DETECTION/REMEDIAL ACTION
If any of the following errors are detected the complete message is ignored and the serial data handler is put into the wake-up mode in preparation for the next message:
- Overrun Error, indicates that one or more characters in the Data Stream were lost.
- Framing Error, indicates that the Data Byte received was improperly framed by a start and stop bit
- Device Code riot recognizable by ECM.
- Data Byte Count received does not match Data Byte Count expected as defined in message control block.
- Checksum Error, indicates calculated check sum does not match transmitted check sum.
- Noise Error, indicates that one of three samples of the transmitted bit was different from other two.
8.0 SERIAL DATA TRANSMITTER SPECIFICATIONS
8.1 High Speed Serial Data Transmitter Specifications
Characteristics of the serial data output are as follows:
- VOH GE 4.0V @ IOH = -2.5mA, VOH LE 5.1 V (max.)
- VOL LE 0.9V @ IOL = 10.0 mA, VOL GE ECM. Ground (min.)
Serial Data Receiver Requirements
The following specifications are required to be met by any device transmitting serial data to the ECM:
- VIH GE 3.1V, -360uA LE IIH LE -165uA **
- VIH LE l6V, (absolute max. allowed)
- VIL LE 1.7V, -360uA LE IIH LE -l65uA **
- VIL GE -0.5V, (absolute min allowed)
*All voltages relative to ECM Ground and measured at ECM connector.
*All currents directed into ECM.
**Current levels defined by ECM receiver in tri-state mode.
Requiring each receiver to meet these specifications insures that the ECMs serial data output will drive at least eight receivers in parallel.
Figure 1 *F9OMST* SC: Message Schedule Table
Time Message
0 No Message
1 No Message
2 No Message
3 No Message
4 *F97*
5 No Message
6 No Message
7 No Message
8 No Message
9 No Message
A No Message
B No Message
C No Message
0 No Message
E No Message
F No Message
This table defines the order in which the Mode 0 (normal mode) ALDL transmit tables will be transmitted in the serial data stream.
In this application, the *F97* is transmitted every 200 msec.
Figure 2 *F97* Transmit Table for Mode 0 (Normal Mode).
Location Content
1 $F0
Figure 3 *F95* Mode 1 ALDL Transmit Table.
Loc. Variable Description
1 PROMIDA Last 4 digits of ECM serial #
2 PROMIDA+l
3 MALFFLG1 Bit 0 = MALF CODE 24 Vehicle Speed Sensor
Bit 1 = MALF CODE 23 Manifold Air Temperature Sensor Low
Bit 2 = MALF CODE 22 Throttle Position Sensor Low
Bit 3 = MALF CODE 21 Throttle Position Sensor High
Bit 4 = MALF CODE 15 Coolant Sensor Low Temperature
Bit 5 = MALF CODE 14 Coolant Sensor High Temperature
Bit 6 = MALF CODE 13 Oxygen Sensor
Bit 7 = MALF CODE 12 No Reference Pulses (Engine Not Running)
4 MALFFLG2 Bit 0 = MALF CODE 42 EST Monitor Error
Bit 1 = MALF CODE 41
Bit 2 = MALF CODE 35 IAC Error
Bit 3 = MALF CODE 34 MAP Sensor Low
Bit 4 = MALF CODE 33 MAP Sensor High
Bit 5 = MALF CODE 32 EVRV/EGR
Bit 6 = MALF CODE 31 Wastegate Overboost
Bit 7 = MALF CODE 25 Manifold Air Temperature Sensor High
5 MALFFLG3 Bit 0 = MALF CODE 55 ADV Error
Bit 1 = MALF CODE 54
Bit 2 = MALF CODE 53 High Battery Voltage
Bit 3 = MALF CODE 52
Bit 4 = MALF CODE 51 PROM Error
Bit 5 = MALF CODE 45 Oxygen Sensor Rich
Bit 6 = MALF CODE 44 Oxygen Sensor Lean
Bit 7 = MALF CODE 43 ESC Failure
6 COOLDEGA N = ((Degrees C) + 40) * 256/192
7 COOLTSU N = ((Degrees C) + 40) * 256/192
8 ADTHROT TPS Position in A/D Counts
9 NTPSLD N = (Percent Throttle) * 16/6.25
10 NTRPMX N = RPM/25
11 OLDREFPER N = 65536 * ISIRPM
12 OLDRFPER+1
13 FILTMPH (Integer) N = MPH * 256 (2 Byte Variable)
14 FILTMPH+1 (Fraction)
15 ADO2A N = Volts * 226
16 ALDLCNTR N = Counts
17 CORRCL N = Value * 128 (Simply a 0 to 2 multiplier)
18 BLM N = Value * 128 (Simple a 0 to 2 multiplier)
19 BLMCELL N = Cell (0 or 1 only)
20 INT N = Units
22 ISDWNA N = RPM/12.5
23 RAWADMAT Degrees C in A/D Counts
24 ADBAT N = Volts * 10
25 SAP N = Degrees * 256/90
26 SAP+1
27 SAC N = Degrees * 256/90
23 AOBARO N = kPa * 2.71 - 28.06
29 ADVAC N = kPa * 2.71 - 28.06
30 ADMAP N = kPa * 2.71 - 28.06
31 TREF N = Seconds * 80
32 BPW N = MSEC * 65.536
33 BPW+1
34 DESSPD N = RPM/12.5
35 ISDSMP N = Steps
36 OLDPA3
37 OLDPA3+l
38 NOCKRTD N = Degrees * 256/45
39 TIME N = Seconds
40 TIME+1
41 AFCR N = A/F Ratio * 10
42 EGRDES N = Percent (1 to 100 Percent)
43 EGRDC N = Percent (1 to 100 Percent)
44 AIRFLOW N = Grams/(4 * Second)
45 BSTPRESS N = kPa * 1.28
46 DESBOOST N = kPa * 1.28
47 LCKDLY N = Seconds * 10
48 APPW N = MSEC * 65.536
49 APPW+1
50 EGRDESA N = Percent (1 to 100 Percent
51 DBSTBASE N = kPa * 1.28
52 ADESCMON N = A/D Counts
53 EGRTITMR N = Seconds * 40
54 VE N = Percent * 2.56
55 AIRFUEL N = A/F Ratio * 10
56 WGATEDC N = Percent * 2.56
57 MWl Bit 0 Advance Flag (0 = Advance, 1 = Retard)
Bit 1 Vehicle Moving Flag (0 = At Rest)
Bit 2 Interrupt Service Execution Exceeded 6.25 MSEC
Bit 3 Premium Fuel Active Flag (1 = Active)
Bit 4 Road Speed 1st Time Flag (0 = First Time)
Bit 5 A/C Clutch Flag (1 = Disable)
Bit 6 1 = Bypass Check Enabled (EST Monitor)
Bit 7 Engine Running Flag (1 = Running)
58 MW2 Bit 0 Not Used
Bit 1 Road Speed Filter Exercise Flag
Bit 2 Reference Pulse Occurred (6.25 MSEC Check)
Bit 3 Diagnostic Switch In Factory Test Position
Bit 4 Diagnostic Switch In Diagnostic Position
Bit 5 Diagnostic Switch In ALDL Position
Bit 6 High Battery Voltage - Disable Solenoid Discretes
Bit 7 Old Cell Flag (Air/Fuel)
59 MW3 Bit 0 Loop Timing Flag For Timing Error Logic
Bit 1 1 = Synch Map Read With 2X REF Pulses Enabled
Bit 2 1 = 6X Enable Criteria Met Last 6.25 MS Loop
Bit 3 0 = IAC P/S First Time
Bit 4 1 = EGR On
Bit S 1 = A/C Disengaged At High RPM
Bit 6 1 = REF Pulse Occurred (Used For FILTRPM Logic)
Bit 7 1 = ESC Active
60 NVMW Bit 0 02 Sensor Ready Flag, 1 = Ready
Bit 1 Closed Loop Timer O.K. Flag, 1 = Timer O.K.
Bit 2 Motor Reset Complete (1 = Yes)
Bit 3 Improper Shutdown Flag, 0 = Proper, 1 = Improper.
Bit 4 Extended Throttle Cracker A/C Off Enabled Flag
Bit 5 IAC Kickdown Enable Flag, 1 = Enabled
Bit 6 Extended Throttle Cracker A/C On Enabled Flag
Bit 7 MALF 42 Fail Flag (EST Monitor)
61 FMIDBYTE1 Bit 0 Park/Neutral (1 = Drive)
Bit 1 Not Used
Bit 2 Vacuum (0 = Vacuum Present)
Bit 3 Power Steering (0 = Cramp)
Bit 4 VS Cooling Fan Discrete (1 = Fan Requested)
Bit 5 Not Used
Bit 6 Not Used
Bit 7 Air Conditioner (1 = A/C Requested)
62 LCCPMW Bit 0 Fan On
Bit 1 Check Engine Light Delay Flag
Bit 2 Power Steering Mode Flag (1 = Active)
Bit 3 MALF 42A Repeat Flag
Bit 4. ICC MPH HYST BIT
Bit 5 1ST Time Hot Flag
Bit 6 First Time Fan Run Flag (Used In IGN OFF Logic)
Bit 7 Transmission Locked Flag (1 = LOCKJP Enabled)
..Or Shift Light Status (1 = On)
63 MWAF1 Bit 0 Clear Flood Flag (1 = Cranked In Clear Flood Mode)
Bit 1 Learn Control Enable Flag (1 = Enable Store, 0 = Disable)
Bit 2 Low Battery IAC Inhibit Flag (1 = IAC Inhibited)
Bit 3 Not Used
Bit 4 Quast - Asynchronous Pulse Flag (QAP Flag)
Bit S First Time CIL Flag (1 = First Time)
Bit 6 Rich - Lean Flag (1 = Rich, 0 = Lean)
Bit 7 Closed Loop Flag (1 = Closed Loop, 0 = Open Loop)