Introduction to DMX
Packet Structure
DMX data is asynchronous serial data sent at 250 kbit/s with 2 stop bits and no parity. This means that each clock pulse or bit sent takes 4 µs. The packet is structured beginning with a long BREAK where all data sent is low. This is followed by a Mark After Break or MAB, which is a short period high. There is then a Start Code (SC), consisting of an 11 bit serial frame (1 low bit, the 8 bit data byte, and 2 high bits) in which the data sent is 0x00. The Start Code can also contain different data to signify what type of DMX data is contained within the packet; 0x17 signifies a text packet, 0xCC for a Remote Device Management packet (more on this later), 0xCF is a system information packet, all sorts of start codes are used to signify different types of data. The Start Code is then followed by up to 512 frames of the same structure, each called a SLOT, containing all of the DMX data (RGB values, CMY values, servo position, fog machine pressure, etc...). There is an optional Mark Time Between Frames, (MTBF) which can be up to a second high between each frame. Once the data frames have finished sending, there is another Mark Time Between Packets (MTBP) of up to a second. However, these are rarely used to maintain frame rate. The table below shows the timings and common abbreviations of each of these parts of a DMX packet.
Packet | Abbr. | Clock Pulses | Timing |
---|---|---|---|
Break | BREAK | 22 | 88 µs |
Mark After Break | MAB | 2 | 8 µs |
Start Code | SC | 11 | 44 µs |
Mark Time Between Frames | MTBF | X | 0-1 s |
Slot | SLOT | 11 | 44 µs |
Mark Time Between Packets | MTBP | X | 0-1 s |
Full DMX512 Packet | N/A | 5667 | 23 ms |
Note the time it takes for a full DMX packet to be transmitted (23 ms). Inverting this gives us a maximum frame rate of 44 Hz.