Embedded Systems/Common Protocols
This is a list of common protocols used in embedded systems. Eventually, this list will become hyperlinks to sources of information on each. Many of them are byte-stream protocols that can be transmitted by a variety of serial protocols on a variety of hardware.
- I2C
- RS-485 is an extremely common hardware arrangement used by many embedded protocols:
- CAN on top of RS485
- DeviceNet on top of CAN. Wikipedia: DeviceNet
- NMEA 2000 on top of DeviceNet. Wikipedia: NMEA 2000
- DMX on top of RS485. Wikipedia: DMX512
- see Serial Programming/RS-485, Robotics/Computer Control/The Interface/Networks#RS485, Embedded Control Systems Design/Field busses, Embedded Systems/Serial and Parallel IO#RS-485
- MIDI. official MIDI interface schematics (1); beautiful MIDI IN schematic (2).
- BlueTooth
- InfraRed
- ZigBee
- SPI
- RS-232
- USB
- IP Over Serial Connections
- MINES (Microcontroller Interpreter for Networked Embedded Systems) was designed for very small embedded systems (see Gallery of MINES Devices).
- the Tiny Embedded Network
- IEEE Standard for Sensor Transducer Interface
- the three byte Mini SSC protocol (and another Mini SSC protocol example)
- JTAG
- NTSC / PAL television video output: w:TV Typewriter, Generating TV signal by PSoC, Generating TV signal with the PICs, PIC Breakout, ... Parallax Propeller has a video generator ...
- The low-latency Myrinet protocol is used in over 100 of the TOP500 supercomputers, as of June 2005.
- The low-latency InfiniBand protocol is used in over 100 of the TOP500 supercomputers, as of November 2010.
- The various Audio over Ethernet (AoE) protocols are generally designed to be relatively low latency.
- The LIN-Bus (w:Local Interconnect Network), a low-cost vehicle communication network
- Modbus (w:Modbus)
- Firmata is a generic protocol that allows people to completely control the Arduino from software on a host computer. Arduino reference for Firmata; Firmata wiki.
- rosserial "rosserial ... is a general protocol for sending ROS messages over serial links." Code is available for Arduino and a variety of other platforms. (It was designed for ROS, the w: Robot Operating System).
- Yet Another Scalable Protocol (YASP)
- Perhaps the simplest-to-parse variable-size packet container format is the netstring format.w:netstring
- JSON (perhaps encapsulated in packets of one of the above formats) seems to be gaining popularity as a way to transmit complex data structures, in a way that is easy for humans to read and debug.[1] w:JSON
Further reading [edit]
If you are designing a new protocol because none of these meet your needs (which are what, exactly?), you may want to consider the w:Network protocol design principles, some Serial Programming/Forming Data Packets tips, ponder Communication Systems and Data Coding Theory, select one of the Serial Programming/Error Correction Methods, and post rough drafts to the PICA standards wiki for expert review.
Typically an embedded system has one "main" CPU and a bunch of peripheral devices. Is there a way for the main CPU to automatically find out how many peripheral devices are currently connected, and the unique ID of each device? Yes, several ways -- some of them are listed on a page at the Electronics and Robotics site.
- "Consistent Overhead Byte Stuffing" by Stuart Cheshire and Mary Baker, 1999.