As consumer electronics, computer peripherals, vehicles and industrial applications add embedded functionality, demand is growing for inexpensive, fast and reliable communication media to serve these applications. As a result, increasing numbers of processors and controllers are now integrated with different kinds of buses. These buses are used for communication with PC software, development systems such as emulators, or other devices within the network. Communication usually occurs in either serial or parallel mode, with serial mode much more prevalent at this time.

The common integrated serial buses in microcontrollers are Universal Asynchronous Receiver Transmission (UART), Serial Communication Interface (SCI), Synchronous Peripheral Interface (SPI), Inter-integrated Circuit (I2C), and Universal Serial Bus (USB), along with the automotive serial buses: the Controller Area Network (CAN) and Local Interconnect Network (LIN). These buses differ in speed, physical- interface requirements and communications methodology. This paper offers an overview of serial buses, drivers and physical-interface requirements for embedded system design. Guidelines for selecting the optimal buses and a comparison chart are provided. For illustration purposes, a microcontroller-based design is used.