GT350 CAN Bus Topology
From Wiki-DIY
Contents
- 1 CAN bus table (VERIFIED)
- 2 CAN bus register details
- 2.1 ADDR: 041 -- GT350_041_TBD
- 2.2 ADDR: 047 -- GT350_047_TBD
- 2.3 ADDR: 04A -- GT350_04A_TBD
- 2.4 ADDR: 04B -- GT350_04B_TBD
- 2.5 ADDR: 076 -- GT350_STEERING_ANGLE
- 2.6 ADDR: TBD -- GT350_
- 2.7 ADDR: 077 -- GT350_SPEEDOMETER
- 2.8 ADDR: 07D -- GT350_BRAKE_PRESSURE
- 2.9 ADDR: 156 -- GT350_ENGINE_TEMPS_01
- 2.10 ADDR: TBD -- GT350_
CAN bus table (VERIFIED)
The following table are all verified values. Many unverified values are listed in the "CAN bus register details" section of this wiki.
Hex Address | Position | Y = mX + b | Range | Sampling Rate | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Address Name | Field Name | Start | End | Length (bits) | Direction | Data Format | Data Scale (m) | Data Offset (b) | Start | End | Description | ||
GT350_STEERING_ANGLE | STEERING_ANGLE_DEG | 76 | B1[0] | B0[6] | 15 | Big-Endian | Unsigned Integer | -0.1 | 1600 | -450 | 450 | 50 Hz | Steering angle (degrees) |
STEERING_ANGLE_RAD | 76 | B1[0] | B0[6] | 15 | Big-Endian | Unsigned Integer | -0.00174533 | 27.92528 | -7.854 | 7.854 | 50 Hz | Steering angle (radians) | |
REVERSE_SW | 76 | B1[7] | 1 | Bit | 50 Hz | 1=Reverse engaged
| |||||||
GT350_SPEEDOMETER | SPEEDOMETER_KPH | 77 | B1[0] | B0[7] | 16 | Big-Endian | Unsigned integer | 0.01 | 0.00 | 0.000 | 656.000 | 50 Hz | Speedometer (KPH)? Very likely speedometer. Seems to have about a 3.3% fudge factor with respect to wheel speed sensors. |
SPEEDOMETER_MPH | 77 | B1[0] | B0[7] | 16 | Big-Endian | Unsigned integer | 0.00621371 | 0.00 | 0.000 | 408.000 | 50 Hz | Same as above (MPH) | |
GT350_BRAKE_PRESSURE | BRAKE_PRESSURE_BAR | 7D | B1[0] | B0[5] | 14 | Big-Endian | Unsigned Integer | 0.025 | 0 | 0.0 | 409.6 | 50 Hz | Brake pressure (bar) |
BRAKE_PRESSURE_KPA | 7D | B1[0] | B0[5] | 14 | Big-Endian | Unsigned Integer | 2.5 | 0 | 0.0 | 40960 | 50 Hz | Brake pressure (kPa) | |
BRAKE_PRESSURE_PSI | 7D | B1[0] | B0[5] | 14 | Big-Endian | Unsigned Integer | 0.362595 | 0 | 0.00 | 5940.75 | 50 Hz | Brake pressure (psi) | |
GT350_ENGINE_TEMPS_01 | COOLANT_TEMP_C | 156 | B0[0] | B0[7] | 8 | Big-Endian | Unsigned Integer | 1 | -60.00 | -60.00 | 195.00 | 10 Hz | Coolant temperature (deg-C) |
COOLANT_TEMP_K | 156 | B0[0] | B0[7] | 8 | Big-Endian | Unsigned Integer | 1 | 213.15 | 213.15 | 468.15 | 10 Hz | Coolant temperature (deg-K) | |
COOLANT_TEMP_F | 156 | B0[0] | B0[7] | 8 | Big-Endian | Unsigned Integer | 1.80 | -76.00 | -76.00 | 383.00 | 10 Hz | Coolant temperature (deg-F) | |
UNKNOWN_TEMP_C | 156 | B1[0] | B1[7] | 8 | Big-Endian | Unsigned Integer | 1 | -60.00 | -60.00 | 195.00 | 10 Hz | Unknown temperature sensor (deg-C) | |
GT350_WEATHER | AMBIENT_TEMP_C | 178 | B5[0] | B4[1] | 10 | Big-Endian | Unsigned Integer | 0.25 | -128.00 | -128.00 | 128.00 | 10 Hz | Ambient temperature (deg-C) |
AMBIENT_TEMP_K | 178 | B5[0] | B4[1] | 10 | Big-Endian | Unsigned Integer | 0.25 | 145.15 | 145.15 | 401.15 | 10 Hz | Ambient temperature (deg-K) | |
AMBIENT_TEMP_F | 178 | B5[0] | B4[1] | 10 | Big-Endian | Unsigned Integer | 0.45 | -198.40 | -198.40 | 262.40 | 10 Hz | Ambient temperature (deg-F) | |
AMBIENT_PRESSURE_MBAR | 178 | B6[0] | B6[7] | 8 | Big-Endian | Unsigned Integer | 2.50 | 500.00 | 500.00 | 1140.00 | 10 Hz | Ambient pressure (mBar) | |
AMBIENT_PRESSURE_KPA | 178 | B6[0] | B6[7] | 8 | Big-Endian | Unsigned Integer | 0.25 | 50.00 | 50.00 | 114.00 | 10 Hz | Ambient pressure (kPa) | |
AMBIENT_PRESSURE_MBAR | 178 | B6[0] | B6[7] | 8 | Big-Endian | Unsigned Integer | 0.073825 | 14.765 | 14.765 | 33.664 | 10 Hz | Ambient pressure (inHg) | |
UNKNOWN_TEMP | 178 | B7[0] | B7[7] | 8 | Big-Endian | Unsigned Integer | TBD | TBD | TBD | TBD | 10 Hz | Unknown sensor; seems to be temperature related | |
GT350_RPM_TPS | THROTTLE_POSITION | 204 | B1[0] | B0[1] | 10 | Big-Endian | Unsigned Integer | 0.10 | 0.00 | 0.00 | 102.30 | 80 Hz | Throttle position (%) |
ENGINE_RPM | 204 | B4[0] | B3[4] | 13 | Big-Endian | Unsigned Integer | 2.00 | 0.00 | 0.00 | 16384.00 | 80 Hz | Engine RPM | |
GT350_213_MOTION | LONG_ACCELERATION_G | 213 | B6[0] | B5[1] | 10 | Big-Endian | Unsigned Integer | 0.0078125 | -3.9921875 | -4.000 | 4.000 | 50 Hz | Longitudinal acceleration (G) |
GT350_WHEEL_ROTATION | WHL_01 | 216 | B0[0] | B0[7] | 8 | Big-Endian | Unsigned Integer | 50 Hz | Some type of wheel rotation sensors. Monotonically increments while wheels are in motion. Starts at 0 when car is turned on. Does not return to 0 when car is not in motion. Seem to count rotation, or partial rotation of each wheel. | ||||
WHL_02 | 216 | B1[0] | B1[7] | 8 | Big-Endian | Unsigned Integer | 50 Hz | Same as above | |||||
WHL_03 | 216 | B2[0] | B2[7] | 8 | Big-Endian | Unsigned Integer | 50 Hz | Same as above | |||||
WHL_04 | 216 | B3[0] | B3[7] | 8 | Big-Endian | Unsigned Integer | 50 Hz | Same as above | |||||
GT350_WHEEL_SPEEDS | WHLSPD_FRNT_DRV_KPH | 217 | B1[0] | B0[6] | 15 | Big-Endian | Unsigned Integer | 0.012 | 0.00 | 0.00 | 394.00 | 80 Hz | Wheel speed sensor (front, driver, KPH) |
WHLSPD_FRNT_DRV_MPH | 217 | B1[0] | B0[6] | 15 | Big-Endian | Unsigned Integer | 0.007456452 | 0.00 | 0.00 | 245.00 | 80 Hz | Wheel speed sensor (front, driver, MPH) | |
WHLSPD_FRNT_PAS_KPH | 217 | B3[0] | B2[6] | 15 | Big-Endian | Unsigned Integer | 0.012 | 0.00 | 0.00 | 394.00 | 80 Hz | Wheel speed sensor (front, passenger, KPH) | |
WHLSPD_FRNT_PAS_MPH | 217 | B3[0] | B2[6] | 15 | Big-Endian | Unsigned Integer | 0.007456452 | 0.00 | 0.00 | 245.00 | 80 Hz | Wheel speed sensor (front, passenger, MPH) | |
WHLSPD_REAR_DRV_KPH | 217 | B5[0] | B4[6] | 15 | Big-Endian | Unsigned Integer | 0.012 | 0.00 | 0.00 | 394.00 | 80 Hz | Wheel speed sensor (rear, driver, KPH) | |
WHLSPD_REAR_DRV_MPH | 217 | B5[0] | B4[6] | 15 | Big-Endian | Unsigned Integer | 0.007456452 | 0.00 | 0.00 | 245.00 | 80 Hz | Wheel speed sensor (rear, driver, MPH) | |
WHLSPD_REAR_PAS_KPH | 217 | B7[0] | B6[6] | 15 | Big-Endian | Unsigned Integer | 0.012 | 0.00 | 0.00 | 394.00 | 80 Hz | Wheel speed sensor (rear, passenger, KPH) | |
WHLSPD_REAR_PAS_MPH | 217 | B7[0] | B6[6] | 15 | Big-Endian | Unsigned Integer | 0.007456452 | 0.00 | 0.00 | 245.00 | 80 Hz | Wheel speed sensor (rear, passenger, MPH) | |
GT350_TRANSMISSION | TBD | 230 | B0[4] | B0[7] | 4 | Big-Endian | Unsigned Integer | Seems to be clutch related because it changes value at the approximate times the clutch is being engaged and disengaged. | |||||
TRANSMISSION_TEMP_C | 230 | B4[0] | B4[7] | 8 | Big-Endian | Unsigned Integer | 1 | -60.00 | -60.00 | 195.00 | 50 Hz | Transmission Temperature (deg-C) | |
TRANSMISSION_TEMP_K | 230 | B4[0] | B4[7] | 8 | Big-Endian | Unsigned Integer | 1 | 213.15 | 213.15 | 498.15 | 50 Hz | Transmission Temperature (deg-K) | |
TRANSMISSION_TEMP_F | 230 | B4[0] | B4[7] | 8 | Big-Endian | Unsigned Integer | 1 | -76.00 | -76.00 | 383.00 | 50 Hz | Transmission Temperature (deg-F) | |
GT350_ENGINE_LAMBDA? | Lambda? | 242 | B3[0] | B2[4] | 13 | Big-Endian | Signed 2's complement integer | 25 Hz | Possible engine lambda (AFR) sensor. | ||||
TBD | 242 | B2[5] | B2[7] | 3 | 25 Hz | There is some type of 3-bit field here | |||||||
GT350_ALTIMETER? | Altimeter? | 326 | B3[0] | B2[1] | 10 | 1 Hz | Possible altimeter, but really just a wild guess at this point. |
CAN bus register details
Each section below lists one CAN bus register, each byte, and each bit. Some values are known and verified; other values are guesses or work-in-progress; and other values are completely unknown.
For known values, there will be a register description, datatype description, decoding formula, range of values, and possible notes of explanation. For both known, and unknown values, the following descriptions apply.
VALIDATED FIELDS
- Given a descriptive name
- Datatype will give full details how the data is formulated and decoded on the CAN bus
- Decoding formula in the form of "Y = mX + b"
- Range of possible values using standard math set notation with "[ ]" and "( )"
- Applicable notes where necessary
PARTIALLY UNKNOWN FIELDS
- Usually given the names in the form TBD_REGNUM_FIELDNUM. For example: TBD_077_01 or TBD_077_02 where '077' is the CAN bus address associated with this register, and '01' and '02' are the enumerated counts of the unknown fields.
- Usually I've figured out the datatype and will give a datatype definition.
- Sometimes I've figured out the decoding formula, but don't know what the data represents.
- Sometimes I'll make an educated or wild guess what I think is in this field.
COMPLETELY UNKNOWN FIELDS
- Will be shown as "?" in the register mappings below.
- Values marked with "?" will constantly be changing, but their contents are unknown.
HARD CODED FIELDS
- These values never seem to change; they are fixed values.
- Will be marked either "1" or "0" in the register mappings below.
- Their purpose is completely unknown.
ADDR: 041 -- GT350_041_TBD
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|
Byte-0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte-1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte-2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte-3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte-4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte-5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte-6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte-7 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Fixed Values: HEX: 00 00 00 00 00 00 00 00
ADDR: 047 -- GT350_047_TBD
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|
Byte-0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
Byte-1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte-2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte-3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte-4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte-5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte-6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte-7 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Fixed Values: HEX: 20 00 00 00 00 00 00 00
ADDR: 04A -- GT350_04A_TBD
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|
Byte-0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
Byte-1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte-2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte-3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte-4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte-5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte-6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte-7 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Fixed Values: HEX: 02 00 00 00 00 00 00 00
ADDR: 04B -- GT350_04B_TBD
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|
Byte-0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte-1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte-2 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 |
Byte-3 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 |
Byte-4 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 |
Byte-5 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 |
Byte-6 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte-7 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Fixed Values: HEX: 00 C0 D8 D8 D8 D8 C0 00
ADDR: 076 -- GT350_STEERING_ANGLE
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|
Byte-0 | REVERSE_SW | STEERING_ANGLE [b14:b08] | ||||||
Byte-1 | STEERING_ANGLE [b07:b00] | |||||||
Byte-2 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte-3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte-4 | UNKWN_BIT | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte-5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte-6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte-7 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
REVERSE_SW:
- Datatype: Boolean, 1-bit
- 1=Reverse engaged; 0=Reverse not engaged
STEERING_ANGLE:
- Datatype: Big-Endian, Unsigned integer, 15-bits
- Available as degrees or radians
- Y = mX + b: Degrees: m=-0.1, b=1600
- Y = mX + b: Radians: m=-0.00174533, b= 27.92528
- Practical Range: (-450, 450) Degrees, (-7.85, 7.85) Radians
- Theoretical Range: (-1600, 1600) Degrees, (-28, 28) Radians
- Notes: Degrees (radians) increase in clockwise direction of steering wheel
UNKWN_BIT
- Unknown bit. Changes value, but purpose is unknown.
FIXED VALUES:
- Byte-2 HEX: C0
- Byte-3 HEX: 00
- Byte-5 HEX: 00
- Byte-6 HEX: 00
- Byte-7 HEX: 00
ADDR: TBD -- GT350_
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|
Byte-0 | ||||||||
Byte-1 | ||||||||
Byte-2 | ||||||||
Byte-3 | ||||||||
Byte-4 | ||||||||
Byte-5 | ||||||||
Byte-6 | ||||||||
Byte-7 |
ADDR: 077 -- GT350_SPEEDOMETER
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|
Byte-0 | SPEEDOMETER [b15:b08] | |||||||
Byte-1 | SPEEDOMETER [b07:b00] | |||||||
Byte-2 | TBD_077_01 [b15:b08] | |||||||
Byte-3 | TBD_077_01 [b07:b00] | |||||||
Byte-4 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Byte-5 | ? | ? | ? | ? | ? | ? | ? | ? |
Byte-6 | ? | ? | ? | ? | TBD_077_02 [b12:b08] | |||
Byte-7 | TBD_077_02 [b07:b00] |
SPEEDOMETER:
- Datatype: Big-Endian, Unsigned Integer, 16-bits
- Available as: Kilometers per hour (KPH), Miles per hour (MPH)
- Y = mX + b: KPH: m=0.01, b=0
- Y = mX + b: MPH: m=0.00621371, b=0
- Theoretical Range: [0, 656) KPH, [0, 408) MPH
TBD_077_01:
- Unknown purpose
- Datatype: Big-Endian, Unsigned Integer, 16-bit
- Notes: Being investigated as possible: longitudinal accelerometer
TBD_077_02:
- Unknown purpose
- Datatype: Big-Endian, Unsigned Integer, 12-bit
ADDR: 07D -- GT350_BRAKE_PRESSURE
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|
Byte-0 | 0 | 0 | BRAKE_PRESSURE [b13:b08] | |||||
Byte-1 | BRAKE_PRESSURE [b07:b00] | |||||||
Byte-2 | ? | ? | ? | ? | ? | ? | ? | ? |
Byte-3 | ? | ? | ? | ? | ? | ? | ? | ? |
Byte-4 | ? | ? | ? | ? | ? | ? | ? | ? |
Byte-5 | ? | ? | ? | ? | ? | ? | ? | ? |
Byte-6 | ? | ? | ? | ? | ? | ? | ? | ? |
Byte-7 | ? | ? | ? | ? | ? | ? | ? | ? |
BRAKE_PRESSURE
- Datatype: Big-Endian, Unsigned Integer, 14-bits
- Available as: BAR, KPA, or PSI
- Y = mX + b: BAR: m=0.025, b=0
- Y = mX + b: KPA: m=2.5, b=0
- Y = mX + b: PSI: m=0.362595, b=0
- Practical Range: [0, 64] BAR, [0, 6400] KPA, [0, 928] PSI
- Theoretical Range: [0, 410) BAR, [0, 40960] KPA, [0, 5940) PSI
- Notes: The practical range and theoretical range are many orders of magnitude different. The 14-bit field will allow up to 410 BAR, but in the real word, I've never seen more than 64 BAR no matter how hard I pressed on the brake pedal.
ADDR: 156 -- GT350_ENGINE_TEMPS_01
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|
Byte-0 | COOLANT_TEMP [b07:b00] | |||||||
Byte-1 | ENGINE_OIL_TEMP [b07:b00] | |||||||
Byte-2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte-3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte-4 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
Byte-5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte-6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte-7 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
COOLANT_TEMP
- Datatype: Big-Endian, Unsigned Integer, 8-bits
- Available as: Celcius, Kelvin, or Farenheit
- Y = mX + b: Celcius (C): m=1.0, b=0
- Y = mX + b: Kelvin (K): m=213.15, b=0
- Y = mX + b: Farenheit (F): m=1.8, b=-76
- Theoretical Range: [-60, 195] deg-C, [213.15, 468.15] deg-K, [-76, 383] deg-F
ENGINE_OIL_TEMP
- Datatype: Big-Endian, Unsigned Integer, 8-bits
- Available as: Celcius, Kelvin, or Farenheit
- Y = mX + b: Celcius (C): m=1.0, b=0
- Y = mX + b: Kelvin (K): m=213.15, b=0
- Y = mX + b: Farenheit (F): m=1.8, b=-76
- Theoretical Range: [-60, 195] deg-C, [213.15, 468.15] deg-K, [-76, 383] deg-F
ADDR: TBD -- GT350_
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|
Byte-0 | ||||||||
Byte-1 | ||||||||
Byte-2 | ||||||||
Byte-3 | ||||||||
Byte-4 | ||||||||
Byte-5 | ||||||||
Byte-6 | ||||||||
Byte-7 |