Controller v2

From 3D printer from scratch
Revision as of 17:03, 29 July 2018 by Sensille (talk | contribs) (UART-based Controller)
Jump to: navigation, search

UART-based Controller

Command Format


The framing is self synchronizing. Each frame ends with an EOF marker. Everywhere else the EOF marker is escaped.

Frame Format

  • 1 byte sequence number
  • n byte frame data
  • 2 byte crc16 (CCITT) of frame data
  • 0x7e as EOF marker


Escaping is done by byte stuffing. Escape character is 0x7d. Bytes to be escaped are 0x7d and 0x7e. The escape character is following by the byte to by escaped XOR 0x20.

Sequence Number

The sequence number is echoed by the controller. The controller expects sequence numbers in ascending order. The sequence number has 7 bits. The special sequence nuber 0x80 resets the expected number in the controller to 0, so that the next frame has to be sent with the number 0x01. This is needed to achieve a resynchronization. The controller signals a receive error by setting the MSB in the response sequence number, echoing the received number.