GT350 CAN Bus Topology

From Wiki-DIY
Revision as of 06:42, 26 April 2017 by Rcollins (talk | contribs) (ADDR: 047 -- GT350_047_TBD)
Jump to: navigation, search


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: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00


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: 0x20 0x00 0x00 0x00 0x00 0x00 0x00 0x00


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

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

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.


OTHER FIELDS

  • Unknown, or static (don't change)


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