Toyota Inverter Clocked Serial Interface Protocol: Difference between revisions
(Categories) |
|||
(16 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
This page | This page explains the Clocked Serial Interface (CSI) used on various unmodified Toyota inverters accessed via the CSI pins (REQ, CLK, HTM, MTH). For connector and wiring information, see the model page for the inverter in question: | ||
== Toyota Protocol == | * [[Toyota G9200 Inverter]] - Lexus, Camary, Gen3 Prius, Auris, Yaris | ||
* [[Lexus GS450h Drivetrain|Lexus GS450]] / Camry drivetrain information | |||
* [[Auris/Yaris Inverter|Gen3 Prius / Auris / Yaris]] replacement board (not using the CSI protocol) | |||
== Background == | |||
This interface was originally described as Toyota Sync Serial or "USART" by the first reverse engineering efforts. However once the datasheet for the onboard microcontroller was found, it was discovered that the datasheet refers to this interface as a Clocked Serial Interface (CSI). Each type of interface is referred to by letter, with "G" being assigned to the CSI, therefore it is referred to as the CSIG interface throughout the CPU datasheet. | |||
See the model-specific pages above for details on CPU part numbers and datasheets for more information. | |||
== Toyota Protocol == | |||
* REQ Request line from hybrid controller to Inverter | * REQ Request line from hybrid controller to Inverter | ||
Line 13: | Line 23: | ||
Toyota Serial example waveforms | Toyota Serial example waveforms | ||
* Physical layer investigations: https://openinverter.org/forum/viewtopic.php?p=54373#p54373 | |||
* Discussion of physical layer communication issues: https://openinverter.org/forum/viewtopic.php?t=2823 | |||
* and: https://openinverter.org/forum/viewtopic.php?p=72233#p72233 | |||
Data logging Toyota Serial Protocol | Data logging Toyota Serial Protocol | ||
Prius Gen3 PHV has 105 bytes HTM and 140 bytes MTH | Prius Gen3 PHV (Inverter model G9200-47200) has 105 bytes HTM and 140 bytes MTH | ||
[[File:ToyotaSyncSerialFrames.png|thumb]] | [[File:ToyotaSyncSerialFrames.png|thumb]] | ||
[[File:ToyotaSyncSerialBitpattern.png|thumb]] | [[File:ToyotaSyncSerialBitpattern.png|thumb]] | ||
[[File:Gen3Pin out.png|thumb]] | |||
[[File:Prius ZVW30 D29 A59 Inverter Signals.png|thumb]] | |||
[[File:Prius Gen3 - Auris - Yaris Connector Body .jpg|thumb|Prius Gen3 / Auris / Yaris Connector Body ]] | |||
== HTM Data == | |||
HTM (Hybrid control unit To Motor control unit) data is required to make the motors spin. The following is a collection of what could be some of that data: | |||
Typically the the frame is finished with a 16bit checksum of the preceding bytes, Least Significant Byte first. | |||
EngineRPM is sent. A guess is this is so that the MCU can detect slip on the clutch-like slip disk that couples the engine flywheel to the hybrid transmission. On a Gen3 Prius this is sent as first byte where 1bit = 32rpm. This is approximated by (MG1speed + MG2speed)/113. A more accurate calculation is (MG1speed + MG2speed*(143/145))*5/18/32. 143/145, 5/18 are gear ratios in the transmission as seen in [https://www.youtube.com/watch?v=5lg6yC5_-Bs this] video. 32 is probably so that rpm can fit into one byte and is easily accomplished by bit shift to the right (32 = 2^5). | |||
{| class=wikitable | |||
[[ | |+ HTM Data | ||
[[ | ! Data type | ||
[[ | ! Prius Gen3 | ||
[[ | ! GS450h | ||
|- | |||
! Checksum (sum of all preceding bytes) LSB first | |||
| [98,99] || [78,79] | |||
|- | |||
! Engine RPM | |||
| [0] || [0] | |||
|- | |||
! MG1 Torque Request*4 | |||
| [91,92] || [75,76] | |||
|- | |||
! MG1 Torque Request | |||
| [5,6] [11,12] || [5,6] [11,12] | |||
|- | |||
! MG2 Torque Request | |||
| [30,31] [36,37] || [26,27] [32,33] | |||
|- | |||
! Battery Regen Power Limit | |||
| [76,77] || [63,64] | |||
|- | |||
! Battery Discharge Power Limit | |||
| [78,79] || [65,66] | |||
|- | |||
! Sequential Number | |||
| [94] || | |||
|} | |||
[[Category:Toyota]] | |||
[[Category:Inverter]] | [[Category:Inverter]] | ||
[[Category:Resources]] |
Latest revision as of 17:05, 20 December 2024
This page explains the Clocked Serial Interface (CSI) used on various unmodified Toyota inverters accessed via the CSI pins (REQ, CLK, HTM, MTH). For connector and wiring information, see the model page for the inverter in question:
- Toyota G9200 Inverter - Lexus, Camary, Gen3 Prius, Auris, Yaris
- Lexus GS450 / Camry drivetrain information
- Gen3 Prius / Auris / Yaris replacement board (not using the CSI protocol)
Background
This interface was originally described as Toyota Sync Serial or "USART" by the first reverse engineering efforts. However once the datasheet for the onboard microcontroller was found, it was discovered that the datasheet refers to this interface as a Clocked Serial Interface (CSI). Each type of interface is referred to by letter, with "G" being assigned to the CSI, therefore it is referred to as the CSIG interface throughout the CPU datasheet.
See the model-specific pages above for details on CPU part numbers and datasheets for more information.
Toyota Protocol
- REQ Request line from hybrid controller to Inverter
- CLK Clock signal from hybrid controller to Inverter (Constant 500KHz)
- HTM Hybrid controller to Inverter data frame
- MTH Inverter to Hybrid controller data frame
Bus Transfer Sequence starts with the REQ line changing state
Toyota Serial example waveforms
- Physical layer investigations: https://openinverter.org/forum/viewtopic.php?p=54373#p54373
- Discussion of physical layer communication issues: https://openinverter.org/forum/viewtopic.php?t=2823
- and: https://openinverter.org/forum/viewtopic.php?p=72233#p72233
Data logging Toyota Serial Protocol
Prius Gen3 PHV (Inverter model G9200-47200) has 105 bytes HTM and 140 bytes MTH
HTM Data
HTM (Hybrid control unit To Motor control unit) data is required to make the motors spin. The following is a collection of what could be some of that data:
Typically the the frame is finished with a 16bit checksum of the preceding bytes, Least Significant Byte first.
EngineRPM is sent. A guess is this is so that the MCU can detect slip on the clutch-like slip disk that couples the engine flywheel to the hybrid transmission. On a Gen3 Prius this is sent as first byte where 1bit = 32rpm. This is approximated by (MG1speed + MG2speed)/113. A more accurate calculation is (MG1speed + MG2speed*(143/145))*5/18/32. 143/145, 5/18 are gear ratios in the transmission as seen in this video. 32 is probably so that rpm can fit into one byte and is easily accomplished by bit shift to the right (32 = 2^5).
Data type | Prius Gen3 | GS450h |
---|---|---|
Checksum (sum of all preceding bytes) LSB first | [98,99] | [78,79] |
Engine RPM | [0] | [0] |
MG1 Torque Request*4 | [91,92] | [75,76] |
MG1 Torque Request | [5,6] [11,12] | [5,6] [11,12] |
MG2 Torque Request | [30,31] [36,37] | [26,27] [32,33] |
Battery Regen Power Limit | [76,77] | [63,64] |
Battery Discharge Power Limit | [78,79] | [65,66] |
Sequential Number | [94] |