很多朋友对uart和串口的区别,uart是什么意思认识uart串口不是很了解,六月小编刚好整理了这方面的知识,今天就来带大家一探究竟。通用异步
很多朋友对uart和串口的区别,uart是什么意思认识uart串口不是很了解,六月小编刚好整理了这方面的知识,今天就来带大家一探究竟。
通用异步收发器UART串口简称UART。嵌入式设备中默认配置的通常是通信接口。这是因为很多嵌入式设备没有显示屏,无法获取嵌入式设备的实时数据信息。它们通过UART串口连接到超级终端,打印嵌入式设备的输出信息。而在跟踪调试嵌入式系统时,UART串口是必不可少的通信手段。
例如,网络路由器和交换机应该通过串行端口进行配置。UART串行端口也是许多硬件数据输出的主要接口。例如GPS接收机通过UART串口输出GPS接收数据。
UART功能计算机使用的是并行数据,不能直接发送数据到调制解调器,异步传输前必须经过UART排序。过程如下:CPU先把要写入的数据放入UART寄存器(临时存储块),然后通过FIFO(先进先出队列)传输给串行设备。没有FIFO,信息会变得混乱,无法传输到调制解调器。
它是一种用于控制计算机和串行设备的芯片。需要注意的一点是,它提供了RS-232C数据终端设备接口,以便计算机可以使用RS-232C接口与调制解调器或其他串行设备进行通信。作为接口的一部分,UART还提供以下功能:将计算机内部传输的并行数据转换为输出串行数据流。将计算机外部的串行数据转换为字节,供计算机内部的并行数据设备使用。
向输出串行数据流添加奇偶校验位,并检查从外部接收的数据流的奇偶校验。向输出数据流添加起止标记,并从接收的数据流中删除起止标记。处理键盘或鼠标发送的中断信号(键盘和鼠标也是串行设备)。可以处理计算机和外部串行设备之间的同步管理问题。
一些高端UART还为输入和输出数据提供缓冲器。较新的UART是16550,在计算机需要处理数据之前,它的缓冲区可以存储16个字节的数据,而通常的UART是8250。如果你买的是内置调制解调器,一般里面都有16550的UART。
UART的基本结构(1)输出缓冲寄存器,接收CPU从数据总线发来的并行数据并保存。输出移位寄存器,接收输出缓冲区发来的并行数据,以发送时钟的速率将数据逐个移出,即将并行数据转换成串行数据输出。
输入移位寄存器,以接收时钟的速率将串行数据输入线上出现的数据逐一移位。当数据满时,并行发送到输入缓冲寄存器,即串行数据转换为并行数据。输入缓冲寄存器,从输入移位寄存器接收并行数据,然后由CPU取走。
5]控制寄存器,接收CPU发送的控制字,根据控制字的内容决定通信时的传输方式和数据格式。比如采用异步模式还是同步模式,数据字符数,奇偶校验,奇偶校验,停止位数等参数。
[6]状态寄存器。状态寄存器存储接口的各种状态信息,如输出缓冲区是否为空,输入字符是否准备好。在通信过程中,当满足某一状态时,接口中的状态检测逻辑将状态寄存器的相应位置置为“1”,供CPU查询。异步通信和同步通信图2-56同步信号和异步信号
同步通信技术在发送数据信号时会发送一个同步时钟信号,用来同步发送方和接收方的数据采样频率。如图2-56所示,同步通信时,信号线1为同步时钟信号线,以固定频率切换电平,频率周期为t,在每个电平的上升沿后,对同步发送的数据信号线2进行采样(高电平代表1,低电平代表0),根据采样的数据电平得到输出数据信息。
如果双方没有同步时钟,那么接收方就不知道采样周期,就无法正常获取数据信息。
异步通信技术在异步通信技术中,数据发送方和数据接收方没有同步时钟,只有数据信号线,但是发送方和接收方会按照约定的协议(固定频率)对数据进行采样。数据发送方以每秒57600比特的速度发送数据,接收方也以每秒57600比特的速度接收数据,从而保证了数据的有效性和正确性。
通常,异步通信中使用波特率来指定双方的传输速度,其单位为bps(比特每秒)。
数据的串行和并行通信方式串行通信就像一个列,每个数据元素依次垂直排列。如图2-57所示,传输时串行传输一位,每个时钟周期传输一位。这种传输方式相对简单,速度慢,但使用的总线数量较少。通常一条接收线和一条发送线可以实现串行通信。它的缺点是添加额外的数据来控制数据帧的开始和结束。
并行通信就像一排横线,齐头并进,同时传输。这种通信方法在每个时钟周期内传输的数据量与其总线宽度成正比,但其实现是复杂的。UART通信采用串行通信方式。图2-57串行数据通信和并行数据通信
数据通信传输模式在数据通信过程中,发送方和接收方通常都有一个状态寄存器来描述当前的数据接收和发送状态,以实现数据的正确发送和接收。发送方发送完数据后,会检查发送状态寄存器,看是否允许发送数据(如果最后一个数据还没有发送,则不允许继续发送数据),如果允许,再发送新的数据。
类似地,接收端通过检查接收状态寄存器来确定新数据是否已经到达,如果是,它将进入接收数据缓冲器来读取数据。
(1)轮询模式通过程序执行流程不断检测状态寄存器的结果,如果当前可以发送或接收,则发送或接收数据。该过程可以由以下伪代码来表示。轮询方法实现数据发送伪代码Send(){While(1){if(发送状态==可发送)执行数据发送操作;}};轮询方法实现数据接收伪码Receive(){While(1){if(接收状态==数据到达)执行数据接收操作;}}
根据程序,这种方法实现简单,但是在接收和发送数据时,需要循环检查状态寄存器的值。当没有数据到达或者无法发送数据时,CPU会一直闲置,其他程序得不到CPU的执行权,会大大影响系统的效率。(2)中断模式
中断模式是指当数据到达或可以发送时,产生一个中断,通知CPU发送或接收数据。这种模式将通信硬件与CPU分开。通信硬件只在发送或接收条件就绪时通知CPU处理数据,通信条件未就绪时,CPU处理其他程序。显然,这种模式更合理。这种模式对通信硬件要求较高,需要支持中断信号的产生。(3)DMA模式
通常实现数据的转移或拷贝时,CPU将从源地址处复制数据到寄存器,然后将寄存器数据再写入目的地址处,该复制过程需要CPU来执行。S3C2440支持DMA传输模式,DMA传输是指在CPU不干涉的情况下,DMA硬件自动实现数据的转移和复制,在DMA传输过程中,CPU几乎不用干涉,这样可以让CPU安心的去做自己的事情。
虽然如此,但是DMA在传输数据过程中要占用总线,在大批数据传输时,系统总线会被DMA通道占用,也会影响系统的效率。S3C2440 UART控制器支持DMA方式传输串口通信数据。
S3C2440 UART控制器S3C2440 UART控制器,提供了三个独立的异步串行I/O端口,每个端口都可以在中断模式或DMA模式下工作,换而言之,UART可以生成中断或DMA请求用于CPU和UART之间的数据传输。UART串口挂接在APB总线上,APB总线最高可以达到50MHz工作频率,在使用APB时钟频率时可以达到最高115.2Kbps波特率的通信速度。
如果UART串口接收外部设备提供UEXTCLK(外部时钟),UART可以在更高的速度下工作。每个UART串口在接收装置和发送装置里分别包含一个64Byte的FIFO缓冲区,用于缓存发送数据和接收数据。
由于UART是串行异步通信方式,因此在UART通信过程中每次只能传输1位(bit),若干位组成一个数据帧(frame),帧是UART通信中最基本单元,它主要包含:开始位,数据位,校验位(如果开启了数据校验,要包含校验位),和停止位,帧结构如图2-58所示。
图2-58 UART数据帧结构
UART在通信之前要在发送端和接收端约定好帧结构,也就是约定好传输数据帧格式。
开始位:必须包含在数据帧中,表示一个帧的开始。
数据位:可选5,6,7,8位,该位长度可由编程人员指定。
校验位:如果在开启了数据校验时,该位必须指定。
停止位:可选1,2位,该位长度可由编程人员指定。
通信双方约定好帧格式后,指定同一波特率,以保证双方数据传输的同步。
S3C2440 UART串口工作原理每个UART包含一个波特率产生器,发送器,接收器和一个控制单元,如下图所示:
图2-59 UART硬件结构
UART是以异步方式实现通信的,其采样速度由波特率决定,波特率产生器的工作频率可以由PCLK(外围设备频率),FCLK/n(CPU工作频率的分频),UEXTCLK(外部输入时钟)三个时钟作为输入频率,波特率设置寄存器是可编程的,用户可以设置其波特率决定发送和接收的频率。发送器和接收器包含了64Byte的FIFO和数据移位器。
UART通信是面向字节流的,待发送数据写到FIFO之后,被拷贝到数据移位器(1字节大小)里,数据通过发送数据管脚TXDn发出。同样道理,接收数据通过RXDn管脚来接收数据(1字节大小)到接收移位器,然后将其拷贝到FIFO接收缓冲区里。
以上知识分享希望能够帮助到大家!
声明本站所有作品图文均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系我们