How to Read/Write Drive Parameters Over CAN Bus
This example demonstrates reading and writing the parameter /driver/limiter/ppos (ID: 80/0x50). We'll write the value 1000.0 and read it back.
Prerequisites:
- An ESCx Controller that is powered ON
 - CAN bus is functioning properly
 - Controller CAN address is set to 0
 
note
- All values use big-endian byte order
 
Step 1: Write Parameter CAN Frame
note
- See parameter list for available parameters
 - Verify parameter type - most are float, some are integer
 
| CAN ID | DLC | 
|---|---|
| 0x0C7 | 8 | 
| Byte 0 | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | 
|---|---|---|---|---|---|---|---|
| Receiver address  0x0  | Write parameter  0x3  | Parameter ID  0x50  | Array index  0x0  | Float LSB  0x00  | Float  0x00  | Float  0x7A  | Float MSB  0x44  | 
note
- CAN ID calculation: SID is 24, sender address is 7 -> (24 << 3) + 7 = 192 + 7 = 199 (DEC) = 0xC7
 - Decimal 1000.0 in float is 0x447a0000
 
Step 2: Write Response
| CAN ID | DLC | 
|---|---|
| 0x0C0 | 6 | 
| Byte 0 | Byte 1 | Byte 2 | Byte 3 | Byte 4 - Byte 5 | 
|---|---|---|---|---|
| Receiver address  0x7  | Write parameter response  0x43  | Parameter ID  0x50  | 0xFF = error  Parameter ID if success  | Error code (INT16) | 
Step 3: Read Parameter Request
| CAN ID | DLC | 
|---|---|
| 0x0C7 | 8 | 
| Byte 0 | Byte 1 | Byte 2 | Byte 3 | Byte 4 - Byte 7 | 
|---|---|---|---|---|
| Receiver address  0x0  | Read parameter  0x2  | Parameter ID  0x50  | Array index  0x0  | 0x0 | 
Step 4: Read Response
| CAN ID | DLC | 
|---|---|
| 0x0C0 | 5-8 (depends on parameter type) | 
| Byte 0 | Byte 1 | Byte 2 | Byte 3 | Byte 4 - Byte 5 | 
|---|---|---|---|---|
| Receiver address  0x7  | Read parameter response  0x42  | Parameter ID  0x50  | 0xFF = error  Parameter ID if success  | Parameter value - 0x00007A44  Error code (INT16) if error occurs  | 
Error Code
| Error code | Description | 
|---|---|
| -1 | Parameter ID out of bounds | 
| -2 | Parameter not found | 
| -3 | Variable is not parameter | 
| -4 | Set value below minimum | 
| -5 | Set value above maximum | 
| -6 | Parameter is preset type and value not in preset list |