UART寄存器介绍
- 格式:doc
- 大小:13.21 KB
- 文档页数:4
UART (Universal Asynchronous Receiver/Transmitter)通用异步收发器UART是用于控制计算机与串行设备的芯片。
有一点要注意的是,它提供了RS-232C数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了。
作为接口的一部分,UART还提供以下功能:将由计算机内部传送过来的并行数据转换为输出的串行数据流。
将计算机外部来的串行数据转换为字节,供计算机内部使用并行数据的器件使用。
在输出的串行数据流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验。
在输出数据流中加入启停标记,并从接收数据流中删除启停标记。
处理由键盘或鼠标发出的中断信号(键盘和鼠票也是串行设备)。
可以处理计算机与外部串行设备的同步管理问题。
有一些比较高档的UART还提供输入输出数据的缓冲区,现在比较新的UART是16550,它可以在计算机需要处理数据前在其缓冲区内存储16字节数据,而通常的UART是8250。
现在如果您购买一个内置的调制解调器,此调制解调器内部通常就会有16550 UART。
1.UART协议的工作特点1.1数据采样UART协议是实现设备之间低速数据通信的标准协议。
因发送时不需同时发送时钟,故此协议为异步。
UART链接典型为38400,9600波特。
如下图1,UART字符格式为1个起始位,5~8个数据位,1个地址位或奇偶位(可选),1个停止位。
由于接收器、发送器异步工作,无需联接接收和发送时钟。
接收器采取对输入数据流高度采样方式,通常采样为16,并根据采样值确定位值。
按惯例,使用16个采样值的中间三个值。
1.2 UART帧区分UART一参数MAX-IDL,用来设置空闲字符的多少。
一旦一字符在线上被接收,UART 控制器开始计数接收到的空闲字符。
若下一数据字符接收前,一MAX-IDL多个空闲字符被接收,则产生空闲时间,缓冲区被关闭。
顺次对CPU32+核心发出一中断请求,要求从缓冲区接收数据。
UART(中⽂版的数据⼿册)第⼗⼀章异步串⼝通信概述S3C2410的UART提供3个独⽴的异步串⾏通信端⼝,每个端⼝可以基于中断或者DMA进⾏操作。
换句话说,UART控制器可以在CPU和UART之间产⽣⼀个中断或者DMA请求来传输数据。
UART在系统时钟下运⾏可⽀持⾼达230.4K 的波特率,如果使⽤外部设备提供的UEXTCLK,UART的速度还可以更⾼。
每个UART通道各含有两个16位的接收和发送FIFO。
S3C2410的UART包括可编程的波特率,红外接收/发送,⼀个或两个停⽌位插⼊,5-8位数据宽度和奇偶校验。
每个UART包括⼀个波特率发⽣器、⼀个发送器、⼀个接收器和⼀个控制单元,如图11-1所⽰。
波特率发⽣器的输⼊可以是PCLK或者UEXTCLK。
发送器和接收器包含16位的FIFO和移位寄存器,数据被送⼊FIFO,然后被复制到发送移位寄存器准备发送,然后数据按位从发送数据引脚TxDn输出。
同时,接收数据从接收数据引脚RxDn按位移⼊接收移位寄存器,并复制到FIFO。
特性—RxD0, TxD0, RxD1, TxD1, RxD2, 和TxD2基于中断或者DMA操作—UART Ch 0, 1, 和 2 具有 IrDA 1.0 & 16 字节 FIFO—UART Ch 0 和 1 具有 nRTS0, nCTS0, nRTS1, 和 nCTS1—⽀持发⽣/接收握⼿图11-1 UART⽅框图串⼝操作下述部分描述了UART的⼀些操作,包括数据发送、数据接收、中断产⽣、波特率发⽣、loop-back模式、红外模式和⾃动流控制。
数据发送发送数据的帧结构是可编程的,它由1个起始位、5-8个数据位、1个可选的奇偶位和1-2个停⽌位组成,这些可以在线控制寄存器ULCONn中设定。
接收器可以产⽣⼀个断点条件——使串⾏输出保持1帧发送时间的逻辑0状态。
当前发送字被完全发送出去后,这个断点信号随后发送。
断点信号发送之后,继续发送数据到Tx FIFO(如果没有FIFO则发送到Tx保持寄存器)。
UART寄存器介绍UART(Universal Asynchronous Receiver/Transmitter)是一种串行通信协议,常用于各种微控制器和外围设备之间的通信。
UART寄存器是用来配置和控制UART模块的寄存器,包括数据传输、波特率、中断、状态等方面。
本文将从这几个方面详细介绍UART寄存器。
1.数据传输寄存器:数据传输寄存器用来存储和传输数据。
在发送数据时,将要发送的数据写入数据寄存器,发送完毕后,数据寄存器将被清空准备接收下一个数据。
在接收数据时,接收到的数据会存储在数据寄存器中,供读取或进一步处理。
2.波特率寄存器:波特率寄存器用来设置UART通信的波特率,它决定了数据传输的速率。
波特率寄存器通常是一个16位寄存器,低8位用来表示分频器的分频值,高8位用来表示分频器的倍频值。
通过设置不同的分频值和倍频值,可以实现不同的波特率。
具体的计算公式如下:波特率=时钟频率/(分频值*倍频值)3.中断寄存器:中断寄存器用来配置和控制UART模块的中断。
通过设置中断使能位和中断标志位,可以实现在特定事件发生时触发相应的中断处理程序。
常见的中断包括接收到数据中断、发送数据完成中断、数据溢出中断等。
4.状态寄存器:状态寄存器用来提供UART模块的状态信息。
常见的状态包括发送缓冲区为空、接收缓冲区不为空、接收缓冲区溢出、发送完成等。
通过读取状态寄存器的值,可以了解UART模块的当前状态,并进行相应的处理。
5.控制寄存器:控制寄存器用来配置和控制UART模块的行为。
它可以设置UART模块的工作方式、数据位数、停止位数、校验方式等。
通过写入控制寄存器的不同值,可以改变UART的工作模式,并对数据进行校验等处理。
6.波特率发生器寄存器:波特率发生器寄存器用来配置UART模块的波特率发生器。
波特率发生器根据设置的时钟频率和波特率,产生传输数据时所需要的时钟信号。
通过修改波特率发生器寄存器的值,可以调整UART模块的波特率。
UART 基础知识UART (Universal Asynchronous Receiver/Transmitter)通用异步收发器UART是用于控制计算机与串行设备的芯片。
有一点要注意的是,它提供了RS-232C数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了。
作为接口的一部分,UART还提供以下功能:将由计算机内部传送过来的并行数据转换为输出的串行数据流。
将计算机外部来的串行数据转换为字节,供计算机内部使用并行数据的器件使用。
在输出的串行数据流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验。
在输出数据流中加入启停标记,并从接收数据流中删除启停标记。
处理由键盘或鼠标发出的中断信号(键盘和鼠票也是串行设备)。
可以处理计算机与外部串行设备的同步管理问题。
有一些比较高档的UART还提供输入输出数据的缓冲区,现在比较新的UART是16550,它可以在计算机需要处理数据前在其缓冲区内存储16字节数据,而通常的UART是8250。
现在如果您购买一个内置的调制解调器,此调制解调器内部通常就会有16550 UART。
1.UART协议的工作特点1.1数据采样UART协议是实现设备之间低速数据通信的标准协议。
因发送时不需同时发送时钟,故此协议为异步。
UART链接典型为38400,9600波特。
如下图1,UART 字符格式为1个起始位,5~8个数据位,1个地址位或奇偶位(可选),1个停止位。
由于接收器、发送器异步工作,无需联接接收和发送时钟。
接收器采取对输入数据流高度采样方式,通常采样为16,并根据采样值确定位值。
按惯例,使用16个采样值的中间三个值。
1.2 UART帧区分UART一参数MAX-IDL,用来设置空闲字符的多少。
一旦一字符在线上被接收,UART控制器开始计数接收到的空闲字符。
若下一数据字符接收前,一MAX-IDL多个空闲字符被接收,则产生空闲时间,缓冲区被关闭。
关于UART的CTS/RTSRTS (request to send) 请求发送谈这个问题之前我们先介绍另一个概念,DCE(Data Communication Equipment数据通讯设备)速度。
它是指两个Modem之间即电话线之间的传输速度,我们所说的56K指的就是这个速度。
而DTE(Data Terminal Equipment数据终端设备)速度是指从本地计算机到Modem的传输速度,如果电话线传输速率(DCE速度)为56000bps,Modem在接收到数据后按V.42 bis协议解压缩56000×4=115200bps,然后以此速率传送给计算机,由此可见56K猫(使用V.42bis)的DTE 速度在理想状态下都应达到115200bps。
可用CTS/RTS或Xon/Xoff流量控制(Flow control)从上边的介绍我们已经了解到DTE与DCE速度之间存在很大差异,这样在数据的传送与接收过程当中很可能出现收方来不及接收的情况,这时就需要对发方进行控制,以免数据丢失,这个过程就是所谓的流量控制。
控制的方式有两种,Xon/Xoff和CTS/RTS。
前者由软件产生控制码,并将控制码加入到数据流中,Xoff表示停止发送,Xon表示继续发送,此种方法通常用于2400bps左右的低速猫。
CTS(clear to send)/RTS(request to send)则是通过计算机与Modem之间的信号线传送控制信号来实现流量控制的,即硬件方式。
请求发送信号(RTS)由计算机产生,通知Modem可以发送数据,清除发送信号(CTS)由Modem产生,通知计算机可以传送数据.由于硬件控制的反应速度要比软件快,所以多用于高速Modem。
在使用MNP,V.42以及传真时也应使用硬件方式。
CTS (Clear to send) 允许发送, 很多文章翻译成清除发送, 是不正确的. CTS 是对RTS 的应答.A向B发送RTS信号,表明A要向B发送若干数据,B收到RTS后,向所有基站发出CTS信号,表明已准备就绪,A可以发送CTS和RTS是串行通讯中流控制的两个管脚,本身成对出现。
串行通信编程相关的寄存器1. UART寄存器(通用异步收发器寄存器),UART是一种常用的串行通信协议,它使用一个寄存器来控制和配置串行通信的参数。
UART寄存器通常包括数据寄存器、状态寄存器、控制寄存器等。
数据寄存器用于存放待发送或接收的数据,状态寄存器用于表示当前的通信状态,控制寄存器用于配置通信的参数,如波特率、数据位数、停止位等。
2. SPI寄存器(串行外设接口寄存器),SPI是一种常用的串行通信协议,它使用一组寄存器来控制和配置串行通信的参数。
SPI寄存器通常包括控制寄存器、状态寄存器、数据寄存器等。
控制寄存器用于配置通信的参数,如时钟极性、时钟相位等,状态寄存器用于表示当前的通信状态,数据寄存器用于存放待发送或接收的数据。
3. I2C寄存器(串行外设接口寄存器),I2C是一种常用的串行通信协议,它使用一组寄存器来控制和配置串行通信的参数。
I2C寄存器通常包括控制寄存器、状态寄存器、数据寄存器等。
控制寄存器用于配置通信的参数,如时钟频率、地址模式等,状态寄存器用于表示当前的通信状态,数据寄存器用于存放待发送或接收的数据。
4. USART寄存器(通用同步异步收发器寄存器),USART是一种常用的串行通信协议,它结合了UART和SPI的特点,使用一组寄存器来控制和配置串行通信的参数。
USART寄存器通常包括数据寄存器、状态寄存器、控制寄存器等。
数据寄存器用于存放待发送或接收的数据,状态寄存器用于表示当前的通信状态,控制寄存器用于配置通信的参数,如波特率、数据位数、停止位等。
这些寄存器在串行通信编程中起着重要的作用,通过对这些寄存器的配置和读取,可以实现串行通信的各个功能和特性。
在编程中,我们需要根据具体的硬件和通信协议,对这些寄存器进行合适的设置,以实现可靠和高效的串行通信。
UART通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种异步收发传输器,是电脑硬件的一部分。
将资料由串行通信与并行通信间作传输转换,作为并行输入成为串行输出的芯片,通常集成与其他通讯接口的连结上UART传输结构定义:UART是一种通用串行数据总线,用于异步通信。
该总线双向通信,可以实现全双工传输和接收。
在嵌入式设计中,UART用来主机与辅助设备通信,如汽车音响与外接AP之间的通信,与PC机通信包括与监控调试器和其它器件,如EEPROM通信。
功能:计算机内部采用并行数据,不能直接把数据发到Modem,必须经过UART整理才能进行异步传输,其过程为:CPU先把准备写入串行设备的数据放到UART的寄存器(临时内存块)中,再通过FIFO(First Input First Output,先入先出队列)传送到串行设备,若是没有FIFO,信息将变得杂乱无章,不可能传送到Modem。
它是用于控制计算机与串行设备的芯片。
有一点要注意的是,它提供了RS-232C数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了。
作为接口的一部分,UART还提供以下功能:将由计算机内部传送过来的并行数据转换为输出的串行数据流。
将计算机外部来的串行数据转换为字节,供计算机内部并行数据的器件使用。
在输出的串行数据流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验。
在输出数据流中加入启停标记,并从接收数据流中删除启停标记。
处理由键盘或鼠标发出的中断信号(键盘和鼠标也是串行设备)。
可以处理计算机与外部串行设备的同步管理问题。
有一些比较高档的UART还提供输入输出数据的缓冲区,比较新的UART是16550,它可以在计算机需要处理数据前在其缓冲区内存储16字节数据,而通常的UART是8250。
如果您购买一个内置的调制解调器,此调制解调器内部通常就会有16550 UART。
SCON0:UART0 控制寄存器R/W R/W R/W R/W R/W R/W R/W R/W 复位值SM00/FE0 SM10/RXOV0 SM20/TXCOL0 REN0 TB80 RB80 TI0 RI0 00000000位7 位6 位5 位4 位3 位2 位1 位0(可位寻址)SFR地址:0x98位7-6:这些位的功能由PCON 中的SSTAT0 位决定。
如果SSTAT0 为逻辑‘1’,这些位是UART0 的状态指示位,见20.3 节。
如果SSTAT0 为逻辑‘0’,这些位选择串行口的工作方式。
SM00-SM10:串行口工作方式SM00 SM10 方式0 0 方式0:同步方式0 1 方式1:8 位UART,可变波特率1 0 方式2:9 位UART,固定波特率1 1 方式3:9 位UART,可变波特率位5:SM20:多处理器通信允许如果SSTAT0 为逻辑‘1’,该位是UART0 的状态指示位,见20.3 节。
如果SSTAT0 为逻辑‘0’,该位的功能取决于串行口的工作方式。
方式0:无作用。
方式1:检查有效停止位0:停止位的逻辑电平被忽略。
1:只有当停止位为逻辑电平1 时RI0 激活。
方式2 和方式3:多机通信允许0:第九位的逻辑电平被忽略。
1:只有当第九位为逻辑1 并且接收到的地址与UART0 地址或广播地址匹配时RI0 才被置位并产生中断。
位4:REN0:接收允许该位允许/禁止UART0 接收。
0:UART0 接收禁止1:UART0 接收允许位3:TB80:第九发送位该位的逻辑电平被赋值给方式2 和3 的第九发送位。
在方式0 和1 中未用。
跟据需要用软件置位或清0。
位2:RB80:第九接收位该位被赋值为方式2 和3 中第九接收位的逻辑电平。
在方式1,如果SM20 为逻辑0,则RB80 被赋值为所接收到的停止位的逻辑电平。
RB80 在方式0 中未用。
位1:TI0:发送中断标志当UART0 发送完一个字节数据时(方式0 时是在发送完第8 位后,其它方式在停止位的开始)该位被硬件置1。
UART寄存器介绍UART(通用异步收发器)是一种常用的串行通信接口,可以实现计算机与外部设备之间的数据传输。
在UART的工作过程中,寄存器是起着重要作用的,它们用于控制和管理数据的收发、存储和传输。
本文将介绍常用的UART寄存器,并详细说明它们的功能和用途。
1.UART状态寄存器(USR):UART状态寄存器用于存储UART当前的状态信息,包括数据收发状态、错误标志等。
常见的状态标志位包括接收缓冲区满(RXF)标志、发送缓冲区空(TXE)标志、奇偶校验错误(PERR)标志、帧错误(FERR)标志等。
通过读取该寄存器的状态位,可以实时监测UART的状态。
2.数据寄存器(DR):数据寄存器用于存储UART接收和发送的数据。
当UART接收到数据时,数据将存储在该寄存器中;当UART发送数据时,数据将从该寄存器中传输出去。
通过读取和写入该寄存器,可以实现数据的收发操作。
3.波特率寄存器(BAUD):波特率寄存器用于设置UART的数据传输速率,即波特率。
波特率是指UART每秒钟发送或接收的数据位数。
通过修改该寄存器的值,可以调整UART的波特率,以适应不同的数据传输需求。
4.控制寄存器(CR):控制寄存器用于设置和控制UART的工作模式和功能。
常见的控制位包括发送使能(TXE)位、接收使能(RXE)位、奇偶校验使能(PAREN)位、奇偶校验选择(PSEL)位等。
通过设置和清除这些位的值,可以实现UART的各种功能配置。
5.时钟寄存器(CLK):时钟寄存器用于设置UART的时钟源和时钟分频系数,从而控制UART的时钟频率。
通过调整该寄存器的值,可以改变UART时钟的频率,以满足不同的通信需求。
6.中断使能寄存器(IER):中断使能寄存器用于设置UART的中断功能。
通过设置该寄存器的中断使能位,可以开启或关闭UART的中断功能。
常见的中断使能位包括接收中断使能(RXIE)位、发送中断使能(TXIE)位、错误中断使能(ERIE)位等。
UART寄存器介绍
UARTn_BR: UART波特率寄存器
UARTn_BR[15:0]: 由定时器的装入寄存器定时装入相应内容。
UARTn_CR.Run=0可以装入直到UARTn_CR.Run=1才写入无效
UARTn_TxBUFR:UART传输寄存器
UARTn_TxBUFR[8]: 传输数据第八位或者奇偶校验位或者唤醒位或者未定义的位有相应操作模式决定
1.如果是001模式则此位写0
2.如果是8+校验111模式则此位由UART自己处理写入软件操作无效
UARTn_TxBUFR[7]: 传输数据第七位或者奇偶校验位
1.如果是7+校验011模式同样此位由UART自己处理写入软件操作无效
UARTn_TxBUFR[6:0]:数据位
UARTn_RxBuffer: UART接收寄存器
RX[9]:桢错误标志1表示此桢有问题
RX[8]:接收数据位8,或者奇偶校验位或者唤醒位
RX[7]:接收数据位7,或者奇偶校验位
RX[6:0]:数据位
UARTn_CR:UART控制寄存器
CR[15-11]保留都是0
CR[10]FifoEnble队列模式0关闭表示TxFIFO认为是包含了16位数据才是满栈
1是开启表示TxFIFO认为当前就是才是满栈直接置TxFULL位
CR[9]SCENBLE 智能卡关闭还是开启不使用则置0
CR[8]RxEnble 接收功能关闭开启由下降沿来触发RXD脚初始化
CR[7]Run=0波特率无用=1则有用
CR[6]LoopBack=0标准的接收和发送模式=1是特殊模式。
此位只由UART无效被改变
CR[5]ParityOdd选择奇偶校验=0则为偶校验=1为奇校验CR[43]StopBits 00 0.5停止位01是1个停止位10是1.5个11是2个
CR[2:0] MODE 5种模式
UARTn_IER UART的中断允许寄存器
15-9保留位为0
8 RxHalfFullIE 接收存储器超过8位则置
7 TimeoutIdleIE 接收队列无数据切超时记数为0则置
6 TimeNotoutIdleIE 接收队列有数据切超时记数为0则置5..1
UART_SR UART状态寄存器
9 TXFULL 发送寄存器包含16个位
8 RxHalfFull 接收到超过8个位
7 TimeoutIdle RxFIFO为空并且超时
6 TimeNotoutIdle RxFIFO不为空并且超时
5 OverrunError数据正在接收并且接收缓冲满
4 FramError 当接收队列包含一个接收贞错误标志
3 ParityError 当接收队列里包含一个检验错误
2 TxHalfEmpty 传输队列一半是空
1 TxEmpty 传输队列为空
UART_GTR UART的保护发生时间
7-0 八位时间值给用户来定义程序传输为空的探测时钟延迟UART_TOR UART超时机制
7-0超时装载计数器
UART_TxRSTR 传输寄存器清除寄存器
UART_RxRSTR 接收寄存器清除寄存器
只写写入后将会清空相应的接收或者传输寄存器RxFIFO or
TxFIFO。