PDA

View Full Version : 8192 baud write frame problem?



MattStrike
October 19th, 2009, 01:24 PM
From the Serial I/O view:

Send: $F0,$57,$01,$00,$B8
Finished writing frame
Start reading frame
Com timeout: Expecting frame header byte
Start reading frame
Com timeout: Expecting frame header byte
.
.
.


From the .ds:


DATA STREAMS CONTAIN THE SAME INFORMATION IN THE SAME FORMAT WITH 31 WORD FORMAT. AFTER RECEIVING THE ALDL'S $F0 POLL THE TOOL MUST ANSWER THE POLL WITH A MESSAGE THAT HAS THE FOLLOWING CONTENT IN THIS FORMAT. THE FIRST BYTE WILL BE THE DEVICE ID ($F0). THE SECOND BYTE WILL BE THE MESSAGE BYTE COUNT (ALWAYS $04, IF NOT ALL MODE BYTES ARE USED FILL THEM WITH NULLS $00). THE THIRD AND FOURTH BYTES (1st AND 2nd DATA BYTES) ARE ECM MODES (see ECM ALDL modes), THE FIFTH AND SIXTH BYTES (3rd AND 4th DATA BYTES) ARE BCM MODES (see BCM ALDL modes). THE SEVENTH AND FINAL BYTE IS THE CHECK SUM.

Also in the .ds:


³ MESSAGE CODE $F0 IS USED BY THE ECM TO POLL FOR THE PRESENCE
³ OF AN ALDL TESTING DEVICE. IT IS TRANSMITTED FROM THE ECM
³ WITH THE FOLLOWING FORMAT
³
³ - MESSAGE CODE = $F0
³ - MESSAGE LENGTH
³ - SUM CHECK
³
³
³ IF AN ALDL DEVICE IS PRESENT, IT WILL RESPOND WITH THE FOLLOWING
³ MESSAGE:
³
³ - MESSAGE CODE = $F0
³ - MESSAGE LENGTH = 85 + 0 = 85 = $55
³ - SUM CHECK
³
³ ONCE IN ALDL MODE, THE ECM WILL CEASE TRANSMITTING THE NORMAL
³ MODE MESSAGES ($0A, $05).

So is the ECM only going to respond to a write frame of
$F0,$55,$01
or
$F0,$04,$01
or
is the ECM just screwed up? The computer is setting the SES light, but it does not flash any codes just blinks incredably fast when the terminals are shorted - normally there is a on-board CRT that *turns on* and displays error codes and other data from the ECM/BCM. I'm also trying to diagnose another problem with the car.
The cable I'm using works on 160 baud '86 computer, and two '94 buick computers (regal, PA) and I have had no issues reading ALDL data with those (of course, I didn't write the .xml descriptions myself)

Blacky
October 19th, 2009, 03:27 PM
Message lengths are ALWAYS $55+the actual length, so when it says "a message length of $04" it means $55+4=$59.
So I would assume the response to the poll will be: $F0,$59,$00,$00,$00,$00,Checksum.

Which *.ds file did that info come from? I have not seen that style of polling described before, I'd like to read the rest of the file.

Regards
Paul

MattStrike
October 19th, 2009, 06:00 PM
It is in the following .ds files:

a004
a074
a075

The latter two have the most information on the response. All have the same ECM, but are separate because the BCM is different.

The computer is interesting in that it was an 8192 baud available in '86-'87 on two GM cars only: The Riviera and the Toronado. The vehicles had a BCM as well, and an on-board CRT that displayed engine and body data in real time from the ECM and BCM. I don't have a working CRT to view the codes set by the ECM, and am trying to get the ECM data. The ECM and the BCM share a serial data line via a jumper installed over the ALDL connector. To read ALDL data, that jumper is removed and the ECM/BCM can be separately communicated with. The ECM does not flash codes over the SES light, but I don't know if that is normal for that model. I want to see what codes are being set, as well as logging data for troubleshooting purposes.

Blacky
October 19th, 2009, 11:41 PM
After reading those docs, this is how I think it works (without a similar vehicle to test it on I can't be sure).

EFILive has to wait for a "heartbeat" frame that starts with $F0, so set the heartbeat message to just $F0.
Clear out the suspend and resume commands they don't appear to be used in this type of ECM.
Then set up an ALDL request message so that it transmits the following:
$F0,$59,$01,$F2,$00,$00,checksum

Where:
the $59 is the number of data bytes + $55.
The $01 is ECM Mode #1 which means return ALDL data
The $F2 is the ECM ALDL data frame. It may be one of: $F0 (listed in 074.ds) or ($F2 or $F4 listed in 075.ds).

Depending on whether you put $F0, $F2 of $F4 in the request will determine how you need to define the attributes for those data streams.

(That's all just guesswork - I could be completely wrong).

Regards
Paul

MattStrike
October 20th, 2009, 12:04 AM
How do I get the $59 into the request frame? The program seems to default to $57 and doesn't let me change that.

Blacky
October 20th, 2009, 12:35 AM
In the Module page, Select the $01 Request ALDL Data Frame (which is data byte #1)
Add 3 comma separated parameters in the Parameter field on the Request page, like this: $F2,$00,$00 for the last three data bytes.

The software will fill in the rest.

Regards
Paul

MattStrike
October 20th, 2009, 09:34 AM
07:01.463: No heartbeat found - ALDL not synchronised yet
07:01.467: Synchronising ALDL communications...
07:01.467: Waiting for heartbeat: $F0
07:01.467: Waiting for Aldl bus silence of at least 10ms...
07:01.475: Start reading frame
07:01.584: Com timeout: Expecting frame header byte

frames tried:
$F0,$59,$01,$F0,$00,$00,checksum
$F0,$59,$01,$F2,$00,$00,checksum
$F0,$59,$01,$F4,$00,$00,checksum
$F0,$59,$01,$4F,$00,$00,checksum - from a074

I'm going to take the ecm out of the car and mount it by my desktop pc until I get this figured out so I can easily test random things at will...