FIFO的必要性。在进行UART通信时,中断方式比轮询方式要简便且效率高。但是,如果没有收发FIFO,则每传输一个数据(5~8位)都要中断处理一次,效率仍然不高。如果有了收发FIFO,则可以在连续收发若干个数据(可多至14个)后才产生一次中断,然后一起处理。这就大大提高了收发效率。
接收超时问题。如果没有接收超时功能,则在对方已经发送完毕而接收FIFO未填满时并不会触发中断(FIFO满才会触发中断),结果造成最后接收的有效数据得不到处理的问题。有了接收超时功能后,如果接收FIFO未填满而对方发送已经停,则在不超过3个数据的接收时间内就会触发超时中断,因此数据会照常得到处理。
发送时,只要发送FIFO不满,数据只管往里连续放,放完后就直接退出发送子程序。随后,FIFO真正发送完成后会自动产生中断,通知主程序说:我已经完成真正的发送。
接收时,如果对方是连续不间断发送,则填满FIFO后会以中断的方式通知主程序说:现在有一批数据来了,请处理。
如果对方是间断性发送,也不要紧,当间隔时间过长时(2~3个字符传输时间),也会产生中断,这次是超时中断,通知主程序说:对方可能已经发送完毕,但FIFO未满,也请处理。
关键字:UART FIFO
引用地址:
对UART的FIFO的理解
推荐阅读最新更新时间:2024-03-16 14:42
用FIFO实现超声测厚系统A/D与ARM接口设计
在高频超声波数据采集系统中,很多高速 A/D转换器往往不能直接与处理器相连接,这时就需要使用FIFO在处理器与A/D转换器之间架一座桥梁,FIFO的先入先出特性可以方便缓存大量的数据块。在基于ARM的超声波测厚系统中,所用为1 MHz以上的高频超声波探头,测量数据经A/D转换后频率与ARM处理器的数据接收能力不匹配,因此需在A/D与ARM处理之间连接一个FIFO来解决以上问题。该设计选用AD公司的A/D芯片AD9283,FIFO选用Cyperss公司的CY7C4261,两者的最大采样频率都是100 MHz。ARM采用SAMSUNG公司的S3C2410处理器。三者都具有很强的外部接口能力,方便构成无缝连接,硬件接口电路简单,调试
[单片机]
ARM裸机篇-串口UART实验
串口应该都很熟悉了,具体通信原理我就不提了,这个百度上都很多讲的,然后就直接看函数了。 void Uart_SendByte(int data)//这个函数是发送整型数据,参数为data { if(whichUart==0)//这个是选中串口0 { if(data=='')//然后判断数据不为空 { /*寄存器的原始宏定义, #define rUTRSTAT0 (*(volatile unsigned *)0x50000010) //UART 0 Tx/Rx status*/ while(!(rUTRSTAT0 & 0x2));/*这个就是查询串口0的
[单片机]
UART串口协议基础1
串口协议基础 1 串口概述 串口由收发器组成。发送器是通过TxD引脚发送串行数据,接收器是通过RxD引脚接收串行数据。发送器和接收器都利用了一个移位寄存器,这个移位寄存器可以将数据进行“并转串”和“串转并”。虽然一个UART接口通常都包含了发送器和接收器,而实际上一个全双工串口UART控制器需要独立的发送和接收通道。这是因为每个控制通道只控制了一个pin(一个通道要么配置成发送器,要么配置成接收器,不能同时配置成接收器和发送器)。没有严格规定哪个通道可以是发送器、哪个通道可以使接收器。 UART协议(串口协议)允许选择一个校验位来检测简单的通信错误(transmission errors)。校验位可以通过两种不同的方式进行
[单片机]
S3C2440A的UART
UART(Universal Asynchronous Receiver/Transmitter),通用异步收发器,是常用于开发调试的RS-232C串口的核心器件。在百度百科( http://baike.baidu.com/view/245027.htm )上可以找到对它的详细介绍。 虽然这段时间实验定时器、键盘、LED操作时都使用了UART串口输出功能,但那是用开发板提供的示例程序中已有的代码的,想要自己写代码正确实现串口读写操作,还不是那么容易的。昨天花了整整一天时间才稍微弄得明白了点,主要是涉及的寄存器和可选操作方式多,包括收发方式、边沿触发中断与电平触发中断、是否使用自动流控制、是否使用FIFO以及FIFO触发
[单片机]
STM32F4UART串口配置(一)
UART 配置 1.GPIO时钟使能 RCC_AHB1PeriphClockCmd(GPIO时钟总线,ENABLE); 2.串口时钟使能 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USARTX,ENABLE); 3.设置引脚复位映射 GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1); GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1); 4.配置GPIO为推挽复用上拉 详见GPIO配置 5.串口初始化配置 1.定义结构体 USART_InitTypeDef US
[单片机]
【联盛德W806上手笔记】六、7816/UART 控制器
Windows 10 20H2 HLK-W806-V1.0-KIT WM_SDK_W806_v0.6.0 摘自《W806 芯片设计指导书 V1.0》、《W806 MCU 芯片规格书 V2.0》 7816/UART 控制器 设备端符合 APB 总线接口协议 支持中断或轮询工作方式 支持 DMA 传输模式,发送接收各存在 32-byte FIFO DMA 只能按字节进行操作,最大 16-burst byte DMA 操作 兼容 UART 以及 7816 接口功能 串口功能 波特率可编程 5-8bit 数据长度,以及 parity 极性可配置 1 或 2 个 stop 位可配置 支持 RTS/CTS
[单片机]
UART、RS-232、RS-422、RS-485的细微差别
通讯问题,和交通问题一样,也有高速、低速、拥堵、中断等等各种情况。如果把串口通讯比做交通,UART比作车站,那么一帧的数据就好比汽车。汽车跑在路上,要遵守交通规则。如果是市内,一般限速30、40,而高速公路则可以到120。而汽车走什么路,限速多少,就要看协议怎么规定了。常见的串口协议有RS-232、RS-422、RS-485等,他们之间有何细微差别?下面我们就一起来探讨一下。
一、UART是什么
UART是通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种异步收发传输器,是设备间进行异步通信的关键模块。UART负责处理数据
[嵌入式]
SEP3203处理器的FPGA数据通信接口设计
SEP3203处理器是由东南大学国家专用集成电路系统工程技术研究中心设计的16/32位RISC微控制器,面向低成本手持设备和其他通用嵌入式设备。该处理器内嵌ARM7TDMI处理器内核,为用户提供了面向移动终端应用的丰富外设、低功耗管理和低成本的外存配置,整个芯片可以运行在75 MHz。数据通信系统使用的主要功能模块如下:20 KB片上零等待静态存储器(eSRAM);外部存储器接口控制器(EMI);中断控制器(INTC);DMA控制器(DMAC)。 系统中使用的FPGA为Altera公司的Cyclone系列中的EP1C6Q240C8,拥有丰富的I/O资源和逻辑资源,外部接口遵循SRAM时序。它主要负责提供信号的A/D采样频率,并将A
[应用]