U
A
R
T
21
第 21 章 UART
目录
本章包括下列主题:
21.1 简介 ............................................................................................................................ 21-2
21.2 控制寄存器 ................................................................................................................. 21-3
21.3 UART 波特率发生器 ................................................................................................. 21-13
21.4 UART 配置 ............................................................................................................... 21-17
21.5 UART 发送器............................................................................................................ 21-18
21.6 UART 接收器............................................................................................................ 21-21
21.7 使用 UART 进行 9 位通信......................................................................................... 21-24
21.8 接收间隔字符序列 .................................................................................................... 21-26
21.9 初始化 ...................................................................................................................... 21-26
21.10 UART 的其他特性 .................................................................................................... 21-27
21.11 UxCTS 和 UxRTS 控制引脚的操作 .......................................................................... 21-29
21.12 红外支持................................................................................................................... 21-31
21.13 中断 .......................................................................................................................... 21-34
21.14 I/O 引脚控制 ............................................................................................................. 21-34
21.15 节能和调试模式下的 UART 操作 .............................................................................. 21-35
21.16 各种复位的影响 ........................................................................................................ 21-37
21.17
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
技巧................................................................................................................... 21-37
21.18 相关应用
笔记
哲学笔记pdf明清笔记pdf政法笔记下载课堂笔记下载生物化学笔记PDF
........................................................................................................... 21-38
21.19 版本历史................................................................................................................... 21-39
© 2010 Microchip Technology Inc. DS61107E_CN 第 21-1 页
PIC32MX 系列参考
手册
华为质量管理手册 下载焊接手册下载团建手册下载团建手册下载ld手册下载
21.1 简介
通用异步收发器(Universal Asynchronous Receiver Transmitter,UART)模块是 PIC32MX 系
列器件提供的串行 I/O 模块之一。UART 是可以与外设和个人计算机(使用 RS-232、RS-485、
LIN 1.2 和 IrDA® 等
协议
离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载
)通信的全双工异步通信通道。
根据不同的器件型号,UART 模块还通过 UxCTS 和 UxRTS 引脚支持硬件流控制选项,其中还包
括 IrDA 编码器和解码器。关于可用性,请参见具体器件数据手册。
UART 模块的主要特性有:
• 全双工 8 位或 9 位数据传输
• 偶校验、奇校验或无奇偶校验选项 (对于 8 位数据)
• 一个或两个停止位
• 硬件自动波特率特性
• 完全集成的波特率发生器,具有 16 位预分频器
• 当器件工作在 80 MHz 时,波特率范围从 76 bps 至 20 Mbps
• 独立的接收和发送 FIFO 数据缓冲区
• 奇偶校验、帧和缓冲区溢出错误
检测
工程第三方检测合同工程防雷检测合同植筋拉拔检测方案传感器技术课后答案检测机构通用要求培训
• 支持仅在地址检测 (第 9 位 = 1)时产生中断
• 独立的发送和接收中断
• 用于诊断支持的环回模式
• LIN 1.2 协议支持
图 21-1 给出了 UART 的简化框图。 UART 模块由以下这些重要的硬件组成:
• 波特率发生器
• 异步发送器
• 异步接收器和 IrDA 编 / 解码器
图 21-1: UART 简化框图
波特率发生器
UxRX
硬件流控制
UARTx 接收器
UARTx 发送器 UxTX
UxCTS(1)
UxRTS/BCLKx
(1)
IrDA®
注 1: 在具有 UART1B、UART2B 和 UART3B 模块的器件上,这些引脚不可用。关于可用性,请参见具体器件数据
手册。
DS61107E_CN 第 21-2 页 © 2010 Microchip Technology Inc.
第 21 章 UART
U
A
R
T
21
21.2 控制寄存器
每个 UART 模块包含以下特殊功能寄存器 (Special Function Register, SFR):
• UxMODE:UARTx 模式寄存器
• UxSTA:UARTx 状态和控制寄存器
• UxTXREG:UARTx 发送寄存器
• UxRXREG:UARTx 接收寄存器
• UxBRG:UARTx 波特率寄存器
此外,每个 UART 模块还具有用于中断控制的相关位(关于这些位的说明,请参见第 8 章“中断”
(DS61108)):
• UxTXIE:发送中断允许控制位
• UxTXIF:发送中断标志状态位
• UxRXIE:接收中断允许控制位
• UxRXIF:接收中断标志状态位
• UxEIE:错误中断允许控制位
• UxEIF:错误中断标志状态位
• UxIP<2:0>:中断优先级控制位
• UxIS<1:0>:中断子优先级控制位
表 21-1 汇总了所有与 UART 相关的寄存器。该汇总表之后列出了相应的寄存器,并且每个寄存
器位均附有详细的说明。
注: 不同的 PIC32MX 系列器件型号可能具有一个或多个 UART 模块。在引脚、控制 / 状
态位和寄存器的名称中使用的“x”表示特定的模块。更多详细信息,请参见具体器
件数据手册。
© 2010 Microchip Technology Inc. DS61107E_CN 第 21-3 页
PIC32MX 系列参考手册
表 21-1: UART SFR 汇总
名称 Bit31/23/15/7
Bit
30/22/14/6
Bit
29/21/13/5
Bit
28/20/12/4
Bit
27/19/11/3
Bit
26/18/10/2
Bit
25/17/9/1
Bit
24/16/8/0
UxMODE(1,2,3) 31:24 — — — — — — — —
23:16 — — — — — — — —
15:8 ON FRZ SIDL IREN RTSMD(4) — UEN<1:0>(4)
7:0 WAKE LPBACK ABAUD RXINV BRGH PDSEL<1:0> STSEL
UxSTA(1,2,3) 31:24 — — — — — — — ADM_EN
23:16 ADDR<7:0>
15:8 UTXISEL<1:0> UTXINV URXEN UTXBRK UTXEN UTXBF TRMT
7:0 URXISEL<1:0> ADDEN RIDLE PERR FERR OERR URXDA
UxTXREG 31:24 — — — — — — — —
23:16 — — — — — — — —
15:8 — — — — — — — UTX<8>
7:0 UTX<7:0>
UxRXREG 31:24 — — — — — — — —
23:16 — — — — — — — —
15:8 — — — — — — — RX<8>
7:0 RX<7:0>
UxBRG(1,2,3) 31:24 — — — — — — — —
23:16 — — — — — — — —
15:8 BRG<15:8>
7:0 BRG<7:0>
注 1: 该寄存器具有关联的清零寄存器,位于 0x4 字节偏移处。这些清零寄存器的命名方式是在关联寄存器的名称末尾附加 CLR (例如,
UxMODECLR)。向清零寄存器的任意位写入 1时,会将关联寄存器中的有效位清零。对清零寄存器的读操作将被忽略。
2: 该寄存器具有关联的置 1 寄存器,位于 0x8 字节偏移处。这些置 1 寄存器的命名方式是在关联寄存器的名称末尾附加 SET (例如,
UxMODESET)。向置 1 寄存器的任意位写入 1时,会将关联寄存器中的有效位置 1。对置 1 寄存器的读操作将被忽略。
3: 该寄存器具有关联的取反寄存器,位于 0xC 字节偏移处。这些取反寄存器的命名方式是在关联寄存器的名称末尾附加 INV (例如,
UxMODEINV)。向取反寄存器的任意位写入 1时,会将关联寄存器中的有效位取反。对取反寄存器的读操作将被忽略。
4: 在具有 UART1B、 UART2B 和 UART3B 模块的器件中,这些位不可用。关于可用性,请参见具体器件数据手册。
DS61107E_CN 第 21-4 页 © 2010 Microchip Technology Inc.
第 21 章 UART
U
A
R
T
21
寄存器 21-1: UxMODE:UARTx 模式寄存器 (1,2,3)
r-x r-x r-x r-x r-x r-x r-x r-x
— — — — — — — —
bit 31 bit 24
r-x r-x r-x r-x r-x r-x r-x r-x
— — — — — — — —
bit 23 bit 16
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 r-x R/W-0 R/W-0
ON FRZ SIDL IREN RTSMD(4) — UEN<1:0>(4)
bit 15 bit 8
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
WAKE LPBACK ABAUD RXINV BRGH PDSEL<1:0> STSEL
bit 7 bit 0
图注:
R = 可读位 W = 可写位 P = 可编程位 r = 保留位
U = 未实现位 -n = POR 时的值:(0, 1, x = 未知)
bit 31-16 保留:写入 0;忽略读操作
bit 15 ON:UARTx 使能位
1 = 使能 UARTx ; UARTx 根据 UEN<1:0> 和 UTXEN 控制位的定义控制 UARTx 引脚
0 = 禁止 UARTx ;由 PORTx、TRISx 和 LATx 寄存器中的相应位控制所有 UARTx 引脚; UARTx 的
功耗最小
注: 使用1:1 PBCLK分频比时,在清零模块ON位的指令之后,用户的软件不应立即在SYSCLK
周期中读 / 写外设的 SFR。
bit 14 FRZ:调试异常模式冻结位
1 = 在 CPU 处于调试异常模式时冻结工作
0 = 在 CPU 处于调试异常模式时继续工作
注: FRZ 仅在调试异常模式下可写,在正常模式下强制为 0。
bit 13 SIDL:空闲模式停止位
1 = 在器件进入 Idle (空闲)模式时停止工作
0 = 在 Idle (空闲)模式下继续工作
注 1:该寄存器具有关联的清零寄存器(UxMODECLR),位于 0x4 字节偏移处。向清零寄存器的任意位写入 1时,
会将关联寄存器中的有效位清零。对清零寄存器的读操作将被忽略。
2:该寄存器具有关联的置 1 寄存器(UxMODESET),位于 0x8 字节偏移处。向置 1 寄存器的任意位写入 1时,
会将关联寄存器中的有效位置 1。对置 1 寄存器的读操作将被忽略。
3:该寄存器具有关联的取反寄存器(UxMODEINV),位于 0xC 字节偏移处。向取反寄存器的任意位写入 1时,
会将关联寄存器中的有效位取反。对取反寄存器的读操作将被忽略。
4:在具有 UART1B、 UART2B 和 UART3B 模块的器件中,这些位不可用。关于可用性,请参见具体器件数
据手册。
© 2010 Microchip Technology Inc. DS61107E_CN 第 21-5 页
PIC32MX 系列参考手册
bit 12 IREN:IrDA 编码器和解码器使能位
1 = 使能 IrDA
0 = 禁止 IrDA
bit 11 RTSMD:UxRTS 引脚模式选择位 (4)
1 = UxRTS 引脚处于单工模式
0 = UxRTS 引脚处于流控制模式
bit 10 保留:写入 0;忽略读操作
bit 9-8 UEN<1:0>:UARTx 使能位 (4)
11 = 使能并使用 UxTX、 UxRX 和 UxBCLK 引脚; UxCTS 引脚由 PORTx 寄存器中的相应位控制
10 = 使能并使用 UxTX、 UxRX、 UxCTS 和 UxRTS 引脚
01 = 使能并使用 UxTX、 UxRX 和 UxRTS 引脚; UxCTS 引脚由 PORTx 寄存器中的相应位控制
00 = 使能并使用UxTX和UxRX引脚;UxCTS和UxRTS/UxBCLK引脚由PORTx寄存器中的相应位控制
bit 7 WAKE:在休眠模式下检测到启动位唤醒使能位
1 = 使能唤醒
0 = 禁止唤醒
bit 6 LPBACK:UARTx 环回模式选择位
1 = 使能环回模式
0 = 禁止环回模式
bit 5 ABAUD:自动波特率使能位
1 = 使能对下一个字符的波特率测量——需要接收同步字符 (0x55);完成时由硬件清零
0 = 禁止波特率测量或测量已完成
bit 4 RXINV:接收极性翻转位
1 = UxRX 的空闲状态为 0
0 = UxTX 的空闲状态为 1
bit 3 BRGH:高波特率使能位
1 = 高速模式——使能 4x 波特率时钟
0 = 标准速度模式——使能 16x 波特率时钟
bit 2-1 PDSEL<1:0>:奇偶校验和数据选择位
11 = 9 位数据,无奇偶校验
10 = 8 位数据,奇校验
01 = 8 位数据,偶校验
00 = 8 位数据,无奇偶校验
bit 0 STSEL:停止选择位
1 = 2 个停止位
0 = 1 个停止位
寄存器 21-1: UxMODE:UARTx 模式寄存器 (1,2,3) (续)
注 1:该寄存器具有关联的清零寄存器(UxMODECLR),位于 0x4 字节偏移处。向清零寄存器的任意位写入 1时,
会将关联寄存器中的有效位清零。对清零寄存器的读操作将被忽略。
2:该寄存器具有关联的置 1 寄存器(UxMODESET),位于 0x8 字节偏移处。向置 1 寄存器的任意位写入 1时,
会将关联寄存器中的有效位置 1。对置 1 寄存器的读操作将被忽略。
3:该寄存器具有关联的取反寄存器(UxMODEINV),位于 0xC 字节偏移处。向取反寄存器的任意位写入 1时,
会将关联寄存器中的有效位取反。对取反寄存器的读操作将被忽略。
4:在具有 UART1B、 UART2B 和 UART3B 模块的器件中,这些位不可用。关于可用性,请参见具体器件数
据手册。
DS61107E_CN 第 21-6 页 © 2010 Microchip Technology Inc.
第 21 章 UART
U
A
R
T
21
寄存器 21-2: UxSTA:UARTx 状态和控制寄存器 (1,2,3)
r-x r-x r-x r-x r-x r-x r-x R/W-0
— — — — — — — ADM_EN
bit 31 bit 24
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
ADDR<7:0>
bit 23 bit 16
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R-0 R-1
UTXISEL<1:0>(4) UTXINV URXEN UTXBRK UTXEN UTXBF TRMT
bit 15 bit 8
R/W-0 R/W-0 R/W-0 R-1 R-0 R-0 R/W-0 R-0
URXISEL<1:0>(4) ADDEN RIDLE PERR FERR OERR URXDA
bit 7 bit 0
图注:
R = 可读位 W = 可写位 P = 可编程位 r = 保留位
U = 未实现位 -n = POR 时的值:(0, 1, x = 未知)
bit 31-25 保留:写入 0;忽略读操作
bit 24 ADM_EN:自动地址检测模式使能位
1 = 使能自动地址检测模式
0 = 禁止自动地址检测模式
bit 23-16 ADDR<7:0>:自动地址掩码位
当 ADM_EN 位为 1时,该值定义用于自动地址检测的地址字符。
bit 15-14 UTXISEL<1:0>:发送中断模式选择位 (4)
对于 UART1 和 UART2 模块:
11 = 保留,不要使用
10 = 当发送缓冲区变为空时产生中断
01 = 当发送完所有字符时产生中断
00 = 当发送缓冲区变为未满 (至少有一个数据空间为空)时产生中断
对于 UART1A、 UART1B、 UART2A、 UART2B、 UART3A 和 UART3B 模块:
11 = 保留,不要使用
10 = 当发送缓冲区为空时产生中断并将中断标志位置为有效
01 = 当发送完所有字符时产生中断并将中断标志位置为有效
00 = 当发送缓冲区至少有一个数据空间为空时产生中断并将中断标志置为有效
注 1:该寄存器具有关联的清零寄存器(UxSTACLR),位于 0x4 字节偏移处。向清零寄存器的任意位写入 1时,
会将关联寄存器中的有效位清零。对清零寄存器的读操作将被忽略。
2:该寄存器具有关联的置 1 寄存器(UxSTASET),位于 0x8 字节偏移处。向置 1 寄存器的任意位写入 1时,
会将关联寄存器中的有效位置 1。对置 1 寄存器的读操作将被忽略。
3:该寄存器具有关联的取反寄存器(UxSTAINV),位于 0xC 字节偏移处。向取反寄存器的任意位写入 1时,
会将关联寄存器中的有效位取反。对取反寄存器的读操作将被忽略。
4:根据可用的 UART 模块,这些位具有不同的功能。关于模块可用性,请参见具体器件数据手册。
© 2010 Microchip Technology Inc. DS61107E_CN 第 21-7 页
PIC32MX 系列参考手册
bit 13 UTXINV:发送极性翻转位
如果禁止 IrDA 模式 (即, IREN (UxMODE<12>)为 0):
1 = UxTX 的空闲状态为 0
0 = UxTX 的空闲状态为 1
如果使能 IrDA 模式 (即, IREN (UxMODE<12>)为 1):
1 = IrDA 编码的 UxTX 空闲状态为 1
0 = IrDA 编码的 UxTX 空闲状态为 0
bit 12 URXEN:接收器使能位
1 = 使能 UARTx 接收器,由 UARTx 控制 UxRX 引脚 (如果 ON = 1)
0 = 禁止 UARTx 接收器, UARTx 模块忽略 UxRX 引脚。由端口控制 UxRX 引脚。
bit 11 UTXBRK:发送间隔位
1 = 在下次发送时发送间隔字符——启动位后跟随 12 个 0位,然后是停止位;完成时由硬件清零
0 = 禁止或已完成间隔字符的发送
bit 10 UTXEN:发送使能位
1 = 使能 UARTx 发送器,由 UARTx 控制 UxTX 引脚(如果 ON = 1)
0 = 禁止 UARTx 发送器,中止所有等待的发送,缓冲区复位。由端口控制 UxTX 引脚。
bit 9 UTXBF:发送缓冲区满状态位 (只读)
1 = 发送缓冲区已满
0 = 发送缓冲区未满,至少还可再写入一个字符
bit 8 TRMT:发送移位寄存器空位(只读)
1 = 发送移位寄存器为空,同时发送缓冲区为空 (上一次发送已完成)
0 = 发送移位寄存器非空,发送在进行中或在发送缓冲区中排队
bit 7-6 URXISEL<1:0>:接收中断模式选择位 (4)
对于 UART1 和 UART2 模块:
11 = 当接收缓冲区变满 (即,有 4 个数据字符)时,中断标志位置 1
10 = 当接收缓冲区 3/4 满 (即,有 3 个数据字符)时,中断标志位置 1
0x = 当接收到一个字符时,中断标志位置 1
对于 UART1A、 UART1B、 UART2A、 UART2B、 UART3A 和 UART3B 模块:
11 = 保留;不要使用
10 = 当接收缓冲区 3/4 满或更满 (即,有 6 个或更多数据字符)时,中断标志位置为有效
01 = 当接收缓冲区 1/2 满或更满 (即,有 4 个或更多数据字符)时,中断标志位置为有效
00 = 当接收缓冲区非空 (即,至少有 1 个数据字符)时,中断标志位置为有效
bit 5 ADDEN:地址字符检测位 (接收数据的 bit 8 = 1)
1 = 使能地址检测模式。如果没有选择 9 位模式,该控制位不起作用。
0 = 禁止地址检测模式
寄存器 21-2: UxSTA:UARTx 状态和控制寄存器 (1,2,3) (续)
注 1:该寄存器具有关联的清零寄存器(UxSTACLR),位于 0x4 字节偏移处。向清零寄存器的任意位写入 1时,
会将关联寄存器中的有效位清零。对清零寄存器的读操作将被忽略。
2:该寄存器具有关联的置 1 寄存器(UxSTASET),位于 0x8 字节偏移处。向置 1 寄存器的任意位写入 1时,
会将关联寄存器中的有效位置 1。对置 1 寄存器的读操作将被忽略。
3:该寄存器具有关联的取反寄存器(UxSTAINV),位于 0xC 字节偏移处。向取反寄存器的任意位写入 1时,
会将关联寄存器中的有效位取反。对取反寄存器的读操作将被忽略。
4:根据可用的 UART 模块,这些位具有不同的功能。关于模块可用性,请参见具体器件数据手册。
DS61107E_CN 第 21-8 页 © 2010 Microchip Technology Inc.
第 21 章 UART
U
A
R
T
21
bit 4 RIDLE:接收器空闲位 (只读)
1 = 接收器空闲
0 = 正在接收数据
bit 3 PERR:奇偶校验错误状态位(只读)
1 = 检测到当前字符的奇偶校验错误
0 = 未检测到奇偶校验错误
bit 2 FERR:帧错误状态位 (只读)
1 = 检测到当前字符的帧错误
0 = 未检测到帧错误
bit 1 OERR:接收缓冲区溢出错误状态位
该位由硬件置 1,且只能用软件清零(= 0)。清零原来置 1 的 OERR 位将使接收缓冲区和 RSR 复位
为空状态。
1 = 接收缓冲区已溢出
0 = 接收缓冲区未溢出
bit 0 URXDA:接收缓冲区数据存在标志位 (只读)
1 = 接收缓冲区中有数据,至少还有一个字符可被读取
0 = 接收缓冲区为空
寄存器 21-2: UxSTA:UARTx 状态和控制寄存器 (1,2,3) (续)
注 1:该寄存器具有关联的清零寄存器(UxSTACLR),位于 0x4 字节偏移处。向清零寄存器的任意位写入 1时,
会将关联寄存器中的有效位清零。对清零寄存器的读操作将被忽略。
2:该寄存器具有关联的置 1 寄存器(UxSTASET),位于 0x8 字节偏移处。向置 1 寄存器的任意位写入 1时,
会将关联寄存器中的有效位置 1。对置 1 寄存器的读操作将被忽略。
3:该寄存器具有关联的取反寄存器(UxSTAINV),位于 0xC 字节偏移处。向取反寄存器的任意位写入 1时,
会将关联寄存器中的有效位取反。对取反寄存器的读操作将被忽略。
4:根据可用的 UART 模块,这些位具有不同的功能。关于模块可用性,请参见具体器件数据手册。
© 2010 Microchip Technology Inc. DS61107E_CN 第 21-9 页
PIC32MX 系列参考手册
寄存器 21-3: UxTXREG:UARTx 发送寄存器
r-x r-x r-x r-x r-x r-x r-x r-x
— — — — — — — —
bit 31 bit 24
r-x r-x r-x r-x r-x r-x r-x r-x
— — — — — — — —
bit 23 bit 16
r-x r-x r-x r-x r-x r-x r-x R/W-0
— — — — — — — TX<8>
bit 15 bit 8
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
TX<7:0>
bit 7 bit 0
图注:
R = 可读位 W = 可写位 P = 可编程位 r = 保留位
U = 未实现位 -n = POR 时的值:(0, 1, x = 未知)
bit 31-9 保留:写入 0;忽略读操作
bit 8-0 TX<8:0>:待发送字符的 bit 8-0 数据位
DS61107E_CN 第 21-10 页 © 2010 Microchip Technology Inc.
第 21 章 UART
U
A
R
T
21
寄存器 21-4: UxRXREG:UARTx 接收寄存器
r-x r-x r-x r-x r-x r-x r-x r-x
— — — — — — — —
bit 31 bit 24
r-x r-x r-x r-x r-x r-x r-x r-x
— — — — — — — —
bit 23 bit 16
r-x r-x r-x r-x r-x r-x r-x R-0
— — — — — — — RX<8>
bit 15 bit 8
R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0
RX<7:0>
bit 7 bit 0
图注:
R = 可读位 W = 可写位 P = 可编程位 r = 保留位
U = 未实现位 -n = POR 时的值:(0, 1, x = 未知)
bit 31-9 保留:写入 0;忽略读操作
bit 8-0 RX<8:0>:已接收字符的 bit 8-0 数据位
© 2010 Microchip Technology Inc. DS61107E_CN 第 21-11 页
PIC32MX 系列参考手册
寄存器 21-5: UxBRG:UARTx 波特率寄存器 (1,2,3)
r-x r-x r-x r-x r-x r-x r-x r-x
— — — — — — — —
bit 31 bit 24
r-x r-x r-x r-x r-x r-x r-x r-x
— — — — — — — —
bit 23 bit 16
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
BRG<15:8>
bit 15 bit 8
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
BRG<7:0>
bit 7 bit 0
图注:
R = 可读位 W = 可写位 P = 可编程位 r = 保留位
U = 未实现位 -n = POR 时的值:(0, 1, x = 未知)
bit 31-16 保留:写入 0;忽略读操作
bit 15-0 BRG<15:0>:波特率分频比位
注 1:该寄存器具有关联的清零寄存器(UxBRGCLR),位于 0x4 字节偏移处。向清零寄存器的任意位写入 1时,
会将关联寄存器中的有效位清零。对清零寄存器的读操作将被忽略。
2:该寄存器具有关联的置 1 寄存器(UxBRGSET),位于 0x8 字节偏移处。向置 1 寄存器的任意位写入 1时,
会将关联寄存器中的有效位置 1。对置 1 寄存器的读操作将被忽略。
3:该寄存器具有关联的取反寄存器(UxBRGINV),位于 0xC 字节偏移处。向取反寄存器的任意位写入 1时,
会将关联寄存器中的有效位取反。对取反寄存器的读操作将被忽略。
DS61107E_CN 第 21-12 页 © 2010 Microchip Technology Inc.
第 21章 UART
U
A
R
T
21
21.3 UART波特率发生器
UART模块包含一个专用的 16位波特率发生器(Baud Rate Generator,BRG)。UxBRG寄存器
控制一个自由运行的 16位定时器的周期。公式 21-1给出了 BRGH = 0时计算波特率的公式。
公式 21-1: UART波特率(BRGH = 0)
例 21-1给出了如下条件下的波特率误差计算:
• FPB = 4 MHz
• 目标波特率 = 9600
例 21-1: 波特率误差计算(BRGH = 0)
最大可能波特率(BRGH = 0)是 FPB/16(当UxBRG = 0时),最小可能波特率是 FPB/(16 * 65536)。
公式 21-2给出了 BRGH = 1时计算波特率的公式。
公式 21-2: UART波特率(BRGH = 1)
最大可能波特率(BRGH = 1)是 FPB/4(当UxBRG = 0时),最小可能波特率是 FPB/(4 * 65536)。
向 UxBRG 寄存器写入新值会使波特率计数器复位(清零)。这可以确保 BRG 无需等待定时器
溢出就可以产生新的波特率。
21.3.1 波特率表
表 21-2 中提供了针对常见外设总线频率(FPB)的 UART 波特率。此外,还提供了每种频率下
的最小和最大波特率。
注: FPB表示 PBCLK频率。
UxBRG
FPB
16 波特率⋅---------------------------- 1–=
波特率 FPB
16 UxBRG 1+( )⋅-------------------------------------------=
目标波特率 = FPB/(16 (UxBRG + 1))
求解 UxBRG值:
UxBRG = ( (FPB/目标波特率 )/16) – 1
= ((4000000/9600)/16) – 1
= [25.042] = 25
计算波特率 = 4000000/(16 (25 + 1))
= 9615
误差 = (计算波特率 – 目标波特率 )/目标波特率
= (9615 – 9600)/9600
= 0.16%
注: FPB表示 PBCLK频率。
UxBRG
FPB
4 波特率⋅------------------------- 1–=
波特率 FPB
4 UxBRG 1+( )⋅----------------------------------------=
© 2010 Microchip Technology Inc. DS61107E_CN第 21-13页
PIC32MX 系列参考手册
表 21-2: UART 波特率 (UxMODE.BRGH = 0)
目标波特率
外设总线时钟:
40 MHz
外设总线时钟:
33 MHz
外设总线时钟:
30 MHz
实际
波特率 % 误差
BRG 值
(十进制)
实际
波特率 % 误差
BRG 值
(十进制)
实际
波特率 % 误差
BRG 值
(十进制)
110 110.0 0.00% 22726.0 110.0 0.0% 18749.0 110.0 0.0% 17044.0
300 300.0 0.00% 8332.0 300.0 0.0% 6874.0 300.0 0.0% 6249.0
1200 1200.2 0.02% 2082.0 1199.8 0.0% 1718.0 1199.6 0.0% 1562.0
2400 2399.2 -0.03% 1041.0 2401.0 0.0% 858.0 2400.8 0.0% 780.0
9600 9615.4 0.16% 259.0 9593.0 -0.1% 214.0 9615.4 0.2% 194.0
19.2 K 19230.8 0.16% 129.0 19275.7 0.4% 106.0 19132.7 -0.4% 97.0
38.4 K 38461.5 0.16% 64.0 38194.4 -0.5% 53.0 38265.3 -0.4% 48.0
56 K 55555.6 -0.79% 44.0 55743.2 -0.5% 36.0 56818.2 1.5% 32.0
115 K 113636.4 -1.19% 21.0 114583.3 -0.4% 17.0 117187.5 1.9% 15.0
250 K 250000.0 0.00% 9.0 257812.5 3.1% 7.0
300 K 294642.9 -1.8% 6.0
500 K 500000.0 0.00% 4.0 515625.0 3.1% 3.0
最小波特率 38.1 0.0% 65535 31.5 0.0% 65535 28.6 0.0% 65535
最大波特率 2500000 0.0% 0 2062500 0.0% 0 1875000 0.0% 0
目标波特率
外设总线时钟:
25 MHz
外设总线时钟:
20 MHz
外设总线时钟:
18.432 MHz
实际
波特率 % 误差
BRG 值
(十进制)
实际
波特率 % 误差
BRG 值
(十进制)
实际
波特率 % 误差
BRG 值
(十进制)
110 110.0 0.00% 14204.0 110.0 0.0% 11363.0 110.0 0.0% 10472.0
300 300.0 0.01% 5207.0 300.0 0.0% 4166.0 300.0 0.0% 3839.0
1200 1200.1 0.01% 1301.0 1199.6 0.0% 1041.0 1200.0 0.0% 959.0
2400 2400.2 0.01% 650.0 2399.2 0.0% 520.0 2400.0 0.0% 479.0
9600 9585.9 -0.15% 162.0 9615.4 0.2% 129.0 9600.0 0.0% 119.0
19.2 K 19290.1 0.47% 80.0 19230.8 0.2% 64.0 19200.0 0.0% 59.0
38.4 K 38109.8 -0.76% 40.0 37878.8 -1.4% 32.0 38400.0 0.0% 29.0
56 K 55803.6 -0.35% 27.0 56818.2 1.5% 21.0 54857.1 -2.0% 20.0
115 K 111607.1 -2.95% 13.0 113636.4 -1.2% 10.0 115200.0 0.2% 9.0
250 K 250000.0 0.0% 4.0
300 K
500 K
最小波特率 23.8 0.0% 65535 19 0.0% 65535 18 0.0% 65535
最大波特率 1562500 0.0% 0 1250000 0.0% 0 1152000 0.0% 0
目标波特率
外设总线时钟:
16 MHz
外设总线时钟:
12 MHz
外设总线时钟:
10 MHz
实际
波特率 % 误差
BRG 值
(十进制)
实际
波特率 % 误差
BRG 值
(十进制)
实际
波特率 % 误差
BRG 值
(十进制)
110 110.0 0.00% 9090.0 110.0 0.0% 6817.0 110.0 0.0% 5681.0
300 300.0 0.01% 3332.0 300.0 0.0% 2499.0 300.0 0.0% 2082.0
1200 1200.5 0.04% 832.0 1200.0 0.0% 624.0 1199.6 0.0% 520.0
2400 2398.1 -0.08% 416.0 2396.2 -0.2% 312.0 2403.8 0.2% 259.0
9600 9615.4 0.16% 103.0 9615.4 0.2% 77.0 9615.4 0.2% 64.0
19.2 K 19230.8 0.16% 51.0 19230.8 0.2% 38.0 18939.4 -1.4% 32.0
38.4 K 38461.5 0.16% 25.0 37500.0 -2.3% 19.0 39062.5 1.7% 15.0
56 K 55555.6 -0.79% 17.0 57692.3 3.0% 12.0 56818.2 1.5% 10.0
115 K 111111.1 -3.38% 8.0 6.0
250 K 250000.0 0.00% 3.0 250000.0 0.0% 2.0
300 K
500 K 500000.0 0.00% 1.0
最小波特率 15 0.0% 65535 11 0.0% 65535 10 0.0% 65535
最大波特率 1000000 0.0% 0 750000 0.0% 0 625000 0.0% 0
DS61107E_CN 第 21-14 页 © 2010 Microchip Technology Inc.
第 21 章 UART
U
A
R
T
21
表 21-2: UART 波特率 (UxMODE.BRGH = 0)(续)
目标波特率
外设总线时钟:
8 MHz
外设总线时钟:
5 MHz
外设总线时钟:
4 MHz
实际
波特率 % 误差
BRG 值
(十进制)
实际
波特率 % 误差
BRG 值
(十进制)
实际
波特率 % 误差
BRG 值
(十进制)
110 110.0 0.01% 4544.0 110.0 0.0% 2840.0 110.0 0.0% 2272.0
300 299.9 -0.02% 1666.0 299.9 0.0% 1041.0 300.1 0.0% 832.0
1200 1199.0 -0.08% 416.0 1201.9 0.2% 259.0 1201.9 0.2% 207.0
2400 2403.8 0.16% 207.0 2403.8 0.2% 129.0 2403.8 0.2% 103.0
9600 9615.4 0.16% 51.0 9469.7 -1.4% 32.0 9615.4 0.2% 25.0
19.2 K 19230.8 0.16% 25.0 19531.3 1.7% 15.0 19230.8 0.2% 12.0
38.4 K 38461.5 0.16% 12.0 39062.5 1.7% 7.0
56 K 55555.6 -0.79% 8.0
115 K
250 K 250000.0 0.00% 1.0
300 K
500 K 500000.0 0.00% 0.0
最小波特率 8 0.0% 65535 5 0.0% 65535 4 0.0% 65535
最大波特率 500000 0.0% 0 312500 0.0% 0 250000 0.0% 0
目标波特率
外设总线时钟:
7.68 MHz
外设总线时钟:
7.15909 MHz
外设总线时钟:
5.0688 MHz
实际
波特率 % 误差
BRG 值
(十进制)
实际
波特率 % 误差
BRG 值
(十进制)
实际
波特率 % 误差
BRG 值
(十进制)
110 110.0 -0.01% 4363.0 110.0 0.0% 4067.0 110.0 0.0% 2879.0
300 300.0 0.00% 1599.0 300.1 0.0% 1490.0 300.0 0.0% 1055.0
1200 1200.0 0.00% 399.0 1199.6 0.0% 372.0 1200.0 0.0% 263.0
2400 2400.0 0.00% 199.0 2405.6 0.2% 185.0 2400.0 0.0% 131.0
9600 9600.0 0.00% 49.0 9520.1 -0.8% 46.0 9600.0 0.0% 32.0
19.2 K 19200.0 0.00% 24.0 19454.0 1.3% 22.0 18635.3 -2.9% 16.0
38.4 K 36923.1 -3.85% 12.0 37286.9 -2.9% 11.0 39600.0 3.1% 7.0
56 K 53333.3 -4.76% 8.0 55930.4 -0.1% 7.0
115 K 120000.0 4.35% 3.0 111860.8 -2.7% 3.0
250 K 240000.0 -4.00% 1.0
300 K
500 K
最小波特率 7 0.0% 65535 7 0.0% 65535 5 0.0% 65535
最大波特率 480000 0.0% 0 447443 0.0% 0 316800 0.0% 0
目标波特率
外设总线时钟:
3.579545 MHz
外设总线时钟:
3.072 MHz
外设总线时钟:
1.8432 MHz
实际
波特率 % 误差
BRG 值
(十进制)
实际
波特率 % 误差
BRG 值
(十进制)
实际
波特率 % 误差
BRG 值
(十进制)
110 110.0 -0.01% 2033.0 110.0 0.0% 1744.0 110.0 0.0% 1046.0
300 299.9 -0.04% 745.0 300.0 0.0% 639.0 300.0 0.0% 383.0
1200 1202.8 0.23% 185.0 1200.0 0.0% 159.0 1200.0 0.0% 95.0
2400 2405.6 0.23% 92.0 2400.0 0.0% 79.0 2400.0 0.0% 47.0
9600 9727.0 1.32% 22.0 9600.0 0.0% 19.0 9600.0 0.0% 11.0
19.2 K 18643.5 -2.90% 11.0 19200.0 0.0% 9.0 19200.0 0.0% 5.0
38.4 K 37286.9 -2.90% 5.0 38400.0 0.0% 4.0 38400.0 0.0% 2.0
56 K 55930.4 -0.12% 3.0
115 K 111860.8 -2.73% 1.0
250 K
300 K
500 K
最小波特率 3 0.0% 65535 3 0.0% 65535 2 0.0% 65535
最大波特率 223722 0.0% 0 192000 0.0% 0 115200 0.0% 0
© 2010 Microchip Technology Inc. DS61107E_CN 第 21-15 页
PIC32MX 系列参考手册
21.3.2 BCLKx 输出
如果使能了 UART 和 BCLKx 输出(即,UEN<1:0> 位(UxMODE<9:8>)= 11),则 BCLKx 引脚
将输出 16x 波特率时钟。此功能用于支持外部 IrDA 编 / 解码器(见图 21-2)。在休眠模式下,
BCLKx 输出保持低电平。只要 UART 保持在该模式(即,UEN<1:0> 位(UxMODE<9:8>)= 11),
则无论 PORTx 和 TRISx 锁存位状态如何, BCLKx 都强制为输出。
图 21-2: BCLKx 输出与 UxBRG 编程
注: UART1B、UART2B 和 UART3B 模块不支持 BCLKx 引脚。关于可用性,请参见具体
器件数据手册。
(n + 1) / FPB
PBCLK
BCLK(BRG = 0)
BCLK(BRG = 1)
BCLK(BRG = 2)
BCLK(BRG = 3)