This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
projects:crazyflie:firmware:comm_protocol [2012-09-26 13:41] macke |
projects:crazyflie:firmware:comm_protocol [2013-08-23 19:54] ledvinap |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Overview ====== | ====== Overview ====== | ||
- | ===== CRTP ===== | + | CRTP is the protocol used to communicate |
- | The CRTP (Crazy RealTime Protocol) | + | |
- | * [[comm_protocol# | + | CRTP is implemented in 3 layers: |
- | | + | |
- | | + | < |
- | * ... | + | |
+ | | ||
+ | | ||
+ | | CRTP packets handling | | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | * **CRTP Link** is responsible for transferring the packets between the copter and the PC. It will typically handles packet size and error detection. | ||
+ | * **CRTP Packet handling** delivers the packet to the right subsystem in the copter and in the PC control software. | ||
+ | * **Application/ | ||
+ | |||
+ | Implemented link drivers: | ||
+ | ^ **Link** | ||
+ | | [[comm_protocol# | ||
+ | | [[comm_protocol# | ||
+ | | [[comm_protocol# | ||
+ | |||
+ | Current port allocation: | ||
+ | ^ **Port** | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
====== Communication ====== | ====== Communication ====== | ||
Line 21: | Line 47: | ||
| DATA 30 | | | DATA 30 | | ||
+---+---+---+---+---+---+---+---+ | +---+---+---+---+---+---+---+---+ | ||
- | |||
- | +--------+--------+--------+--------+--------+--....--+--------+ | ||
- | | 0xAA | 0xAA | Header | Length | Data0 | Packet | CRC32 | | ||
- | +--------+--------+--------+--------+--------+--....--+--------+ | ||
</ | </ | ||
Line 39: | Line 61: | ||
==== 2.4 GHz NordicSemi Radio ==== | ==== 2.4 GHz NordicSemi Radio ==== | ||
- | The wireless interface will add additional header data like CRC when sending the packet and therefore the packet sent to the wireless interface is only a CRTP packet. | + | The wireless interface will add additional header data like CRC when sending the packet and therefore the packet sent to the wireless interface is only a CRTP packet |
==== USB port ==== | ==== USB port ==== | ||
Line 45: | Line 67: | ||
==== Serial port ==== | ==== Serial port ==== | ||
+ | The serial port is configured in 115200 8N1. CRTP packets are sent and received asynchronously using the following packet format: | ||
+ | |||
< | < | ||
7 | 7 | ||
Line 52: | Line 76: | ||
| | | | ||
+---+---+---+---+---+---+---+---+ | +---+---+---+---+---+---+---+---+ | ||
- | | R | | + | | |
+---+---+---+---+---+---+---+---+ | +---+---+---+---+---+---+---+---+ | ||
| | | | ||
Line 62: | Line 86: | ||
| DATA 30 | | | DATA 30 | | ||
+---+---+---+---+---+---+---+---+ | +---+---+---+---+---+---+---+---+ | ||
- | | | + | | |
+---+---+---+---+---+---+---+---+ | +---+---+---+---+---+---+---+---+ | ||
+--------+--------+--------+--------+--------+--....--+--------+ | +--------+--------+--------+--------+--------+--....--+--------+ | ||
- | | 0xAA | 0xAA | Header | Length | Data0 | Packet | CRC32 | | + | | 0xAA | 0xAA | Header | Length | Data0 | Packet | Cksum | |
+--------+--------+--------+--------+--------+--....--+--------+ | +--------+--------+--------+--------+--------+--....--+--------+ | ||
Line 72: | Line 96: | ||
^ **Field** ^ **Byte** ^ **Bit** ^ | ^ **Field** ^ **Byte** ^ **Bit** ^ | ||
| | | | ||
- | | | + | | |
- | | ::: | | + | | ::: | |
- | | ::: | | + | | ::: | |
- | | Size | + | | Size |
- | | Data | + | | Data |
- | | | + | | Cksum | |
- | ===== Ports ===== | + | === Examples |
- | The following ports are used during | + | To send setpoints to the [[projects: |
- | ^ | + | < |
- | | [[comm_protocol# | + | 0xaa 0xaa 0x30 0x0e 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x3e |
- | | | + | </ |
- | | | + | |
- | | | + | |
- | | | + | |
- | + | ||
- | ==== Console ==== | + | |
- | This port is used as a one-way text console. Printouts using printf will be sent on this port and can be read by a receiver if connected. | + | |
+ | To ping Crazyflie: | ||
< | < | ||
- | | + | |
- | +---+---+---+---+---+---+---+---+ | + | <- 0xaa 0xaa 0xf0 0x01 0x01 0xf2 # Received from the copter |
- | | CHAR 0 | | + | |
- | +---+---+---+---+---+---+---+---+ | + | |
- | : | + | |
- | +---+---+---+---+---+---+---+---+ | + | |
- | | CHAR 30 | | + | |
- | +---+---+---+---+---+---+---+---+ | + | |
- | + | ||
- | +--------+--------+--------+--------+--------+--....--+--------+ | + | |
- | | 0xAA | 0xAA | Header | Length | Data0 | | Data30 | | + | |
- | +--------+--------+--------+--------+--------+--....--+--------+ | + | |
</ | </ | ||
- | + | ===== Ports ===== | |
- | The contents of the buffer on the copter side is sent if any of the following is fulfulled: | + | |
- | * The output buffer (of 31 bytes) is full | + | |
- | * A " | + | |
- | * A flush command as been issued | + | |
==== Logging ==== | ==== Logging ==== | ||
Line 131: | Line 135: | ||
The following messages are sent from the Client to the Crazyflie: | The following messages are sent from the Client to the Crazyflie: | ||
- | ^ **Command** ^ **Byte** | + | ^ **Request for** ^ **Byte** |
- | | TOC item request | + | | TOC item | |
- | | | + | | |
- | | TOC CRC and count | 0 | Request the TOC CRC and item count | | + | | TOC CRC and count | 0 |
The following messages are sent from the Crazyflie to the Client: | The following messages are sent from the Crazyflie to the Client: | ||
- | ^ **Command** ^ **Byte** | + | ^ **Reply for** ^ **Byte** |
| TOC item | | TOC item | ||
| ::: | | ::: | ||
Line 146: | Line 150: | ||
| TOC CRC and count | | | TOC CRC and count | | ||
| ::: | | ::: | ||
- | | ::: | + | | ::: |
== Usage == | == Usage == | ||
Line 178: | Line 182: | ||
== Messages == | == Messages == | ||
The following messages are sent from the Client to the Crazyflie: | The following messages are sent from the Client to the Crazyflie: | ||
- | ^ **Command byte** ^ **Byte** | + | ^ **Request for** ^ **Byte** |
- | | 0 | + | | |
| ::: | | ::: | ||
| ::: | | ::: | ||
| ::: | | ::: | ||
- | | 1 | + | | |
| ::: | | ::: | ||
| ::: | | ::: | ||
- | | 2 | + | | |
| ::: | | ::: | ||
- | | 3 | + | | |
| ::: | | ::: | ||
- | | 4 | + | | |
| ::: | | ::: | ||
Line 337: | Line 341: | ||
**TODO** | **TODO** | ||
- | === Link layter | + | === Link layer === |
| 3: | | 3: | ||
| 3: | | 3: | ||
| 3: | | 3: | ||
| 3: | | 3: |