目前扩展串口的方法主要有以下方法,
①、采用串口扩展芯片实现,如ST16C550、ST16C554、SP2538、MAX3110等,虽然成本较高, 但系统的可靠性得到了保证,适用于数据量较大、串口需求较多的系统;
②、采用分时切换的方法将一个串口扩展与多个串口设备通信,分时复用的方法成本低, 但只适用于数据量不大的场合, 并且只能由这个单片机主动和多个设备通信,实时性差;
③、用软件模拟的方法扩展串口,其优势也是成本低、实时性好, 但要占用一些CPU时间。
一般的软件模拟扩展串口方法,使用1个I/O端口、1个INT外部中断和定时器,该方法扩展的串口有2个缺点,
①、由于使用了INT外部中断,故只能使用2个INT外部中断扩展2个串口。
②、文中的发送和接收数据的效率比较低,占用了CPU的大量时间,不能与其他任务同时进行,所以使用范围有限。
本文提出的模拟串口方法,仅使用2个普通I/O和1个定时器,由于不需要INT的限制,可以扩展出多个串口,且带FIFO的功能,该方法扩展模拟串口的收发数据在中断服务中完成,所以非常效率高,一般的单片机都支持定时器中断,所以所以该方法在大多数单片机上都可以应用。