BLHeliSuite Silabs Serial Protocol
BLHeliSuite Silabs Serial Protocol
Command
Byte Byte High-Byte Low-Byte Byte PARAM_LEN x Byte Byte High-Byte Low-Byte
0x2E 0x30 - 0x3A 0x00 - 0xFF 0x00 - 0xFF 1-255 // 0=256 0x00 - 0xFF 0x00 - 0x0F 0x00 - 0xFF 0x00 - 0xFF
START 0x2E = 46 = '.' 0x2F = 47 = '/' Escape character: (PC) must send 0x2F / Interface must send 0x2E in response
COMMAND 0x30 = 48 = '0' 0x3C = 58 = '<' All chars are printable to better control with portmonitor
ADRESS 0x0000 = 0 0xFFFF = 65535 (Max for F330 is 0x1DFF). Only Valid if Device Read or Write (Big Endian)
For all other commands the adress bytes will be ignored (better set to 0)
PARAM_LEN(n) 0x01 = 1 0x00 = 256 Length-Field for the following PARAM Block.
To handle the whole Byte range from 0..256 a trick is used
The minimum Value is 1 so there has to be allways 1 Byte in PARAM
Values from 1..255 count what they say, but 0 means 256.
ACK 0x00 = 'OK' 0x0F Interface Response Field with OK or Error Code. Only send by Interface.
Error Codes range is from 0x01 to 0x0F
XMODEM CRC16 0x0000 = 0 0xFFFF = 65535 As used in crc16.h of AVR-Gcc: Polynomial: x^16 + x^12 + x^5 + 1 (0x1021)
Initial value: 0x0
This is the CRC used by the Xmodem-CRC protocol.
All previous bytes are calculated from START to PARAM
V5 Protocol for BLHeliSuite Box and other Serial Interfaces for Silabs ESC (c) by 4712 2 of 4
Rem: The last 2 byte in sequence = CRC. Hex-Values are show when they are allways equal.
cmd_InterfaceTestAlive 30 48 0 May be send by Master to check: Interface still present and responding ?
PC sends: 2F 30 00 00 01 00 CF D4 Data: 0
Interface responds 2E 30 00 00 01 00 00 44 C2 Data: 0
Rem: BLHeli-Setup sends this command 1 time/sec to check the interface connection
cmd_InterfaceExit 34 52 4 Exit Interface PC Mode Resets the BESC's and restarts Boxes Display Mode
PC sends: 2F 34 00 00 01 00 46 D2 Data: 0 .
Interface responds 2E 34 00 00 01 00 00 42 63 Data: 0
Rem: Only valid for Dual mode Interfaces (Box with LCD), otherwise simply return OK
Errror codes
If a command sequence is send by the master and the interface fails to proceed, it will answer with an Error code.
Interface Error Response 2E cc hi lo 01 00 er CRC Data: 00 cc = command which failed; hi+lo = address value which failed; er = Error Code