FIFO的必要性。在进行UART通讯时,中止方法比轮询方法要简洁且功率高。可是,假如没有收发FIFO,则每传输一个数据(5~8位)都要中止处理一次,功率依然不高。假如有了收发FIFO,则能够在接连收发若干个数据(可多至14个)后才发生一次中止,然后一同处理。这就大大提高了收发功率。
接纳超时问题。假如没有接纳超时功用,则在对方现已发送结束而接纳FIFO未填满时并不会触发中止(FIFO满才会触发中止),成果形成最终接纳的有用数据得不到处理的问题。有了接纳超时功用后,假如接纳FIFO未填满而对方发送现已停,则在不超越3个数据的接纳时刻内就会触发超时中止,因而数据会照旧得到处理。
发送时,只需发送FIFO不满,数据只管往里接连放,放完后就直接退出发送子程序。随后,FIFO真实发送完结后会主动发生中止,告诉主程序说:我现已完结真实的发送。
接纳时,假如对方是接连不间断发送,则填满FIFO后会以中止的方法告诉主程序说:现在有一批数据来了,请处理。
假如对方是间断性发送,也没关系,当间隔时刻过长时(2~3个字符传输时刻),也会发生中止,这次是超时中止,告诉主程序说:对方或许现已发送结束,但FIFO未满,也请处理。