API
USB / UART API to communicate with the Brushless DC Motor Controller
The communication protocol is based on ASCII encoding.

Motor Command Parameter

The motor command is set by sending the following message: $!MC:value\r\n where the value range is listed in the table below.
Parameter
Code
Type
Min
Max
Motor command
MC
int16
-1000
1000

Run-time Parameters

The following parameters are sent as either feedback messages or status messages.
Parameter
Code
Type
Min
Max
Feedback counter
FC
uint16
0
65535
Motor Encoder counter
MCC
int32
-2^31
2^31
Motor RPM Feedback
MRPM
int32
-2^31
2^31
Motor operational status
MSTAT
uint8
0
6
Motor voltage
MVOLT
uint8
0
255
MCU temperature
MTEMP
uint8
0
255
Motor PID error
MERR
int32
-2^31
2^31

Feedback message structure

The device transmits a feedback message regularly with 50 ms interval (freq. 20hz).
The format: &f:FC:MCC:MRPM:CRC16\r\n. The minimum size is 12 bytes, the max is 40 bytes.

Status message structure

The device transmits a status message regularly with 200 ms interval (freq. 5 hz).
The format: &s:MSTAT:MVOLT:MTEMP:MC:MERR:CRC16\r\n. The minimum size is 18 bytes, the max is 36 bytes.

CRC calculation

CRC16 is applied to the feedback and status messages.
Polynomial: 0x1021. Initial value: 0xFFFF.
The crc16 value is calculated over the start of the message byte and all the data. For the feedback message it covers &f:FC:MCC:MRPM, for the status message: &s:MSTAT:MVOLT:MTEMP:MC:MERR. First the string message (in ASCII) is prepared with the crc16 appended at the end.
Calculated crc16 is simply added as another data parameter to the end of the status or feedback.

Configuration Parameters

Any configuration parameters could be set by using the following command: $!conf_param_Code:value\r\n
For example, to set the motor acceleration rate the following command is used: $!MAC:25000\r\n. An a out of range value is ignored by the firmware. To save any configuration changes into FLASH memory please see maintenance commands.
The command to read / output configuration parameters is: $?conf_param_Code\r\n.
For example, the command to know the current value of motor acceleration rate is: $?MAC\r\n (the result from the motor controller will be &?MAC:value ).
The command to request all configuration parameters is: $??\r\n
Parameter
Code
Type
Min
Max
Default
Motor operating mode
MM
uint8
0
1
0
Motor acceleration rate
MAC
uint32
50
2^32
200
Motor deceleration rate
MDEC
uint32
50
2^32
500
Motor Amp limit
MAMP
uint8
0
3
2
PID Proportional gain
MKP
uint16
0
65535
10
PID Integral gain
MKI
uint16
0
65535
0
PID Differential gain
MKD
uint16
0
65535
0
Max RPM value
MMRPM
uint16
10
65535
1000
Motor pole pairs
MPP
uint8
1
255
2
Stop braking timeout
MBK
uint16
0
65535
2000
Motor watchdog timeout, ms
MWT
uint16
0
65535
2000
Enable PID error checking
MPEC
uint8
0
1
1

Maintenance commands

A maintenance command is called by sending the following message: $^cmd_name\r\n
Where cmd_name can be found from the table below.
For example, the command $^MVER\r\n is used to request the version of the motor controller.
Name
Code
Reset encoder
MRE
Reset configuration parameters
MRCP
Save configuration parameters
MSAV
Reset the device
MRESB
Version request
Return format is: &?MVER:version_string\r\n
MVER
Reset operational status
MRESS
Last modified 1yr ago