Mini ssc protocol, D. cyclic redundancy check (crc) error detection, Section 5.d – Pololu Maestro User Manual
Page 39

change. Any Maestro on the line whose device number matches the specified device number accepts the command
that follows; all other Pololu devices ignore the command. The remaining bytes in the command packet are the same
as the compact protocol command packet you would send, with one key difference: the compact protocol command
byte is now a data byte for the command 0xAA and hence must have its most significant bit cleared. Therefore, the
command packet is:
0xAA, device number byte, command byte with MSB cleared, any necessary data bytes
For example, if we want to set the target of servo 0 to 1500 µs for a Maestro with device number 12, we could send
the following byte sequence:
in hex: 0xAA, 0x0C, 0x04, 0x00, 0x70, 0x2E
in decimal: 170, 12, 4, 0, 112, 46
Note that 0x04 is the command 0x84 with its most significant bit cleared.
Mini SSC Protocol
The Maestro also responds to the protocol used by the Mini SSC servo controller. This protocol allows you to control
up to 254 different servos by chaining multiple servo controllers together. It only takes three serial bytes to set the
target of one servo, so this protocol is good if you need to send many commands rapidly. The Mini SSC protocol is
to transmit 0xFF (255 in decimal) as the first (command) byte, followed by a servo number byte, and then the 8-bit
servo target byte. Therefore, the command packet is:
0xFF, servo number byte, servo target byte
For example, if we wanted to set the target of servo 0 to its (configurable) neutral position, we could send the
following byte sequence:
in hex: 0xFF, 0x00, 0x7F
in decimal: 255, 0, 127
The Maestro can be configured to respond to any contiguous block of Mini SSC servo numbers from 0 to 254.
The Maestro identifies the Pololu, Compact, and Mini-SSC protocols on the fly; you do not need to use a
configuration parameter to identify which protocol you are using, and you can freely mix commands in the three
protocols.
5.d. Cyclic Redundancy Check (CRC) Error Detection
For certain applications, verifying the integrity of the data you are sending and receiving can be very important.
Because of this, the Maestro has optional 7-bit cyclic redundancy checking, which is similar to a checksum but more
robust as it can detect errors that would not affect a checksum, such as an extra zero byte or bytes out of order.
Cyclic redundancy checking can be enabled by checking the “Enable CRC” checkbox in the “Serial Settings” tab of
the Maestro Control Center application. In CRC mode, the Maestro expects an extra byte to be added onto the end of
every command packet (except Mini SSC command packets). The most-significant bit of this byte must be cleared,
and the seven least-significant bits must be the 7-bit CRC for that packet. If this CRC byte is incorrect, the Maestro
will set the Serial CRC error bit in the error register and ignore the command. The Maestro does not append a CRC
byte to the data it transmits in response to serial commands.
Pololu Maestro Servo Controller User's Guide
© 2001–2014 Pololu Corporation
5. Serial Interface
Page 39 of 73