ARM9 S3C2451 什么是UART中的FIFO ?
来源:互联网 发布:动作片推荐 知乎 编辑:程序博客网 时间:2024/05/21 13:58
FIFO是先进先出缓冲区的意思,即串口接收到的数据可以先进入FIFO,不必马上进入中断服务程序接收,这样可节省CPU时间。对于发送数据也一样,可以把要发送的数据一起写入FIFO,串口控制器可按写入顺序依次发送出去。
fifo只是一个缓冲器而已如果你的cpu没什么别的工作或完全处理的过来uart数据的话,可以用nonfifo模式如果你的cpu有一些耗时的工作要处理,也许uart数据来了很多才开始处理,这样就需要fifo做缓冲了。
串口设置的触发等级,就是预先设定的一个值。每当传输了这个值的数据量就触发一次中断。比如设置了8字节,那么每传8字节数据就会触发一次中断了。
看来许多人还没有真正理解FIFO的作用和优点,仍然停留在每收发一个字符就要中断处理一次的老思路上。UART收发FIFO主要是为了解决收发中断过于频繁而导致的CPU效率不高的问题。
FIFO的必要性。在进行UART通信时,中断方式比轮询方式要简便且效率高。但是,如果没有收发FIFO,则每传输一个数据(5~8位)都要中断处理一次,效率仍然不高。如果有了收发FIFO,则可以在连续收发若干个数据(可多至14个)后才产生一次中断,然后一起处理。这就大大提高了收发效率。
接收超时问题。如果没有接收超时功能,则在对方已经发送完毕而接收FIFO未填满时并不会触发中断(FIFO满才会触发中断),结果造成最后接收的有效数据得不到处理的问题。有了接收超时功能后,如果接收FIFO未填满而对方发送已经停,则在不超过3个数据的接收时间内就会触发超时中断,因此数据会照常得到处理。
总之,FIFO的设计是优秀而合理的,它已经帮你想到了收发过程中存在的任何问题,只要初始化配置UART后,就可以放心收发了,FIFO和中断例程会自动搞定一切!
完全不必要担心FIFO大大减少了中断产生的次数而“可能”造成数据丢失的问题!
发送时,只要发送FIFO不满,数据只管往里连续放,放完后就直接退出发送子程序。随后,FIFO真正发送完成后会自动产生中断,通知主程序说:我已经完成真正的发送。
接收时,如果对方是连续不间断发送,则填满FIFO后会以中断的方式通知主程序说:现在有一批数据来了,请处理。
如果对方是间断性发送,也不要紧,当间隔时间过长时(2~3个字符传输时间),也会产生中断,这次是超时中断,通知主程序说:对方可能已经发送完毕,但FIFO未满,也请处理。
- ARM9 S3C2451 什么是UART中的FIFO ?
- ARM9 S3C2451 UART 理解
- 什么是UART中的FIFO ?
- Linux FIFO 含义 同时 ARM9 S3C2451 手册UART中也涉及到FIFO
- uart arm9
- uart FIFO
- uart FIFO
- ARM9(S3C2440) UART
- ARM9(S3C2440) UART
- UART的FIFO功能
- 什么是UART ?
- 什么是 UART
- ARM9 S3C2451 LED 知识点 代码 封装 题目实践
- UART的发送FIFO问题
- 嵌入式系统学习——S3C2451之串口UART
- 基于ARM--s3c2451的函数封装---UART封装
- 什么是FIFO FIFOS
- ARM9硬件接口学习之 UART
- Ubuntu 16.04 一系列软件安装命令,包括QQ、搜狗、Chrome、vlc、网易云音乐安装方法
- Sets-STL
- 讯飞语音转文字
- string实现大数加法
- SSM框架整合(以淘淘商城为例)
- ARM9 S3C2451 什么是UART中的FIFO ?
- 软件测试准则
- Fragment 重叠问题的原因及解决办法
- jQuery基本方法的扩展
- 集合小结
- Vector-Erase
- 数据结构-动态规划之找零钱
- js ajax调用rest接口
- java多线程核心技术 第五章 定时器Timer