From d8937b14bc161d537d19c1ae536919c4e775403b Mon Sep 17 00:00:00 2001 From: pman92 Date: Sat, 2 May 2020 19:03:58 +1000 Subject: [PATCH] sae_j1850_vpw: Add VPW sample data from P01 PCM [ gsi: changed directory layout, reworked README markup ] --- .../P01_bench_by_itself.sr | Bin 0 -> 52568 bytes sae-j1850/vpw/P01_bench_by_itself/README | 124 ++++++++++++++++++ 2 files changed, 124 insertions(+) create mode 100644 sae-j1850/vpw/P01_bench_by_itself/P01_bench_by_itself.sr create mode 100644 sae-j1850/vpw/P01_bench_by_itself/README diff --git a/sae-j1850/vpw/P01_bench_by_itself/P01_bench_by_itself.sr b/sae-j1850/vpw/P01_bench_by_itself/P01_bench_by_itself.sr new file mode 100644 index 0000000000000000000000000000000000000000..c58d63a435c3a4c54b6df1ce84b9c054c28895ce GIT binary patch literal 52568 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 Y>C9=@Cr#@f$UoWe-wHs!=Ux8xzfvSVNdN!< literal 0 HcmV?d00001 diff --git a/sae-j1850/vpw/P01_bench_by_itself/README b/sae-j1850/vpw/P01_bench_by_itself/README new file mode 100644 index 0000000..70b915d --- /dev/null +++ b/sae-j1850/vpw/P01_bench_by_itself/README @@ -0,0 +1,124 @@ +------------------------------------------------------------ +J1850 VPW transmission from GM P01 Powertrain Control Module +------------------------------------------------------------ + +Captured by pman92 - 2 May 2020 + +This is a capture of data from a General Motors "P01" Powertrain Control +Module. The control module was wired on the bench in a minimal setup +with nothing else connected. An ignition switch was included to provide +ignition power to the PCM. The following information was then obtained +from the module with PCMHammer 012 and an X-Pro VT interface (see +https://github.com/LegacyNsfw/PcmHacks/wiki/PCM-Hammer and +https://obdxpro.com/x-pro-vt/). + + VIN: 6H8WHY19F2L857286 + OS ID: 12202088 + Calibration ID: 92113609 + Hardware ID: 9386530 + Serial Number: 2EB2TZJT2070 + Broad Cast Code: DFNN + MEC: 0 + +An Arduino was connected to the data line via a basic interface circuit +that used a voltage comparator to monitor the J1850 VPW bus voltage +(high or low). The Arduino was programmed using pin change interrupts to +measure the time difference between changes of bus state (active or +passive). The Arduino would watch for SOF signals and then count the +following bus state/time changes to calculate the data within the packet. +It would calculate and confirm the checksum matched to ensure the data +was OK. It would then transmit the complete received packet back to the +PC via USB and was displayed on the Arduino serial monitor. The returned +data included a timestamp. If a checksum didn't match, an error message +would be returned instead of the relavent data packet. + + +Logic analyzer setup +-------------------- + +The capture was taken with a Saleae Logic 8 Channel clone at 16MHz for +50M samples. The ignition switch on the bench wiring was turned on and +the PCM started transmitting data. + + Probe VPW + ------------- + 1 data + + +Capture verification +-------------------- + +1. Arduino checksum calculation and confirmation + +J1850 VPW packets contain a checksum. If a bad or incorrect checksum was +found, an error message would be transmitted back to the PC by the Arduino +instead of that data packet/frame. No error messages were recorded during +the capturing of this data, so the Arduino checksum calculations were all +correct, and it considered the data intact. + +2. Visual inspection of first data packet in Pulseview + +The first data packet (+616.8ms to +622.1ms) was visually inspected in +PulseView and the bit values written down by hand. They were then split +into groups of 8 bit values, which were converted each to a single hex +value. The single hex values of the first data packet were then confirmed +to match the hex values that the Arduino had returned as the first packet. + +3. Timing between first and last data + +There is a total of 33 packets visible. PulseView shows the first packet +ending at 622ms, and the last packet ends at 3059ms, meaning 2437ms between +the "end of the first" and "end of the last" packets in the capture. The +Arduino also returned a time stamp of when the packet was processed and +sent to the PC. Between the first and 33rd packet, the difference in +Arduino time stamps was 2438ms. The difference of only 1ms confirms the +PulseView capture and Arduino are looking at the same range of data. + +NOTE that there are glitches within the capture. There is a series of +short glitches/pulses around 506-507ms within the capture. I'm unsure of +the cause, but this was around the time when the ignition switch on the +bench was turned on. Maybe it was noise caused by the switch or maybe it +was noise coming from the PCM when it powered up. Either way this could +be a good example to make sure the decoder can ignore/skip bad data or +glitches. + + +Data +---- + +The Arduino returned the following data packets, written in hex, from +first to last within the PulseView capture: + + 68 13 10 11 00 46 + 68 EA 10 0A 01 AE + 88 15 10 01 C8 + 88 1B 10 10 00 00 46 + 8A EA 10 20 8A 00 10 + A9 CE 10 07 69 + A8 F3 10 11 02 2B + C8 3B 10 3C 04 48 + 68 EA 10 0A 01 AE + 88 15 10 01 C8 + 8A EA 10 20 8A 00 10 + A9 CE 10 07 69 + 49 92 10 01 BE + 49 92 10 01 BE + 8A EA 10 20 82 00 4A + 8A EA 10 20 82 00 4A + 68 49 10 10 0B CF + 68 EA 10 0A 01 AE + 88 15 10 01 C8 + 8A EA 10 20 8A 00 10 + A9 CE 10 07 69 + E9 2A 10 3C EE + 49 92 10 01 BE + E9 2A 10 3C EE + 8A EA 10 20 82 00 4A + 68 EA 10 0A 01 AE + 88 15 10 01 C8 + 8A EA 10 20 8A 00 10 + A9 CE 10 07 69 + E8 FF 10 03 B3 + 49 92 10 01 BE + E9 2A 10 3C EE + 8A EA 10 20 82 00 4A -- 2.30.2