再上一篇:5.7 串行口
上一篇:5.7.2 I2C 总线接口单元
主页
下一篇:5.7.4 高速红外通讯接口 FICP
再下一篇:5.7.5 USB 器件控制器
文章列表

5.7.3 UART

嵌入式系统(修订本)——Intel XScale 结构与开发 陈章龙 著

PXA250/210 应用处理机有三个通用异步接收/发送器(UART):全功能 UART

(FFUART)、兰牙 UART(BEUART)和标准 UART(STURAT)。它们的编程方法相 同。
一、特性

UART 具有以下特性

z 与16550 功能兼容

z 可在串行数据中加入或删去标准异步通讯位(启始、停止和奇偶位)

z 单独控制的发送、接收、线路状态和数据设备中断

z 可程控波特率发生器,允许用内部时钟的 1 至(216-1)分频产生内部的 16 时 钟

z Modem 控制脚,允许通过软件控制数据流。每个 UART 有不同的 Modem 控 制能力

z 可程控串行接口:

—5、6、7 或8 位字符
—偶、奇和无奇偶校验
—1、1.5 或2 位停止位产生
—对BEUART 最高波特率为921Kps,其他UART 为230Kps

z 64 字节发送FIFO

z 64 字节接收FIFO

z 完全的状态报告能力

z 可产生和检测线路中止

z 内部诊断功能,包括:

—断开通信线的反馈控制
—中止、奇偶和帧错误模拟

z 优先级中断系统控制

z 发送和接收分开的DMA 请求

z 低速红外异步接口,符合IrDA 标准

二、总介
每个串行口包含一个 UART 和一个符合 IrDA 串行红外(SIR)物理连接标准的低 速红外发送编码器和接收解码器。
每个UART 执行串行/并行转换。处理机可读出UART 的各种状态。 每个串行口可工作于 FIFO 方式。在 FIFO 方式,一个 64 字节的发送 FIFO 存放来
自处理机的数据,直到发送至串行线上。一个64 字节接收FIFO 存放串行线来的数据, 直到被处理机读出。在非FIFO 方式,不通过发送和接收FIFO。

每个 UART 包括一个可程控波特率发生器,可由输入时钟分频 1 至(216-1)产生

16 时钟来驱动内部发送器和接收器。

1. 功能UART

FFUART 支持Modem 控制功能。它的最高波特率为230.4Kbs。

2. 蓝牙UART

BTUART 为一个高速UART,支持最高为921.6Kps,可连接至兰牙模块。除了RXD

和TXD 外,它仅有nCTS 和nRTS Modem 控制脚。

3. 标准UART

STUART 不支持Modem 控制功能。它的最高波特率为230.4Kps。

4. 16550 兼容性

应用处理机的 UART 与 16550 工业标准芯片在功能上兼容。除此之外,它们还有 以下特性:

z 发送和接收DMA

z 低速红外异步接口

z 非归零(NRZ)编码/解码功能

三、引脚

UART 模块有以下引脚,它们通过系统集成单元连接至GPIO。

1. RXD:串行数据输入脚。

2. TXD:串行数据输出脚

3. nCTS:清零至发送输入脚。低电平指示Modem 或数据设备准备交换新数据。

4. nDSR:数据设备准备好输入脚。低电平指示Modem 或数据设备准备与UART

建立通讯连接。

5. nDCD:数据载频检测输入脚。低电平指示 Modem 或数据设备已检测到数据 载频。

6. nRI:振铃检测输入脚。低电平指示Modem 或数据设备已收到电话振铃信号。

7. nDTR:数据终端准备好输出脚。低电平向 Modem 或数据设备指出 UART 已 准备建立通讯连接。

8. nRTS:请求发送输出脚。低电平向Modem 或数据设备指出UART 准备交换新 数据。

四、寄存器
每个UART 有13 个寄存器:12 个用于UART,一个用于低速红外设置。寄存器为

32 位,但仅使用低 8 位。12 个 UART 寄存器共享 I/O 地址空间的 9 个地址单元,其中

6 个寄存器通过FCR 寄存器的DLAB 位来共享3 个地址。

表 5-28 给出了寄存器和它们与基地址的偏移地址。FFUART 的基地址为

0X4010000,BTUART 的基地址为0X40000000,STUART 的基地址为0X40700000。 表5-28 UART 寄存器地址

UART 寄存器地址

(基址+偏移量)

DLAD Bit 值

寄存器存取方式

基址

0

接收缓冲(只读)

基址0

0

发送缓冲(只写)

基址+ 0x04

0

中断允许(读/写)

基址+ 0x08

X

中断标识(只读)

基址+ 0x08

X

FIFO 控制(只写)

基址+ 0x0C

X

行控制(读/写)

基址+ 0x10

X

Modem 控制(读/写)

基址+ 0x14

X

行状态(只读)

基址+ 0x18

X

Modem 状态(只读)

基址+ 0x1C

X

便笺本

基址+ 0x20

X

红外线选择(读/写)

基址

1

Divisor Latch Low(读/写)

基址+ 0x04

1

Divisor Latch High(读/写)

1. 接收缓冲寄存器 RBR

在非FIFO 方式,RBR 存放UART 接收移位寄存器收到的字符。读出RBR 清 除该寄存器,并清零LSR 的DR 位。
在FIFO 方式,RBR 值存FIFO 的最前面的数据字节

2. 发送保持寄存器 THR

在非FIFO 方式,THR 存放下一次要发送的数据字节。如发送移位寄存器TSR
为空时,FIFO 底部数据装入TSR。

3. 可程控波特率发生器(DLH 和 DLL)

每个UART 有一个可程控波特率发生器,它从14.7856MHz 固定输入时钟分频

1 至(216-1)。对 FFUART 和 STUART,分频因子为 4 至(216-1)。波特率发生器 输出频率为16 倍波特率。两个8 位寄存器存放16 位的分频值。在初始化时应装入 这两个分频寄存器。如它们装入为 0,则停止 16 时钟。每个分频寄存器以字形式 写入(仅低8 位有效),它们的复位值为0X0002。

14.7856MHz

UART 波特率=

16×分频值

分频寄存器低位为DLL7~0,高位为DLH7~0,它们均在DLAB=1 时可访问。

4. 中断允许寄存器 IER


位31~8:保留
位7:DMAE——允许DMA 请求。

0=禁止DMA 请求。

1=允许DMA 请求。

位6:UUE——UART 单元允许。

0=禁止单元。

1=允许单元。

位5:NRZE——NRZ 编码允许。NRZ 编码仅用于URAT 方式,不用于红外方式。 如允许低速红外方式,必须禁止NRZ 编码。

0=禁止NRZ 编码。

1=允许NRZ 编码。

位4:RTOIE——字符超时指示中断允许。

0=禁止字符超时指示中断。

1=允许字符超时指示中断。

位3:MIE——Modem 中断允许。

0=禁止Modem 状态中断。

1=允许Modem 状态中断。

位2:RLSE——接收线状态中断允许。

0=禁止接收线状态中断允许。

1=允许接收线状态中断允许。

位1:TIE——发送数据请求中断允许。

0=禁止发送FIFO 数据请求中断。

1=允许发送FIFO 数据请求中断。

位0:RAVIE——有接收数据中断允许。

0=禁止有接收数据(达到触发阀值)中断。

1=允许有接收数据(达到触发阀值)中断。

5. 中断标志寄存器 IIR

UART 的中断分为四个优先级,如表5-29,IIR 有效已发生的最高优先级中断。 表 5-29 UART 中断条件

优先级

中断源

1(最高)

接收行状态:一个或多个错误位发生

2

接收数据可用.在 FIFO 方式,trigger 级别已满足。在非 FIFO

方式,RBR 有数据。

2

发生字符超时。仅在FIFO 方式下发生。当数据在接收FIFO,

但在一段时间内没有数据发出

3

传输器请求数据。在FIFO 方式,传送FIFO 至少一半是空的。

在非FIFO 方式,THR 已经被发送。

4(最低)

Modem 状态。一个或多个modem 输入信号已经改变状态。


位31~8:保留
位7、6:FIFOS1、0:FIFO 方式允许状态。

00=选择非FIFO 方式。

01、10=保留。

11=选择FIFO 方式(FCR 的TRFIFOE=1)。 位5、4:保留。

位3:TOD——字符超时标志。

0=没有字符超时中断。

1=已发生字符超时中断(仅FIFO 方式)。 位2、1:IID2、1:——中断源编码。

00=Modem 状态(CTS、DSR、RI、DCD Modem 信号改变状态)。

01=发送FIFO 请求数据。

10=有接收数据。

11=接收出错(下溢出、奇偶、帧、中止、FIFO 错)。 位0:IP——有中断。

0=有中断(低有效)。

1=无中断。

6. FIFO 控制寄存器 FCR

FCR 只可写入,它与 IIR(只可读出)位于同一地址。FCR 允许/禁止发送/接 收FIFO,清0 发送/接收FIFO,设置接收FIFO 触发阀值。


位31~8:保留。
位 7、6:ITL——中断触发阀值。在接受 FIFO 的数据数等于中断触发阀值且允许 有数据中断时可产生中断。在到达触发阀值时也产生接收DMA 请求。

00=FIFO 中有一个或更多数据,产生中断(不能用DMA 方式)。

01=FIFO 中有8 个或更多数据,产生中断,并产生DMA 请求。

10=FIFO 中有16 个或更多数据,产生中断,并产生DMA 请求。

11=FIFO 中有32 个或更多数据,产生中断,并产生DMA 请求。 位5~3:保留。

位 2:RESETTF——复位发送 FIFO。置位 RESETTF,清除发送 FIFO 中的所有字 节;置位LSR 的TDRQ 位,如置位TIE,IIR 显示发送请求数据中断;不清除发送 移位寄存器。
位1:RESETRF——复位接收FIFO。置位RESETRF,清除接收FIFO 中的所有字 节;ISR 中的出错标志仍保持原来状态;不清除接收移位寄存器;如IIR 是为有接 收数据则清0 它。
位0:TRFIFOE——发送和接收FIFO 允许。

0=禁止FIFO(非FIFO 方式)。

1=允许FIFO。

7. 线路控制寄存器 LCR


位31~8:保留。
位7:DLAB——分频寄存器访问位。

0=访问发送保持寄存器(THR),接收缓冲寄存器(RBR)和IER。

1=访问分频存寄存器(DLL 和DLH)。 位6:SB——设置中止。

0=不影响TXD 输出。

1=强制TXD 输出为0。

位5:STKYP——强制奇偶(仅在PEN=1 时有作用)。

0=不影响奇偶位。

1=强制奇偶位为EPS 的反。

位4:EPS——偶校选择(仅在PEN=1 有作用)。

0=发送和接收奇校验。

1=发送和接收偶校验。

位3:PEN——奇偶校验允许。

0=无奇偶校验。

1=奇偶校验。

位2:STB——停止位。

0=1 位停止位。

1=2 位停止位,对5 位字符为1 1/2 位。 位1、0:WLS1、0——字符长度选择。

00=5 位字符。

01=6 位字符。

10=7 位字符。

11=8 位字符。

8. 线路状态寄存器 LSR


位31~8:保留。
位 7:FIFOE——FIFO 出错状态。在非 FIFO 方式,它等于 0。在 FIFO 方式,当 FIFO 中任何字符有至少一种错误时,置位 FIFO。处理机读出 LSR 不清除它,仅 当从FIFO 中读走所有出错字符后才清除它。如允许DMA 请求,FIFOE 为1 时产 生出错中断,不产生接收DMA 请求。在读出FIFO 清除FIFOE 后,自动重新允许

DMA 请求。如不允许DMA 请求,则FIFOE 为1 不产生出错中断。 位6:IEMT——发送器为空。

0=发送移位寄存器、THR 或发送FIFO 中有数据。

1=发送器中所有数据均已移出。

位5:TDRQ——发送数据请求,指出UART 准备接收新字符去发送。可产生中断 或 DMA 请求。在非 FIFO 方式,TDRQ 在字符从 THR 移入 TSR 时置位;在装入 THR 时清 0。在 FIFO 方式,在发送 FIFO 有一半或更少数据时置位 RESETTF 位 时置位 TDRQ。在 FIFO 有多于一半数据时清 0。如多于 64 个字符写入 FIFO,则 丢失多余字符。
位 4:BI——中止中断。在 RXD 为 0 超过一个字符发送时间时置位。在处理机读 出LSR 时清0BI。在FIFO 方式,BI 指出FIFO 前面的字符的中止条件。
位3:FE——帧出错。FE 指出接收的字符无正确的停止位(应为1)。如LCR 设置 为两位停止位,接收器不检验第二个停止位。处理机读出LSR 时清0 FE。在FIFO 方式,FE 指出FIFO 前面的字符的帧出错。
位 2:PE——奇偶校验错。它指出接收的字符发生奇偶校验错。处理机读出 LSR
时清0 PE。在FIFO 方式,PE 指出FIFO 前面的字符的奇偶错。
位1:OE——溢出错。在非FIFO 方式,指出在接收到下一个字符时,处理机没读 走接收缓冲寄存器的数据。丢失新字符。在 FIFO 方式,OE 指出所有 FIFO 的 64 字节均满,丢失新接收的字节。在处理机读出LSR 时清0 OE。
位 0:DR——数据准备好。在接收到完整的输入字符且传送至 RBR 或 FIFO 时置 位。在非FIFO 方式,读出RBR 时清0 DR。在FIFO 方式,FIFO 为空或复位时清

0 DR。

9. Modem 控制寄存器 MCR


位31~5:保留。
位4:LOOP:反馈方式。置位LOOP,置TXD 为高电平,接收输入与RXD 断开。 发送移位寄存器输出反馈至接收移位寄存器输入。四个Modem 控制输入(nRSR、 nCTS、nRI、nDCD)与引脚断开,并分别与MCR 的低四位(DTR、RIS、OUT1、 OUT2)相连。

0=正常UART 操作。

1=反馈方式UART 操作。

位3:OUT2——OUT2 信号控制。OUT2 把UART 中断连接至中断控制器。

0=允许UART 中断。

1=禁止UART 中断。

位2:OUT1——测试位,它仅用于反馈方式。 位1:RTS——请求发送。

0=nRTS 脚为1。

1=nRTS 脚为0。

位0:DTR——数据终端准备好。

0=nDTR 脚为1。

1=nDTR 脚为0。

10. Modem 状态寄存器 MSR


位31~8:保留。
位7:PCD——数据载波检测。

0=nDCD 脚为1。

1=nDCD 脚为0。 位6:——振铃指示。

0=nRI 脚为1。

1=nRI 脚为0。

位5:DSR——数据终端准备好。

0=nRSR 脚为1。

1=nRSR 脚为0。

位4:CTS——清除至发送。

0=nCTS 脚为1。

1=nCTS 脚为0。

位3:DDCD——数据载波跳变检测。

0=自从上次读出MSR 后nDCD 脚没发生改变。

1=自从上次读出MSR 后nDCD 脚发生改变。 位2:TERI——振铃指示后沿。

0=自从上次读出MSR 后nRI 脚没从0 变为1。

1==自从上次读出MSR 后nRI 脚从0 变为1。 位1:DDSR——数据终端准备好跳变检测。

0==自从上次读出MSR 后nDSR 脚没发生改变。

1=自从上次读出MSR 后nDSR 脚发生改变。 位0:DCTS——清除至发送跳变检测。

0==自从上次读出MSR 后nCTS 脚没发生改变。

1=自从上次读出MSR 后nCTS 脚发生改变。

11. 便笺寄存器 SPR

SPR 位8 位寄存器(位7~0),可由用户任意访问,它与UART 操作无关。

五、低速红外异步通讯接口
低速红外(SIR)接口用于 STUART 以支持使用红外的双向无线通讯。SIR 提供发送
编码器和接收解码器;支持IrDAV1.1 的物理链接。

SIR 接口不包含实际的IR LED 驱动器和接收放大器。接至SIR 的引脚仅为CMOS 电平。SIR 支持双向通讯,但不可能实现全双工通讯,因发射 LED 会反射至接收器。 SIR 接口支持最高115.2Kbs。波特率分频应为8 或以上。

红外选择寄存器ISR 控制IrDA 的功能。

位31~5:保留。
位4:RXPL——接收数据极性。

0=SIR 解码器把正脉冲译为0。

1=SIR 解码器把负脉冲译为0。 位3:TXPL——发送数据极性。

0=SIR 在数据位为0 产生正脉冲。

1=SIR 在数据位为0 产生负脉冲。 位2:XMODE——发送脉冲宽度选择。

0=发送脉冲宽度为3/16 位时间宽。

1=发送脉冲宽度为1.6us。

位1:RCVEIR——接收器SIR 允许。

0=接收器工作于UART 方式。

1=接收器工作于IrDA 方式。

位0:XMITIR——发送器SIR 允许。

0=发送器工作于UART 方式。

1=发送器工作于IrDA 方式。