当前位置:首页 >> 信息与通信 >>

UART、串口


Uart 模型和协议 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 +核心发出一中断请求,要求从缓冲区接收数据。因此,MA X-IDL 给 UART 模式提供一区分帧的便利方法。 空闲字符按以下公式计算其位数: 1(起始)+数据长度(5, 6, 7,8)+1(若奇偶校验被使用)+停止位(1)。例如,1 个(起始), 8 位数据,无校验,1 个停止位,则空闲字符 MAX-IDL 为 1 0 位。 1.3 UART 地址识别 多站系统中,网络上可能会有两个以上的站,每个站有一 特定的地址。图 2 为此种结构的两个示例。由许多字符构成 的帧可被广播,其第一字符做为目的地址。为实现此功能,

UART 帧被扩展一位,以区别地址字符和正常数据字符。 UART 可被设置为操作于一多站环境,此环境下,支持以 下两种模式: 自动多站模式 当地址于两个预置值之一相匹配时,UART 控制器自动检查到来地址字符,接收随后的数据。 非自动多站模式 UART 控制器接收所有数据。一地址字 符总被写入一新缓冲区。 综上所述, UART 协议采取一种通过数据采样来确定位值 的机理,具有简单准确的定帧模式,而且广泛用于多站系统 中,具有自动多站和非自动多站两种模式,来区分地址和数 据。 2.几种重要寄存器 几种重要寄存器 几种 在嵌入式开发中,对寄存器的理解和正确配置至关重要。 对 MPC860 的 UART 协议,有几个重要寄存器,它们是:管 足配置寄存器、波特率配置寄存器、通信处理命令寄存器、 SCC 通用模式寄存器、发送和接收缓冲区描述器、UART 的 特定参数、 SCC 协议专用模式寄存器、 SCC 协议事件寄存器、 UART 屏蔽寄存器。 管足配置寄存器一般是针对收、发两根管足,有开漏寄存 器、数据寄存器、数据方向寄存器,它们可被设置为具有串 行信道输出的能力和被设置为输入输出口。波特率配置寄存 器负责把波特率指向所用的串口和配置波特率大小。通信处

理命令寄存器主要用于判断命令的发出是否和阻止传送。 SC C 通用模式寄存器主要用于协议的选择和传输格式的配置。 发送和接收缓冲区描述器主要用于收发数据和判断接收的 是地址还是数据,数据的错误情况等。UART 的特定参数用 来部分初始化 UART。SCC 协议专用模式寄存器主要用于设 置 UART 处于自动多站和非自动多站模式。 事件寄存器主要 用于判断是收中断还是发中断。屏蔽寄存器主要用于收、发 使能。 因此,对 UART 协议来说,上面几种寄存器是很重要的, 它们主要完成波特率配置,协议的选择,收发判断处理等。 UART & RS232 & COM UART 是通用异步收发器 (异步串行通信口) 的英文缩写, 它包括了 RS232、RS499、RS423、RS422 和 RS485 等接口 标准规范和总线标准规范, UART 是异步串行通信口的总 即 称。 而 RS232、RS499、RS423、RS422 和 RS485 等,是对应 各种异步串行通信口的接口标准和总线标准,它规定了通信 口的电气特性、传输速率、连接特性和接口的机械特性等内 容。实际上是属于通信网络中的物理层(最底层)的概念, 与通信协议没有直接关系。而通信协议,是属于通信网络中 的数据链路层(上一层)的概念。 COM 口是 PC (个人计算机) 异步串行通信口的简写。 上,

由于历史原因,IBM 的 PC 外部接口配置为 RS232,成为实 际上的 PC 界默认标准。所以,现在 PC 机的 COM 口均为 R S232。

UART(Universal Asynchronous Receiver/Transmitter) 即通用异步收发传输器 通用异步收发传输器,工作于数据链路层。包含了 RS-2 通用异步收发传输器 32、RS-422、RS-485 串口通信和红外(IrDA) 等等。UAR T 协议作为一种低速通信协议,广泛应用于通信领域等各种 场合。UART 基本可分为并口通信及串口通信两种。

异步串口通信协议作为 UART 的一种,工作原理是将 异步串口通信协议 传输数据的每个字符一位接一位地传输。图一给出了其工作 模式:

图 一 其中各位的意义如下: 起始位:先发出一个逻辑”0”的信号,表示传输字符的开 起始位 始。 资料位:紧接着起始位之后。资料位的个数可以是 4、5、 资料位

6、7、8 等,构成一个字符。通常采用 ASCII 码。从最低位 开始传送,靠时钟定位。 奇偶校验位:资料位加上这一位后,使得“1”的位数应为 奇偶校验位 偶数(偶校验)或奇数(奇校验),以此来校验资料传送的正确 性。 停止位:它是一个字符数据的结束标志。可以是 1 位、1. 停止位 5 位、2 位的高电平。 空闲位:处于逻辑“1”状态,表示当前线路上没有资料传 空闲位 送。 波特率:是衡量资料传送速率的指针。表示每秒钟传送的 波特率 二进制位数。例如资料传送速率为 120 字符/秒,而每一个字 符为 10 位,则其传送的波特率为 10×120=1200 字符/秒=1 200 波特。 在嵌入式系统或者计算机中,并非直接对串口直接进 行, 而是通过 SCI (串行通讯接口) 模块对其进行控制。 (注: “SCI”首先由 Motorola 微串口微控制器而得名,SCI 另一种 说法是“UART 控制器”)常用的许多芯片中都包含了 SCI , 例如 ARM 的 S3C2410X 芯片内嵌了 3 个串行接口控制器, 而 Nios 等软核芯片则可以用选用 UART(RS232) 的 IP 对 U ART 进行控制。 机则常用 16650 UART,16750 UART 等 PC 控制串口。

如果实现一个软件 UART 时, UART 检查端口管脚的串行 在 活动时,需要占用大量时间,让应用程序停滞,这会使得软 件 UART 没有意义。好在情况并非如此,我们来看看标准的 10 位异步串行协议(包含一个起始位,一个停止位和 8 个数 据位)收发一个字符时的情况(如图 1 所示)。

图 1:标准的 10 位异步串行协议收发字符时的时序图。
在启动一次发送或接收操作之后, 串行 UART(不论是软件还 是硬件形式的 UART)并不需要连续监控 I/O 线。在发送一个 字符时,每个位周期,UART 只需驱动一次发送信号线的状 态,从起始位到 8 个数据位直到结束位依次设置每个位的电

平。在接收一个字符时,UART 在第一个下降沿开始工作, 之后只需在每个位时隙的中央对接收线上的信号状态进行 一次采样。 我们可以用一对状态机来表征软件 UART 的行为, 一个状态 机用于发送字符,另一个用于接收字符。对一个全双工的 U ART 而言,这两个状态机是并行运行的,需要两个独立的定 时器中断。这两个状态机都有主动和被动两种模式。发送状 态机在收到一个需发送的字符时跳出空闲状态,在结束位发 送之后回到空闲状态。接收状态机在检测到接收线上的一个 下降沿时跳出空闲状态。在检测到这个初始的低电平状态之 后(该状态指示起始位已经开始),开始对位时隙进行递减计 数,同时按要求采样信号线上的每个信号位,包括停止位。 为了避免不必要地占用主应用过多的时间,UART 状态机应 该由一些周期性的基于定时器的中断来激活。接收线上初始 下降沿的检测需要利用一个边沿触发的外部中断单独处理。 如果一个状态机的定时器被设置为每个比特周期发出一个 中断请求,那么该状态机在每次中断被触发时能够执行任何 需要的操作(而且如果需要,还能进入到下一个状态)。用于 实现状态机的代码应尽可能优化, 因为只要软件 UART 处于 活动状态,这些代码就会在后台连续运行。


相关文章:
UART串口函数定义头文件
UART串口函数定义头文件_计算机软件及应用_IT/计算机_专业资料。UART 串口函数定义头文件 #ifndef _UART_REGISTERS #define _UART_REGISTERS /*UART 串行接口端口...
STM32 Uart串口中断响应、发送接收详细程序
STM32 Uart串口中断响应、发送接收详细程序_工程科技_专业资料。STM32 Uart串口中断响应、发送接收详细程序 程序实现功能:可以直接接收 USART1 的数据,并通过串口调试...
UART串口通信实验报告
UART串口通信实验报告_信息与通信_工程科技_专业资料。UART串口通信实验报告 现代电路与系统实验报告 实验四学院:研究生院 一、 实验目的及要求 UART 串口通信姓名:...
UART串行接口
UART、RS232、I2C、SPI 他们的区别和联系 UART 是指串口通信的芯片,串口就是串行通信的接口(区别于并口 因为数 据是按 bit 串起来传输的) 一般在主机上都有的...
关于UART串口数据传输乱码问题
本人最近在用 STM8 进行串口传输的时候遇到一个问题: UART 串口传输乱码, 导致的问题分为以下几种情况提供参考: 1.波特率等设置不正确:如板子上的波特率,停止位...
UART串口数据接收器 课程设计报告_图文
EDA 课程设计 课程设计报告课 程题目院系年级班级 学生姓名 指导教师 设计时间 2010.12 3班 EDA 技术与应用 UART 串口数据接收器物理与电子工程学院 专业学号 ...
串口UART3实验
串口UART3实验_工学_高等教育_教育专区。嵌入式串口UART3实验指导书 串口UART3 实验 1. 实验目的 1) 2) 3) 4) 熟悉 Linux 开发环境。 掌握 S5PV210 内部...
实验3 UART串口实验
实验3.1 串口通信应用实验 1、实验目的 掌握 ARM 中串行口通信原理 学习编程实现 S3C2410A 的UART 通信 2、实验内容 实现查寻方式串口的收发功能,接收来自串口的...
UART串口通信设计实例
UART串口通信设计实例_电子/电路_工程科技_专业资料。很实用,大家可以验证一下~应该有帮助 2.5 UART 串口通信设计实例(1) 接下来用刚才采用的方法设计一个典型实例...
串口
UART0 串口编程系列(一)分类: 嵌入式开发 2011-01-17 13:56 12118 人阅读 评论(10) 收藏 举报 编程 bufferdll 数据结构工作 串口编程(UART0) ---Author W...
更多相关标签: