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