This application note looks at implementing a software-based UART which using general-purpose input/outputs (GPIO) allows the user to overcome hardware limitations or lack of dedicated peripherals.