Difference between revisions of "GT350 CAN Bus Topology"

From Wiki-DIY
Jump to: navigation, search
(ADDR: 077 -- GT350_SPEEDOMETER)
 
(114 intermediate revisions by the same user not shown)
Line 1: Line 1:
{| class = "canbusTable"
+
__FORCETOC__
 +
 
 +
== 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.
 +
 
 +
{| class = "diyTable canbusTable"
 
   ! 
 
   ! 
 
   ! 
 
   ! 
   !Hex
+
   ! rowspan="2" |Hex Address
 
   ! colspan="2" |Position
 
   ! colspan="2" |Position
 
   ! 
 
   ! 
 
   ! 
 
   ! 
 
   ! 
 
   ! 
   ! colspan="2" |y=mX+b
+
   ! colspan="2" |Y = mX + b
 
   ! colspan="2" |Range
 
   ! colspan="2" |Range
   ! Sampling
+
   ! rowspan="2" |Sampling Rate
 
   !
 
   !
 
   
 
   
Line 15: Line 21:
 
   !Address Name
 
   !Address Name
 
   !Field Name
 
   !Field Name
  !Address
 
 
   !Start
 
   !Start
 
   !End
 
   !End
Line 25: Line 30:
 
   !Start
 
   !Start
 
   !End
 
   !End
  !Rate
 
 
   !Description
 
   !Description
 
   
 
   
 
  |-
 
  |-
   |GT350_STEERING_ANGLE
+
   |[http://wiki.rcollins.org/core/index.php?title=GT350_CAN_Bus_Topology#ADDR:_076_--_GT350_STEERING_ANGLE GT350_STEERING_ANGLE]
 
   |STEERING_ANGLE_DEG
 
   |STEERING_ANGLE_DEG
 
   |76
 
   |76
Line 76: Line 80:
 
   |1=Reverse engaged
 
   |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
 
   |GT350_BRAKE_PRESSURE
 
   |BRAKE_PRESSURE_BAR
 
   |BRAKE_PRESSURE_BAR
Line 378: Line 415:
 
   |
 
   |
 
   |50 Hz
 
   |50 Hz
   |
+
   |Same as above
 
   
 
   
 
  |-
 
  |-
Line 394: Line 431:
 
   |
 
   |
 
   |50 Hz
 
   |50 Hz
   |
+
   |Same as above
 
   
 
   
 
  |-
 
  |-
Line 410: Line 447:
 
   |
 
   |
 
   |50 Hz
 
   |50 Hz
   |
+
   |Same as above
  
 
  |-
 
  |-
Line 538: Line 575:
 
   |80 Hz
 
   |80 Hz
 
   |Wheel speed sensor (rear, passenger, MPH)
 
   |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
 +
|<nowiki>-60.00</nowiki>
 +
|<nowiki>-60.00</nowiki>
 +
|195.00
 +
|50 Hz
 +
|Transmission Temperature (deg-C)
 +
|-
 +
|
 +
|TRANSMISSION_TEMP_K
 +
|230
 +
|B4[0]
 +
|B4[7]
 +
|8
 +
|Big-Endian
 +
|Unsigned Integer
 +
|1
 +
|<nowiki>213.15</nowiki>
 +
|<nowiki>213.15</nowiki>
 +
|498.15
 +
|50 Hz
 +
|Transmission Temperature (deg-K)
 +
|-
 +
|
 +
|TRANSMISSION_TEMP_F
 +
|230
 +
|B4[0]
 +
|B4[7]
 +
|8
 +
|Big-Endian
 +
|Unsigned Integer
 +
|1
 +
|<nowiki>-76.00</nowiki>
 +
|<nowiki>-76.00</nowiki>
 +
|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.
 +
|}<br><hr><br>
 +
 
 +
== 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
 +
<br>
 +
'''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.
 +
<br>
 +
'''COMPLETELY UNKNOWN FIELDS'''
 +
* Will be shown as "?" in the register mappings below.
 +
* Values marked with "?" will constantly be changing, but their contents are unknown.
 +
<br>
 +
'''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.
 +
<br>
 +
=== ADDR: 041 -- GT350_041_TBD ===
 +
{| class="diyTable canRegister"
 +
!
 +
!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
 +
|}<br>'''Fixed Values:  HEX:'''  00 00 00 00 00 00 00 00
 +
<br>
 +
 
 +
=== ADDR: 047 -- GT350_047_TBD ===
 +
{| class="diyTable canRegister"
 +
!
 +
!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
 +
|}<br>'''Fixed Values:  HEX:'''  20 00 00 00 00 00 00 00
 +
<br>
 +
 
 +
=== ADDR: 04A -- GT350_04A_TBD ===
 +
{| class="diyTable canRegister"
 +
!
 +
!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
 +
|}<br>'''Fixed Values:  HEX:'''  02 00 00 00 00 00 00 00
 +
<br>
 +
 
 +
=== ADDR: 04B -- GT350_04B_TBD ===
 +
{| class="diyTable canRegister"
 +
!
 +
!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
 +
|}<br>'''Fixed Values:  HEX:'''  00 C0 D8 D8 D8 D8 C0 00
 +
<br>
 +
=== ADDR: 04C -- GT350_04C_TBD ===
 +
{| class="diyTable canRegister"
 +
!
 +
!7
 +
!6
 +
!5
 +
!4
 +
!3
 +
!2
 +
!1
 +
!0
 +
|-
 +
|Byte-0
 +
|0
 +
|0
 +
|1
 +
|0
 +
|0
 +
|0
 +
|0
 +
|0
 +
|-
 +
|Byte-1
 +
|UBIT_1_07
 +
|UBIT_1_06
 +
|1
 +
|0
 +
|1
 +
|1
 +
|1
 +
|1
 +
|-
 +
|Byte-2
 +
|1
 +
|1
 +
|1
 +
|1
 +
|1
 +
|1
 +
|1
 +
|1
 +
|-
 +
|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
 +
|}
 +
<br>'''UBIT_1_07:'''  Unknown bit, byte-1, bit-7
 +
<br>'''UBIT_1_06:'''  Unknown bit, byte-1, bit-6
 +
 
 +
<br>'''FIXED FIELDS:'''
 +
* Byte-0 HEX:  20
 +
* Byte-2 HEX:  FF
 +
* Byte-3 HEX:  00
 +
* Byte-4 HEX:  00
 +
* Byte-5 HEX:  00
 +
* Byte-6 HEX:  00
 +
* Byte-7 HEX:  00
 +
<br>
 +
 
 +
=== ADDR: 076 -- GT350_076_STEERING_ANGLE ===
 +
{| class="diyTable canRegister"
 +
!
 +
!7
 +
!6
 +
!5
 +
!4
 +
!3
 +
!2
 +
!1
 +
!0
 +
|-
 +
|Byte-0
 +
|REVERSE_SW
 +
| colspan="7" |STEERING_ANGLE [b14:b08]
 +
|-
 +
|Byte-1
 +
| colspan="8" |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
 +
|UBIT_4_07
 +
|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
 +
|}<br>'''REVERSE_SW:'''
 +
* Datatype:  Boolean, 1-bit
 +
* 1=Reverse engaged; 0=Reverse not engaged
 +
<br>'''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
 +
<br>'''UBIT_4_07:'''  Unknown bit, Byte-4, bit-7.  Changes value, but purpose is unknown.
 +
 
 +
<br>'''FIXED VALUES:'''
 +
* Byte-2 HEX:  C0
 +
* Byte-3 HEX:  00
 +
* Byte-5 HEX:  00
 +
* Byte-6 HEX:  00
 +
* Byte-7 HEX:  00
 +
<br>
 +
 
 +
=== ADDR: 077 -- GT350_SPEEDOMETER ===
 +
{| class="diyTable canRegister"
 +
!
 +
!7
 +
!6
 +
!5
 +
!4
 +
!3
 +
!2
 +
!1
 +
!0
 +
|-
 +
|Byte-0
 +
| colspan="8" |SPEEDOMETER [b15:b08]
 +
|-
 +
|Byte-1
 +
| colspan="8" |SPEEDOMETER [b07:b00]
 +
|-
 +
|Byte-2
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|-
 +
|Byte-3
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|-
 +
|Byte-4
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|-
 +
|Byte-5
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|-
 +
|Byte-6
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|-
 +
|Byte-7
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|}<br>'''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
 +
* '''NOTES:'''  Speedometer is an "estimate" based on the average wheel speed sensor values.
 +
<br>
 +
 
 +
=== ADDR: 07D -- GT350_BRAKE_PRESSURE ===
 +
{| class="diyTable canRegister"
 +
!
 +
!7
 +
!6
 +
!5
 +
!4
 +
!3
 +
!2
 +
!1
 +
!0
 +
|-
 +
|Byte-0
 +
|0
 +
|0
 +
| colspan="6" |BRAKE_PRESSURE [b13:b08]
 +
|-
 +
|Byte-1
 +
| colspan="8" |BRAKE_PRESSURE [b07:b00]
 +
|-
 +
|Byte-2
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|-
 +
|Byte-3
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|-
 +
|Byte-4
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|-
 +
|Byte-5
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|-
 +
|Byte-6
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|-
 +
|Byte-7
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|?
 +
|}<br>'''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.
 +
<br>
 +
 
 +
=== ADDR: 156 -- GT350_ENGINE_TEMPS_01 ===
 +
{| class="diyTable canRegister"
 +
!
 +
!7
 +
!6
 +
!5
 +
!4
 +
!3
 +
!2
 +
!1
 +
!0
 +
|-
 +
|Byte-0
 +
| colspan="8" |COOLANT_TEMP [b07:b00]
 +
|-
 +
|Byte-1
 +
| colspan="8" |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
 +
|}<br>'''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
 +
<br>'''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
 +
<br>
 +
 
 +
=== ADDR: TBD -- GT350_ ===
 +
{| class="diyTable canRegister"
 +
!
 +
!7
 +
!6
 +
!5
 +
!4
 +
!3
 +
!2
 +
!1
 +
!0
 +
|-
 +
|Byte-0
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|-
 +
|Byte-1
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|-
 +
|Byte-2
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|-
 +
|Byte-3
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|-
 +
|Byte-4
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|-
 +
|Byte-5
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|-
 +
|Byte-6
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|-
 +
|Byte-7
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|
 +
|}

Latest revision as of 04:28, 14 June 2017


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: 04C -- GT350_04C_TBD

7 6 5 4 3 2 1 0
Byte-0 0 0 1 0 0 0 0 0
Byte-1 UBIT_1_07 UBIT_1_06 1 0 1 1 1 1
Byte-2 1 1 1 1 1 1 1 1
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


UBIT_1_07: Unknown bit, byte-1, bit-7
UBIT_1_06: Unknown bit, byte-1, bit-6


FIXED FIELDS:

  • Byte-0 HEX: 20
  • Byte-2 HEX: FF
  • Byte-3 HEX: 00
  • Byte-4 HEX: 00
  • Byte-5 HEX: 00
  • Byte-6 HEX: 00
  • Byte-7 HEX: 00


ADDR: 076 -- GT350_076_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 UBIT_4_07 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


UBIT_4_07: Unknown bit, Byte-4, bit-7. 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: 077 -- GT350_SPEEDOMETER

7 6 5 4 3 2 1 0
Byte-0 SPEEDOMETER [b15:b08]
Byte-1 SPEEDOMETER [b07:b00]
Byte-2 ? ? ? ? ? ? ? ?
Byte-3 ? ? ? ? ? ? ? ?
Byte-4 ? ? ? ? ? ? ? ?
Byte-5 ? ? ? ? ? ? ? ?
Byte-6 ? ? ? ? ? ? ? ?
Byte-7 ? ? ? ? ? ? ? ?

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
  • NOTES: Speedometer is an "estimate" based on the average wheel speed sensor values.


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