This page is intended to outline all of the CAN messages defined in codegen including their purpose and format. It is also a list of which boards send and receive each message to allow developers to note what functionality they are responsible for on the CAN bus.
Note: The data in the codegen repository should be taken as the source of truth. This page is intended to be used for the convenience of others who don't want to parse the format used in the repository, but this may not be kept up to date.
To make codegen simpler we have decided on four possible formats for CAN dataframes
U8 - 8 uint8_t
U16 - 4 uint16_t
U32 - uint32_t
U64 - 1 uint64_t
E - An empty message (a uint64_t containing a 0 value always)
Also note that all definitions with the “EE” prefix are from exported_enums.h
Telemetry/Driver Display will handle all messages and will broadcast/log/display as deemed necessary.
IDs 0-13 are considered "CRITICAL" and require acknowledgement (ACK)
ID | Message Name | Sender | Intended Handler | Format | Fields | Description |
---|---|---|---|---|---|---|
0 | BPS Heartbeat | BMS Carrier | Centre Console | U8 | status - the fault bitset indicating the fault reason and where it appeared | bps_heartbeat.c will transmit a heartbeat periodically and ensure it is acknowledged by other parts of the vehicle. The fault bitset is shown below as from exported_enums.h |
1 | Set relay states | Centre Console | BMS Carrier Solar 5 MPPTs Solar 6 MPPTs Motor Controller | U16 | relay mask - This is 1 << relay_id, where relay id relay state - This is the relay_state << relay_id See description for more details. | These control relays in our vehicle. Each relay is given an ID and state. Below is a sample of the relay states being sent from relay_tx.c Below are possible relay IDs Below are possible relay states |
2-5 | RESERVED CRITICAL MESSAGES | |||||
6 | Power on main sequence | Centre Console | Motor Controller Pedal | U16 | sequence - One part of the step of turning on the vehicle | These are the series of steps (going from 0 to 5) to power on the vehicle from the main power source. |
7 | Power off sequence | Centre Console | Motor Controller Pedal | U16 | sequence - One part of the step of turning off the vehicle | These are the series of steps to power off the vehicle |
8 | Power on aux sequence | Centre Console | Motor Controller Pedal | U16 | sequence - One part of the step of turning on the vehicle | These are the series of steps to power on the vehicle from the aux battery |
9 | Drive Output | Centre Console | Motor Controller | U16 | drive output - Shows the gear the car is in | Drive output shows gear the car is in |
10 | Set E-brake State | Centre Console | U8 | ebrake state | This is used to set the E-brake state. NOTE: Firmware does not have to worry about this, this message will be removed. | |
11 | Regen Braking | Centre Console | Motor Controller | U8 | state - A bool which shows whether regen braking is enabled or not | True - Regen braking on False - Regen braking off |
12 | RESERVED | |||||
13 | Ready to drive | Centre Console | Telemetry | U8 | ready state - A bool which shows whether the car is ready to drive or not | True - Car is ready False - Car is not ready |
14 | Relay open okay 5 MPPTs | Solar 5 MPPTs | Telemetry | E | This message shows up when solar relays opened correctly when there are 5 MPPTs | |
15 | Relay open okay 6 MPPTs | Solar 6 MPPTs | Telemetry | E | This message shows up when solar relays opened correctly when there are 6 MPPTs | |
16-17 | RESERVED | |||||
18 | Pedal Output | Pedal | Motor Interface | U32 | throttle output - The throttle angle brake output - The brake angle | As defined in pedal_monitor.h, if the pedal angle is greater than 50, then the pedal is pressed. Otherwise it is released. |
19-21 | RESERVED | |||||
22 | Drive State | Motor Controller | U16 | drive_state - Shows the gear the car is in | This seems to be a duplicate of Drive Output and is only used for testing at the moment as shown in test_drive_rx.c | |
23 | Lights Sync | Power Distribution Rear | Lights Front | E | ??? | |
24 | Lights | Steering | Lights | U8 | lights id - The light we want to turn on/off state - Shows whether the light is on or off | Turns on certain lights on the vehicle |
25 | Horn | Steering | Lights | U8 | state - Shows whether the horn is on or off | |
28 | Begin Precharge | Centre Console | Motor Controller | E | Begins the precharge. Pre-Charge: MS 14 | |
29 | Precharge Completed | Motor Controller | Centre Console | E | Indicates precharge is completed. | |
30 | Hazard | Centre Console | U8 | state - Shows whether the hazard button is pressed or not | Indicates if the hazard button from the centre console is pressed True - Turn hazard light on False - Turn hazard light off | |
31 | Discharge Precharge | Centre Console | Motor Controller | E | Discharges the capacitors that were precharged for the motor controller | |
32 | Battery Voltage Temperature | BMS Carrier | Telemetry | U16 | module ID - ID of the cell (from 0 to 17) voltage - Voltage of each cell temperature - highest temperature reading | Sends the voltage and temperature readings from each cell |
33 | Battery Aggregate Voltage and Current | BMS Carrier | Telemetry | U32 | voltage - Average voltage based on all cells current - Average current through each of the cells | Sends the average voltage and current from all 18 cells. |
34 | State Transition Fault | Centre Console | Telemetry | U16 | state machine - The area which the fault occured fault Reason - Why the fault occured | Indicates when a fault has occured during state transitions, the state machine’s are shown below An example of a fault reason is shown below as from drive_fsm.c |
35 | Motor Controller Voltage/Current | Motor Controller | Telemetry | U16 | mc voltage 1 - DC Bus voltage of the left motor controller (V) mc current 1 - DC Bus current of the left motor controller (A) mc voltage 2 - DC Bus voltage of the right motor controller (V) mc current 2 - DC Bus current of the right motor controller (A) | Shows the DC bus voltage and current on both the left and right motor controller. |
36 | Motor Velocity | Motor Controller | Telemetry | U16 | vehicle velocity left - Velocity of the left motor controller (cm/s) vehicle velocity right - Velocity of the left motor controller (cm/s) | Shows the vehicle’s left and right motor velocity |
37 | Motor Status | Motor Controller | Telemetry | U32 | motor status left motor status right | ??? |
38 | Motor Temps | Motor Controller | Telemetry | U32 | motor temp left - Temperature of left motor (°C) sink temp left - Temperature of left heat sink (°C) motor temp right - Temperature of right motor (°C) sink temp right - Temperature of left heat sink (°C) | Shows the temperature of the motors and the heat sinks. |
39-40 | RESERVED | |||||
41 | Cruise Control Command | Steering | Telemetry | U8 | command - See description | Sends commands to configure cruise control. Some possible commands are shown below. |
42 | Aux measurement main voltage | Power Select | Centre Console | U16 | aux voltage aux current aux temp main voltage | |
43 | DCDC Measurement Main Current | Power Select | Centre Console | U16 | DCDC voltage DCDC current DCDC temp main current | |
44 | Power Select Status | Power Select | Centre Console | U16 | fault bitset warning bitset valid bitset cell voltage | |
45 | UV Cutoff Notification | Power Distribution Front | Telemetry | E | This message is sent when undervoltage cutoff has occured in front PD. | |
46 | Regen Braking Toggle Request | Steering | Centre Console | E | This message will toggle regen braking. | |
47 | RESERVED | |||||
48 | Request to Charge | Charger | Centre Console | E | Indicates when we try to start charging. | |
49 | Allow Charging | Centre Console | Charger | E | Indicates when charging is allowed (note charging is only allowed when we’re parked). | |
50 | Charger Connected State | Charger | U8 | is connected - A bool represented whether the charger is connected or not | ||
51 | Solar Data 6 MPPTs | Solar 6 MPPTs | Telemetry | U32 | data point type data value | |
52 | Solar fault 6 MPPTs | Solar 6 MPPTs | Telemetry Centre Console | U8 | fault fault data | |
53 | Charger Fault | Charger | Telemetry | U8 | fault - The error that occured | The different faults from charger are shown below. |
54 | Front Current Measurement | Power Distribution Front | Centre Console | U16 | current ID current | |
55 | Rear Current Measurement | Power Distribution Rear | Centre Console | U16 | current ID current | |
56 | RESERVED | |||||
57 | Battery Fan State | BMS Carrier | U8 | fan[8] - The StatusCode of each fan | StatusCodes are shown below. | |
58 | Battert Relay State | BMS Carrier | U8 | high voltage - Indicates if the GPIO pin is pulled high (relay is closed) ground - indicates if the GPIO pin is pulled low (relay is open) | ||
59 | Solar Data 5 MPPTs | Solar 5 MPPTs | Telemetry | U32 | data point type data value | |
60 | Solar fault 5 MPPTs | Solar 5 MPPTs | Telemetry Centre Console | U8 | fault fault data | |
61 | Rear Power Distribution Fault | Power Distribution Rear | Centre Console | U16 | fault data enclosure temperature data DCDC temperature data faulting output | See https://uwmidsun.atlassian.net/l/c/normaJUS for how to interpret PD fault messages. |
62 | Front Power Distribution Fault | Power Distribution Front | Centre Console | U16 | fault data faulting output | |
63 | Baby Driver | Baby Driver | Baby Driver | U8 | ID data[7] |