61107e_cn.book

Similar documents
untitled

00872a.book

untitled

untitled

untitled

PIC24 MSSP FRM Rev A.book

01262B.book

dspic33f 系列参考手册 17.1 简介 通用异步收发器 (Universal Asynchronous Receiver Transmitter,UART) 模块是 dspic33f 器件系列提供的串行 I/O 模块之一 UART 是可以与外设和个人计算机 ( 使用 RS-232 RS-48

61127c_cn.book

,Microchip Technology PIC LCD, PIC16F913/914/ 916/917/946 PIC18F6390/6490/8390/8490 PIC16F65J90/85J90 Microchip LCD LCD, Microchip 的优势 LCD PIC, LCD LC

41632B.book

MCP47x6_DaughterBoard.book

39697b.book

61146A.book

CTMU Temperature Measurement AN.book

TB3109 PIC32MX 器件中与 USB 模块相关的更改 USB 模块中断位 ( 即 USBIF USBIE USBIP 和 USBIS 位 ) 的位置变化会影响 PIC32MX 器件上的 USB 协议栈操作 表 1 给出了所列 PIC32MX 器件系列中 USBIF USBIE USBIP

untitled

21928a.book

21999a_cn.book

01277A_cn.book

0507A_Auto Tech_Microchip

TB3098 PIC16F170X 外设引脚选择 (PPS) 技术简介 作者 : 简介 Stephen Allen Microchip Technology Inc. 外设引脚选择 (Peripheral Pin Select,PPS) 可以使数字外设灵活地映射到各种外部引脚 在过去, 外设硬接线到

PIC18F65J90/85J90 Product Brief

01018A.book

AN1487 DALI 控制装置 作者 : 简介 数字可寻址照明接口 (Digitally Addressable Lighting Interface,DALI) 已成为欧洲应对能源危机的一项标准, 主要针对商业和工业用途 DALI 是 IEC 规范的一部分, 具体与数控可调光荧光镇流

70641A.book

21498c_cn.book

图 内部结构图 8251 的外部引脚如图 所示, 共 28 个引脚, 每个引脚信号的输入输出方式如图中的箭 头方向所示

工作原理 脉冲血氧仪基于氧合血红蛋白 (HbO 2 ) 和脱氧血红蛋白 (Hb) 的红光 ( 波长为 nm) 和红外光 ( 波长为 nm) 吸收特性来监测人体血液的氧饱和度 (SpO 2 ) 脉冲血氧仪会交替地闪烁红光和红外光, 光线穿过手指到达光电二极管 HbO

128K Flash EPROM 的程序?\(Bank=64K\) 切?

00975A.book

01476A.book

00686A.Book

00966A.book

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

01236B.book

第 9 章看门狗定时器 程序监控定时器和上电延时定时器 目录 本章包括下列主题 : 9.1 简介 看门狗定时器 程序监控定时器和上电延时定时器控制寄存器 看门狗定时器工作原理 DMT 工作原理 中断和复位产生

Section 9. Watchdog, Deadman, and Power-up Timers

光 探 测 应 用 光 探 测 应 用 可 以 使 用 许 多 探 测 器, 例 如 光 电 二 极 管 光 电 晶 体 管 光 敏 电 阻 光 电 管 光 电 倍 增 管 电 荷 耦 合 器 件 等 本 应 用 笔 记 将 重 点 介 绍 光 电 二 极 管, 因 为 它 是 最 常 用 的 光

21666b.book

MCP Phase Energy Meter Reference Design Using PIC18F2520 Users Guide

01096B.book

CM ZT1

MRF24WG0MAMB Software Migration

01020B.book

图 1 给出了 WWDT 的框图 为确保在最坏情况下能够通过程序主循环, 需要为定时器设置延时 定时器可通过控制寄存器进行配置 在定时器达到其设定的最大计数值并发生上溢前, 用户的应用程序应定期发出 CLRWDT 指令 如果用户的应用程序未能成功通过 CLRWDT 指令复位定时器, 则看门狗将发生上

2.0 MHz, 500 mA Synchronous Buck Regulator

00513D_CN.FM

RW Focus Asia Whitepaper CH1029

33023A.book(31001A_cn.fm)

ICD ICD ICD ICD ICD

第十四章 STC单片机比较器原理及实现

什么是 SSC? 如何为音频应用配置 SSC TB3175 简介 同步串行控制器 (Synchronous Serial Controller,SSC) 是一种串行同步通信模块, 可用于 Microchip 32 位 ARM Cortex -M3 Cortex -M4 和 Cortex -M7 系列

文件名

33023A.book(31026A_cn.fm)

xilinx FPGA 串口设计笔记 在设计中, 需要用 FPGA 读取 GPS 内部的信息,GPS 的通信方式为串口, 所以在 FPGA 中移植了串口程序 本次移植的程序源代码是特权的串口程序, 本以为移植应该很快就能完成, 但其中还是出了一写小问题, 耽误了不少的时间, 下面将问题进行一个总结!

800 mA Fixed-Output CMOS LDO with Shutdown

PowerPoint 演示文稿

SMSC LAN8700 Datasheet

Rotork E120E IQ brochure

第 16 章 SPI 串行同步通讯接口模式 这个 5 系列通用串行通信接口支持一个硬件模块下的多通道串行通信模式 本章节主要讨论同步外围接口的运行或称 SPI 模式的运行 16.1 USCI 的概述通用串行通信接口模块支持多道串行通信模式 不同的 USCI 支持不同的模式 每一个不同的 USCI 模

MICROCHIP EVM Board : APP APP001 PICmicro Microchip APP001 40pin PDIP PICmicro Design Tips Character LCM Temperature Sensor Application I/O Pi

61117e_cn.book

目录 简介 概念 解决方案 / 实现 相关资源... 7 Microchip 网站... 8 变更通知客户服务... 8 客户支持... 8 Microchip 器件代码保护功能... 8 法律声明... 9 商标... 9 DNV 认证的质量管理体系

Using Microchip’s Micropower LDOs


「兆豐商業銀行」原交通銀行客戶重要權益手冊

模拟外设 : 10 位模数转换器 (Analog-to-Digital Converter, ): - 最多 17 路外部通道 - 可在休眠模式下进行转换 : - 最多 2 个 - 低功耗 / 高速模式 - ( 同相 ) 反相输入上的固定电压参考 - 可从外部访问输出 5 位数模转换器 (Digit

Rotork new IQ brochure

PIC 单片机的信号测量定时器 TB3129 作者 : 摘要 Ashutosh Tiwari Microchip Technology Inc. 本技术简介介绍了灵活且非常有用的信号测量定时器 (Signal Measurement Timer,SMT) SMT 是一个具有高级时钟和门控逻辑的 24

61115e_cn.book

先进制造技术是近几年提得较多,叫得较响的一个专用词语,而且先进制造技术在机械制造业领域中的应用越来越广泛而深入,并取得了很大的成绩

物理传感器布线设计 基本设计要素包括传感器的尺寸 传感器相对于接地层和 / 或其他低阻抗走线的位置, 以及 mtouch/righttouch 器件中的具体设置 在遵守几个简单准则的前提下, 可以对器件进行独特的设计, 来检测用户接近或附近金属物体和高介电常数物体的移动 要实现具有高信号强度和低噪声

93004A.book

33023A.book(31005A_cn.fm)

RW Salary Survey China A4

MASTERs 06 Slide Template

mdt1030

93002A.book

2 PIC PIC 1 / CPU PIC MCU PIC RC

untitled

Microsoft Word - SC16C550应用实例.doc

Microsoft Word - Delta Controller ASCII_RTU_SC

51983a - MCP mA D2PAK UG.book


工程师培训

第 40 章包括可编程欠压复位在内的复位机制 目录 本章包括下列主题 : 40.1 简介 复位时的时钟源选择 上电复位 (POR) MCLR 复位 软件 RESET 指令 (SWR)

1.KF1030a 无线模块 KF1030a 是一款传输距离远 可靠性高 低成本的无线数传模块, 采用 ISM 频段的 434MHz, 发射功率达 1W 4 字节的地址 ID 300 字节的数据包长度 RSSI 功能 标准的 UART 接口, 配置灵活, 易于使用, 使该模块适合应用于组建各种无线数

PCM-3386用户手册.doc

CD DX Onkyo CD CD Cs

Hong Kong Pavilion.pdf

本科学生毕业论文

用户指南

_LIT MAN USR LX380-L-CHI

PIC32 Starter Kit User’s Guide

HD ( ) 18 HD ( ) 18 PC 19 PC 19 PC 20 Leica MC170 HD Leica MC190 HD 22 Leica MC170 HD Leica MC190 HD Leica MC170 HD

FPGAs in Next Generation Wireless Networks WPChinese

Tel: , Fax: STR-15 STR bps 2400bps 4800bps 9600bps STR : 500mW 2.ISM 433


KL DSC DEMO 使用说明

Transcription:

21 第 21 章 UART 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 设计技巧... 21-37 21.18 相关应用笔记... 21-38 21.19 版本历史... 21-39 2010 Microchip Technology Inc. DS61107E_CN 第 21-1 页

PIC32MX 系列参考手册 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 简化框图 波特率发生器 IrDA 硬件流控制 UxRTS/BCLKx (1) UxCTS (1) UARTx 接收器 UxRX UARTx 发送器 UxTX 注 1: 在具有 UART1B UART2B 和 UART3B 模块的器件上, 这些引脚不可用 关于可用性, 请参见具体器件数据手册 DS61107E_CN 第 21-2 页 2010 Microchip Technology Inc.

21.2 控制寄存器 第 21 章 UART 21 注 : 不同的 PIC32MX 系列器件型号可能具有一个或多个 UART 模块 在引脚 控制 / 状态位和寄存器的名称中使用的 x 表示特定的模块 更多详细信息, 请参见具体器件数据手册 每个 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 相关的寄存器 该汇总表之后列出了相应的寄存器, 并且每个寄存器位均附有详细的说明 UART 2010 Microchip Technology Inc. DS61107E_CN 第 21-3 页

PIC32MX 系列参考手册 表 21-1: 名称 UART SFR 汇总 Bit 31/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 寄存器 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 21 UART 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 bit 15 bit 14 bit 13 保留 : 写入 0 ; 忽略读操作 ON:UARTx 使能位 1 = 使能 UARTx ; UARTx 根据 UEN<1:0> 和 UTXEN 控制位的定义控制 UARTx 引脚 0 = 禁止 UARTx ; 由 PORTx TRISx 和 LATx 寄存器中的相应位控制所有 UARTx 引脚 ; UARTx 的功耗最小 注 : 使用 1:1 PBCLK 分频比时, 在清零模块 ON 位的指令之后, 用户的软件不应立即在 SYSCLK 周期中读 / 写外设的 SFR FRZ: 调试异常模式冻结位 1 = 在 CPU 处于调试异常模式时冻结工作 0 = 在 CPU 处于调试异常模式时继续工作注 : FRZ 仅在调试异常模式下可写, 在正常模式下强制为 0 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 系列参考手册 寄存器 21-1: UxMODE:UARTx 模式寄存器 (1,2,3) ( 续 ) 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) bit 7 bit 6 bit 5 bit 4 bit 3 bit 2-1 bit 0 11 = 使能并使用 UxTX UxRX 和 UxBCLK 引脚 ; UxCTS 引脚由 PORTx 寄存器中的相应位控制 10 = 使能并使用 UxTX UxRX UxCTS 和 UxRTS 引脚 01 = 使能并使用 UxTX UxRX 和 UxRTS 引脚 ; UxCTS 引脚由 PORTx 寄存器中的相应位控制 00 = 使能并使用 UxTX 和 UxRX 引脚 ;UxCTS 和 UxRTS/UxBCLK 引脚由 PORTx 寄存器中的相应位控制 WAKE: 在休眠模式下检测到启动位唤醒使能位 1 = 使能唤醒 0 = 禁止唤醒 LPBACK:UARTx 环回模式选择位 1 = 使能环回模式 0 = 禁止环回模式 ABAUD: 自动波特率使能位 1 = 使能对下一个字符的波特率测量 需要接收同步字符 (0x55); 完成时由硬件清零 0 = 禁止波特率测量或测量已完成 RXINV: 接收极性翻转位 1 = UxRX 的空闲状态为 0 0 = UxTX 的空闲状态为 1 BRGH: 高波特率使能位 1 = 高速模式 使能 4x 波特率时钟 0 = 标准速度模式 使能 16x 波特率时钟 PDSEL<1:0>: 奇偶校验和数据选择位 11 = 9 位数据, 无奇偶校验 10 = 8 位数据, 奇校验 01 = 8 位数据, 偶校验 00 = 8 位数据, 无奇偶校验 STSEL: 停止选择位 1 = 2 个停止位 0 = 1 个停止位 注 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 寄存器 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 21 UART 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 bit 24 保留 : 写入 0 ; 忽略读操作 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 系列参考手册 寄存器 21-2: bit 13 UxSTA:UARTx 状态和控制寄存器 (1,2,3) ( 续 ) 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 (4) URXISEL<1:0>: 接收中断模式选择位对于 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 = 禁止地址检测模式 注 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 寄存器 21-2: UxSTA:UARTx 状态和控制寄存器 (1,2,3) ( 续 ) 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 UART 注 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 bit 8-0 保留 : 写入 0 ; 忽略读操作 TX<8:0>: 待发送字符的 bit 8-0 数据位 DS61107E_CN 第 21-10 页 2010 Microchip Technology Inc.

第 21 章 UART 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 UART 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 bit 8-0 保留 : 写入 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 bit 15-0 保留 : 写入 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.3 UART 波特率发生器 第 21 章 UART UART 模块包含一个专用的 16 位波特率发生器 (Baud Rate Generator, BRG) UxBRG 寄存器控制一个自由运行的 16 位定时器的周期 公式 21-1 给出了 BRGH = 0 时计算波特率的公式 公式 21-1: UART 波特率 (BRGH = 0) 21 UART ð Ãÿ þ UxBRG = = F PB F PB ------------------------------------------ 16 UxBRG + 1 ------------------------------ 1 16 ð Ãÿ þ 注 : F PB 表示 PBCLK 频率 例 21-1 给出了如下条件下的波特率误差计算 : FPB = 4 MHz 目标波特率 = 9600 例 21-1: 波特率误差计算 (BRGH = 0) 目标波特率 = 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% 最大可能波特率 (BRGH = 0) 是 FPB/16( 当 UxBRG = 0 时 ), 最小可能波特率是 FPB/(16 * 65536) 公式 21-2 给出了 BRGH = 1 时计算波特率的公式 公式 21-2: UART 波特率 (BRGH = 1) F PB ð Ãÿ þ = --------------------------------------- 4 UxBRG + 1 UxBRG = F PB --------------------------- 1 4 ð Ãÿ þ 注 : F PB 表示 PBCLK 频率 最大可能波特率 (BRGH = 1) 是 FPB/4( 当 UxBRG = 0 时 ), 最小可能波特率是 FPB/(4 * 65536) 向 UxBRG 寄存器写入新值会使波特率计数器复位 ( 清零 ) 这可以确保 BRG 无需等待定时器溢出就可以产生新的波特率 21.3.1 波特率表 表 21-2 中提供了针对常见外设总线频率 (FPB) 的 UART 波特率 此外, 还提供了每种频率下的最小和最大波特率 2010 Microchip Technology Inc. DS61107E_CN 第 21-13 页

PIC32MX 系列参考手册 表 21-2: UART 波特率 (UxMODE.BRGH = 0) 目标波特率 实际波特率 外设总线时钟 : 40 MHz % 误差 BRG 值 ( 十进制 ) 实际波特率 外设总线时钟 : 33 MHz % 误差 BRG 值 ( 十进制 ) 实际波特率 外设总线时钟 : 30 MHz % 误差 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 % 误差 BRG 值 ( 十进制 ) 实际波特率 外设总线时钟 : 20 MHz % 误差 BRG 值 ( 十进制 ) 实际波特率 外设总线时钟 : 18.432 MHz % 误差 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 % 误差 BRG 值 ( 十进制 ) 实际波特率 外设总线时钟 : 12 MHz % 误差 BRG 值 ( 十进制 ) 实际波特率 外设总线时钟 : 10 MHz % 误差 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 21 表 21-2: UART 波特率 (UxMODE.BRGH = 0)( 续 ) 目标波特率 实际波特率 外设总线时钟 : 8 MHz % 误差 BRG 值 ( 十进制 ) 实际波特率 外设总线时钟 : 5 MHz % 误差 BRG 值 ( 十进制 ) 实际波特率 外设总线时钟 : 4 MHz % 误差 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 UART 目标波特率 实际波特率 外设总线时钟 : 7.68 MHz % 误差 BRG 值 ( 十进制 ) 实际波特率 外设总线时钟 : 7.15909 MHz % 误差 BRG 值 ( 十进制 ) 实际波特率 外设总线时钟 : 5.0688 MHz % 误差 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 % 误差 BRG 值 ( 十进制 ) 实际波特率 外设总线时钟 : 3.072 MHz % 误差 BRG 值 ( 十进制 ) 实际波特率 外设总线时钟 : 1.8432 MHz % 误差 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 都强制为输出 注 : UART1B UART2B 和 UART3B 模块不支持 BCLKx 引脚 关于可用性, 请参见具体器件数据手册 图 21-2: BCLKx 输出与 UxBRG 编程 PBCLK BCLK(BRG = 0) BCLK(BRG = 1) BCLK(BRG = 2) BCLK(BRG = 3) BCLK(BRG = 4) (n + 1) / FPB BCLK(BRG = n) DS61107E_CN 第 21-16 页 2010 Microchip Technology Inc.

21.4 UART 配置 第 21 章 UART UART 使用标准的不归零 (Non-Return-to-Zero, NRZ) 格式 (1 个启动位 8 或 9 个数据位和 1 或 2 个停止位 ) 硬件提供奇偶校验, 可由用户配置为偶校验 奇校验或无奇偶校验 最普通的数据格式是 8 位, 无奇偶校验, 有 1 个停止位 ( 用 8, N, 1 表示 ), 这是默认的上电复位 (Power-on Reset, POR) 设置 数据位数 停止位数以及奇偶校验均在 PDSEL<1:0> (UxMODE<2:1>) 和 STSEL (UxMODE<0>) 位中指定 UART 首先发送和接收最低有效位 (Least Significant bit, LSb) UART 的发送器和接收器在功能上是独立的, 但使用相同的数据格式和波特率 21 UART 21.4.1 使能 UART 通过将 ON 位 (UxMODE<15>) 置 1 来使能 UART 模块 此外, 通过将 UTXEN 位 (UxSTA<10>) 和 URXEN 位 (UxSTA<12>) 置 1 来分别使能 UART 发送器和接收器 一旦将这些使能位置 1, UxTX 和 UxRX 引脚就分别被配置为输出和输入, 改写对应 I/O 端口引脚的 TRISx 和 PORTx 寄存器位设置 21.4.2 禁止 UART 通过清零 ON 位来禁止 UART 模块 这是任何复位后的默认状态 如果禁止了 UART, 所有 UART 引脚在 PORTx 和 TRISx 寄存器中的相应位控制下用作端口引脚 禁止 UART 模块会将缓冲区复位为空状态 当禁止模块时, 缓冲区中的所有数据都将丢失 当禁止 UART 模块时, 所有与之相关的错误和状态标志都将复位 UxSTA 寄存器中的 RXDA OERR FERR PERR UTXEN URXEN UTXBRK 和 UTXBF 位被清零, 而 RIDLE 和 TRMT 位被置 1 其他控制位 ( 包括 ADDEN RXISEL<1:0> 和 UTXISEL) 以及 UxMODE 和 UxBRG 寄存器均不受影响 当 UART 模块处于活动状态时, 清零 ON 位将中止所有等待的发送和接收, 同时如以上所述那样将模块复位 重新使能 UART 将使用同样的配置重新启动 UART 模块 2010 Microchip Technology Inc. DS61107E_CN 第 21-17 页

PIC32MX 系列参考手册 21.5 UART 发送器 图 21-3 给出了 UART 发送器框图 发送器的核心是发送移位寄存器 (UxTSR) UxTSR 从发送 FIFO 缓冲区 UxTXREG 中获取数据 通过软件将数据装入 UxTXREG 寄存器 在前一次装入数据的停止位发送之前, 不会向 UxTSR 寄存器装入新数据 一旦停止位发送完毕, 就会将 UxTXREG 寄存器中的新数据 ( 如果有 ) 装入 UxTSR 注 : UxTSR 寄存器并未映射到存储器中, 因此用户不能访问它 图 21-3: (1) UART 发送器框图 32 内部数据总线 写 写 UxMODE UxSTA 32 9 8 0 (1) TX8 FIFO 时隙 发送 FIFO ( 最多 8 级深 ) TX4 FIFO (2) 时隙 发送控制 控制 UxTSR 控制缓冲区 产生标志 产生中断 UTXBRK 装入 UxTSR UxTXIF UxTX 数据 ( 启动 ) 发送移位寄存器 (UxTSR) UxTX ( 停止 ) 奇偶校验 奇偶校验发生器 分频器 来自波特率发生器的波特率时钟 UxCTS (3) 控制信号 注 1: 只有在具有 UART1A UART1B UART2A UART2B UART3A 和 UART3B 模块的器件中,8 级深 FIFO 才可用 2: 只有在具有 UART1 和 UART2 模块的器件中, 4 级深 FIFO 才可用 3: UART1B UART2B 和 UART3B 模块不支持 UxCTS 引脚 关于可用性, 请参见具体器件数据手册 通过将 UTXEN 使能位 (UxSTA<10>) 置 1 来使能发送 实际的发送要到 UxTXREG 寄存器装入了数据并且波特率发生器 UxBRG 产生了移位时钟 ( 图 21-3) 之后才发生 也可以先装入 UxTXREG 寄存器, 然后将 UTXEN 使能位置 1 来启动发送 通常, 第一次开始发送的时候, 由于 UxTSR 寄存器为空, 这样传输数据到 UxTXREG 寄存器会导致该数据立即传输到 UxTSR 发送期间清零 UTXEN 位将中止发送并复位发送器 因此, UxTX 引脚将恢复到 UTXINV 位 (UxSTA<13>) 定义的状态 若要选择 9 位发送, PDSEL<1:0> 位 (UxMODE<2:1>) 应设置为 11 注 : 在 9 位数据发送的情况下, 不采用奇偶校验 DS61107E_CN 第 21-18 页 2010 Microchip Technology Inc.

21.5.1 发送缓冲区 (UxTXREG) 第 21 章 UART 发送缓冲区有 9 位宽和 8 级深 算上发送移位寄存器 (UxTSR), 用户实际有一个最多 9 级深的缓冲区 当 UxTXREG 的内容被传输到 UxTSR 寄存器时, 当前缓冲单元就可以写入新数据 每当缓冲区满时,UTXBF(UxSTA<9>) 状态位就会置 1 如果用户试图向已满的缓冲区执行写操作, 则新数据将不会被 FIFO 接受 FIFO 在任何器件复位时复位, 但当器件进入节能模式或从节能模式唤醒时, FIFO 不受影响 注 1: 只有在具有 UART1A UART1B UART2A UART2B UART3A 和 UART3B 模块的器件中, 8 级深 FIFO 才可用 2: 只有在具有 UART1 和 UART2 模块的器件中, 4 级深 FIFO 才可用 21 UART 21.5.2 发送中断 发送中断标志 (UxTXIF) 位于相应的中断标志状态 (IFS) 寄存器中 UTXISEL 控制位 (UxSTA<15:14>) 决定 UART 何时将产生发送中断 当模块第一次使能时, UxTXIF 位被置 1 在工作期间可以在中断模式之间进行切换, 但除非缓冲区为空, 否则建议不要这么做 UxTXIF 标志位指示 UxTXREG 寄存器的状态, 而 TRMT 位 (UxSTA<8>) 指示 UxTSR 寄存器的状态 TRMT 状态位是只读位, 当 UxTSR 寄存器为空时被置 1 因为没有与该位关联的中断逻辑, 所以用户必须查询该位以判断 UxTSR 寄存器是否为空 要清除 UART1 和 UART2 模块的中断, 必须在关联的 IFSx 寄存器中, 将相应的 UxTXIF 标志位清零 对于 UART1A UART1B UART2A UART2B UART3A 和 UART3B 模块, 当 UTXISEL 控制位规定的中断条件为真时, 将会产生中断并将标志位置为有效 这意味着要清除这些模块的中断, 在清零相应的 UxTXIF 标志之前, 用户应用程序必须确保 UTXISEL 控制位规定的中断条件不再为真 21.5.3 设置 UART 发送 请使用以下步骤设置 UART 发送 : 1. 对 UxBRG 寄存器进行初始化, 设置合适的波特率 ( 见第 21.3 节 UART 波特率发生器 ) 2. 通过写入 PDSEL<1:0> (UxMODE<2:1>) 和 STSEL (UxMODE<0>) 位来设置数据位数 停止位数和奇偶校验选择 3. 如果需要发送中断, 就要将相应中断允许控制寄存器 (IEC) 中的 UxTXIE 控制位置 1 使用相应中断优先级控制 (IPC) 寄存器中的 UxIP<2:0> 和 UxIS<1:0> 控制位来指定发送中断的中断优先级和子优先级 同时, 通过写 UTXISEL(UxSTA<15:14>) 位来选择发送中断模式 4. 通过将 UTXEN(UxSTA<10>) 位置 1 来使能发送, 与此同时将 UxTXIF 位置 1 UxTXIF 位应在 UART 发送中断服务程序中清零 UxTXIF 位的操作由 UTXISEL 控制位控制 5. 通过将 ON (UxMODE<15>) 位置 1 来使能 UART 模块 6. 将数据装入 UxTXREG 寄存器 ( 开始发送 ) 2010 Microchip Technology Inc. DS61107E_CN 第 21-19 页

PIC32MX 系列参考手册 21.5.4 间隔字符的发送 间隔字符发送包含 1 个启动位, 随后的 12 个 0 位和 1 个停止位 在 UxTXREG 寄存器中装入数据时, 只要 UART 模块使能并且 UTXBRK 和 UTXEN 位置 1, 就会发送帧间隔字符 必须对 UxTXREG 寄存器进行假写操作, 才能启动间隔字符发送 请注意, 在发送间隔字符时写入 UxTXREG 的数据值会被忽略 写操作只是启动相应的序列, 从而发送全零数据 在发送完相应的间隔字符之后, 硬件会自动将 UTXBRK 位复位 这样用户可以在发送间隔字符 ( 在 LIN 规范中通常是同步字符 ) 时预先将下一个要发送字节装入写 FIFO 注 : 在将 UTXBRK 位置 1 之前, 用户应先等待发送器变为空闲 (TRMT = 1) UTXBRK 位会覆盖所有其他发送器活动 如果在 UTXBRK 位置 1 时, FIFO 包含发送数据, 则在数据传输到 UxTSR 寄存器时将发送间隔字符, 而不是传输到 UxTSR 寄存器中的实际发送数据 如果用户应用程序在序列完成之前清零 UTXBRK 位, 则可能导致意外的模块行为 TRMT 位指示发送移位寄存器是空还是满, 正如其在正常发送操作中一样 图 21-4 给出了发送间隔字符的时序 图 21-4: 发送间隔字符序列 写入 UxTXREG BCLKx/16 ( 移位时钟 ) 假写 UxTX 启动位 bit 0 bit 1 bit 11 停止位 间隔 UxTXIF TRMT 位 UTXBRK 在此时采样 自动清零 UTXBRK 位 21.5.5 间隔和同步发送序列 执行以下序列会发送一个报文帧头, 包括一个间隔字符和其后的一个自动波特率同步字节 这是 LIN 总线主器件的典型序列 1. 将 UART 配置为所需的模式, 请参见第 21.5.3 节 设置 UART 发送 了解设置信息 2. 如果当前正在发送数据, 可以通过查询 TRMT 位来确定发送何时结束 3. 将 UTXEN 和 UTXBRK 置 1 以设置间隔字符 4. 将一个无效字符装入 UxTXREG 以启动发送 ( 值被忽略 ) 5. 向 UxTXREG 写入 0x55 以将同步字符装入发送 FIFO 中 发送间隔字符之后, 硬件会将 UTXBRK 位复位 然后开始发送同步字符 DS61107E_CN 第 21-20 页 2010 Microchip Technology Inc.

21.6 UART 接收器 第 21 章 UART 接收器的核心是接收 ( 串行 ) 移位寄存器 (UxRSR) 在 UxRX 引脚上接收数据, 并发送到择多检测模块中 在 BRGH = 0 的模式下, 择多检测模块以 16 倍波特率的速率工作, 并且通过择多检测电路来确定 UxRX 引脚上出现的是高电平还是低电平 在 BRGH = 1 的模式下, 择多检测模块以 4 倍波特率的速率工作, 并且通过单采样来确定出现的是高电平还是低电平 在采样到 UxRX 引脚上的停止位之后,UxRSR 中接收到的数据被传输到接收 FIFO( 如果未满 ) UART 接收器框图请参见图 21-5 通过将 URXEN 位 (UxSTA<12>) 置 1 来使能接收 21 UART 注 : 接收移位 (UxRSR) 寄存器并未映射到存储器中, 因此用户不能访问它 21.6.1 接收缓冲区 (UxRXREG) UART 接收器有一个 9 位宽 最多 8 级深的 FIFO 接收数据缓冲区 UxRXREG 是一个存储器映射的寄存器, 可提供对 FIFO 输出的访问 有可能会发生这种情况 :FIFO 已满, 下一个字开始移入 UxRSR 寄存器, 然后发生缓冲区溢出 21.6.2 接收器错误处理 如果 FIFO 已满且新字符已被完全接收到 UxRSR 寄存器中, 则溢出错误位 OERR(UxSTA<1>) 将被置 1 UxRSR 中的字不会保留, 只要 OERR 位置 1, 就将禁止继续向接收 FIFO 传输 用户必须用软件清零 OERR 位, 以允许继续接收数据 若要保存溢出前接收到的数据, 用户应先读取所有接收到的字符, 然后清零 OERR 位 如果接收到的字符可以丢弃, 则用户只要清零 OERR 位即可 这可有效地复位接收 FIFO, 同时先前接收到的所有数据都将丢失 注 : 接收 FIFO 中的数据应在清零 OERR 位之前读出 当 OERR 清零时, FIFO 复位, 这将导致缓冲区中的所有数据丢失 当停止位的接收状态不正确时, 帧错误位 FERR (UxSTA<2>) 会置 1 如果缓冲区顶部的数据字 ( 即, 当前字 ) 存在奇偶校验错误, 则奇偶校验错误位 PERR (UxSTA<3>) 将被置 1 例如, 如果奇偶校验设置为偶校验, 但检测出数据中 1 的总数为奇数, 就会产生奇偶校验错误 PERR 位在 9 位模式下是无关的 FERR 和 PERR 位与对应的字一起被缓冲, 并且应在读取数据字之前读出 21.6.3 接收中断 UART 接收中断标志 (UxRXIF) 位于相应的中断标志状态 (IFSx) 寄存器中 RXISEL<1:0> (UxSTA<7:6>) 控制位决定 UART 接收器何时产生中断 要清除 UART1 和 UART2 模块的中断, 必须在关联的 IFSx 寄存器中, 将相应的 UxRXIF 标志清零 对于 UART1A UART1B UART2A UART2B UART3A 和 UART3B 模块, 当 RXISEL 控制位规定的中断条件为真时, 将会产生中断 这意味着如果要清除这些模块的中断, 在清零相应的 UxRXIF 标志之前, 用户应用程序必须确保 URXISLE 控制位规定的中断条件不再为真 2010 Microchip Technology Inc. DS61107E_CN 第 21-21 页

PIC32MX 系列参考手册 RXDA 和 UxRXIF 标志位指示 UxRXREG 寄存器的状态, 而 RIDLE 位 (UxSTA<4>) 指示 UxRSR 寄存器的状态 RIDLE 状态位是只读位, 当接收器空闲 ( 即, UxRSR 寄存器为空 ) 时被置 1 因为没有与该位关联的中断逻辑, 所以用户必须查询该位以判断 UxRSR 是否空闲 RXDA 位 (UxSTA<0>) 指示接收缓冲区中是有数据还是为空 只要接收缓冲区中至少有一个可以读出的字符, 该位就将置 1 RXDA 是只读位 图 21-5 给出了 UART 接收器的框图 图 21-5: (1) UART 接收器框图 内部数据总线 32 读 UxMODE UxSTA 32 9 8 0 (1) RX8 FIFO 时隙 RX4 FIFO 时隙 (2) 接收缓冲区控制 产生标志 产生中断 移位数据字符 LPBACK 来自 UxTX 1 UxRX 0 9 将 UxRSR 内容装入缓冲区接收移位寄存器 (UxRSR) PERR FERR 控制信号 UxRXIF 启动位检测 奇偶校验 停止位检测 移位时钟产生 唤醒逻辑 分频器 UEN1 UEN0 来自波特率发生器的波特率时钟 BCLKx/UxRTS (3) UxCTS (3) UEN 选择 BCLKx UxRTS UxCTS 注 1: 只有在具有 UART1A UART1B UART2A UART2B UART3A 和 UART3B 模块的器件中,8 级深 FIFO 才可用 2: 只有在具有 UART1 和 UART2 模块的器件中, 4 级深 FIFO 才可用 3: UART1B UART2B 和 UART3B 模块不支持 UxRTS 和 UxCTS 引脚 关于可用性, 请参见具体器件数据手册 DS61107E_CN 第 21-22 页 2010 Microchip Technology Inc.

21.6.4 设置 UART 接收 第 21 章 UART 请执行以下步骤设置 UART 接收 : 1. 对 UxBRG 寄存器进行初始化, 设置合适的波特率 ( 见第 21.3 节 UART 波特率发生器 ) 2. 通过写入 PDSEL<1:0> (UxMODE<2:1>) 和 STSEL (UxMODE<0>) 位来设置数据位 数 停止位数和奇偶校验选择 3. 如果需要中断, 就要将相应中断允许控制 (IEC) 寄存器中的 UxRXIE 位置 1 使用相应 中断优先级控制 (IPC) 寄存器中的 UxIP<2:0> 和 UxIS<1:0> 控制位来指定中断的中断优 先级和子优先级 同时, 通过写入 RXISEL<1:0>(UxSTA<7:6>) 位来选择接收中断模式 4. 通过将 URXEN (UxSTA<12>) 位置 1 来使能 UART 接收器 5. 通过将 ON (UxMODE<15>) 位置 1 来使能 UART 模块 6. 接收中断取决于 RXISEL<1:0> 控制位的设置 如果没有允许接收中断, 用户可以查询 RXDA 位 UxRXIF 位应在 UART 接收中断服务程序中清零 7. 从接收缓冲区中读取数据 如果选择了 9 位发送, 则读一个字 ; 否则, 读一个字节 每当 缓冲区中有数据时, RXDA 状态位 (UxSTA<0>) 就会被置 1 21 UART 2010 Microchip Technology Inc. DS61107E_CN 第 21-23 页

PIC32MX 系列参考手册 21.7 使用 UART 进行 9 位通信 在 9 位数据模式下, UART 接收器可用于在多处理器环境中进行通信 在 9 位数据模式下, 当 ADDEN 位置 1 时, 接收器可以在数据的第 9 位为 0 时忽略数据 21.7.1 多处理器通信 典型的多处理器通信协议会区别数据字节和地址 / 控制字节 一般的方法是使用第 9 个数据位来识别数据字节是地址还是数据信息 如果第 9 位置 1, 数据就作为地址或控制信息处理 如果第 9 位清零, 接收到的数据字就作为和前面的地址 / 控制字节相关的数据处理 协议按以下序列工作 : 主器件发送一个第 9 位置 1 的数据字 数据字中包含从器件的地址, 被视为地址字 通信链中的所有从器件接收地址字并检查从器件地址值 地址字指定的从器件将接收和处理主器件发送的后续数据字节 所有其他从器件丢弃后续的数据字节, 直到接收到新的地址字 21.7.1.1 ADDEN 控制位 UART 接收器有一个地址检测模式, 该模式允许接收器忽略第 9 位清零的数据字 这降低了中断开销, 因为第 9 位清零的数据字不被缓冲 该功能通过将 ADDEN 位 (UxSTA<5>) 置 1 来使能 要使用地址检测模式,UART 必须配置为 9 位数据模式 当接收器配置为 8 位数据模式时,ADDEN 位不起作用 21.7.1.2 设置 9 位发送模式 除了 PDSEL<1:0> 位 (UxMODE<2:1>) 应设置为 11 外, 设置 9 位发送的过程与设置 8 位发送模式相同 应对 UxTXREG 寄存器执行字写操作 ( 开始发送 ) 关于设置发送的更多信息, 请参见第 21.5.3 节 设置 UART 发送 21.7.1.3 设置使用地址检测模式的 9 位接收 除了 PDSEL<1:0> 位 (UxMODE<2:1>) 应设置为 11 外, 设置 9 位接收的过程与设置 8 位接收模式类似 ( 关于设置 UART 接收的更多信息, 请参见第 21.6.4 节 设置 UART 接收 ) 应通过写入 RXISEL<1:0> (UxSTA<7:6>) 位来配置接收中断模式 注 : 在检测到地址字符, 并且地址检测模式使能 (ADDEN = 1) 时, 无论 RXISEL<1:0> 控制位如何设置, 都会产生接收中断 请执行以下步骤来使用地址检测模式 : 1. 将 PDSEL<1:0> (UxMODE<2:1>) 设置为 11 以选择 9 位模式 2. 将 ADDEN (UxSTA<5>) 位置 1 以使能地址检测 3. 将 ADDR (UxSTA<23:16>) 设置为所需的器件地址字符 4. 将 ADM_EN (UxSTA<24>) 位置 1 以使能地址检测 5. 如果该器件已经进行寻址, 则 UxRXREG 会被丢弃, 在接收到的所有后续字符中, UxRXREG<8> = 0 的字符会被传输到 UART 接收缓冲区中, 并且将根据 RXISEL<1:0> 产 生中断 DS61107E_CN 第 21-24 页 2010 Microchip Technology Inc.

图 21-6: 带地址检测的接收 (ADDEN = 1) 第 21 章 UART 21 UxRX( 引脚 ) 传输到接收 FIFO 读接收缓冲寄存器 UxRXREG UxRXIF ( 中断标志 ) bit 8 = 0, 数据字节 bit 8 = 1, 地址字节 启动启动位 bit 0 bit 1 bit 8 停止位 bit 0 bit 8 停止位位 字 1 UxRXREG UART 注 : 此时序图显示了一个数据字节, 后跟一个地址字节 数据字节没有被读入 UxRXREG ( 接收缓冲区 ), 因为 ADDEN = 1 并且 bit 8 = 0 2010 Microchip Technology Inc. DS61107E_CN 第 21-25 页

PIC32MX 系列参考手册 21.8 接收间隔字符序列 21.9 初始化 唤醒功能通过设置 WAKE 位 (UxMODE <7>)= 1 来使能 在该模式下, 模块会接收启动位 数据和无效停止位 ( 这会将 FERR 置 1); 但接收器会在检测下一个启动位之前先等待有效的停止位 它不会将线上的间隔条件当作下一个启动位 间隔字符被视为一个全 0 的字符, 且 FERR 位置 1 间隔字符被装入缓冲区中 只有在接收到停止位之后, 才会继续进行接收 当在 13 位的间隔字符之后接收到停止位时,WAKE 位将自动清零 请注意, 当接收到停止位时,RIDLE 变为高电平 接收器将根据 PDSEL<1:0> (UxMODE<2:1>) 和 STSEL (UxMODE<0>) 位中设定的值, 计数并等待特定数量的位时间 如果间隔大于 13 个位时间, 则在经过 PDSEL 和 STSEL 位所指定数量的位时间之后, 就认为接收已完成 此时, RXDA 位置 1, FERR 置 1, 接收 FIFO 中装入 0, 并产生中断 如果未设置唤醒功能, 即 WAKE (UxMODE <7>) = 0, 则间隔接收并无任何不同 间隔字符将被计为一个字符装入缓冲区 ( 所有位全为 0), 且 FERR 置 1 例 21-2 给出了 8 位模式下发送器 / 接收器的初始化程序 例 21-3 给出了 9 位地址检测模式下可寻址 UART 的初始化程序 在两个示例中, 要装入 UxBRG 寄存器的值取决于所需的波特率和器件频率 例 21-2: 8 位发送 / 接收 (UART1) U1BRG = BaudRate; //Set Baud rate U1STA = 0; U1MODE = 0x8000; //Enable UART for 8-bit data //no parity, 1 Stop bit U1STASET = 0x1400; //Enable Transmit and Receive 例 21-3: 8 位发送 / 接收 (UART1), 使能地址检测 U1BRG = BaudRate; //Set Baud rate U1MODE = 0x8006; //Enable UART for 9-bit data //no parity, 1 Stop bit U1STA = 0x1211420; //Address detect enabled //Device Address = 0x21 //Enable Automatic Address Detect Mode //Enable Transmit and Receive DS61107E_CN 第 21-26 页 2010 Microchip Technology Inc.

21.10 UART 的其他特性 21.10.1 环回模式下的 UART 第 21 章 UART 将 LPBACK 位 (UxMODE<6>) 置 1 将使能这种特殊模式, 在该模式下,UxTX 输出在内部连接到 UxRX 输入 当配置为环回模式时,UxRX 引脚从内部 UART 接收逻辑断开 ; 但 UxTX 引脚仍正常工作 请使用以下步骤选择环回模式 : 1. 将 UART 配置为所需的工作模式 ( 见第 21.5.3 节 设置 UART 发送 ) 2. 按第 21.5 节 UART 发送器 中所述使能发送 3. 设置 LPBACK (UxMODE<6>) = 1 以使能环回模式 环回模式取决于 UEN<1:0> 位, 如表 21-3 所示 21 UART 表 21-3: 环回模式引脚功能 UEN<1:0> 引脚功能, LPBACK = 1 (1) 00 UxRX 输入连接到 UxTX UxTX 引脚工作 UxRX 引脚忽略 UxCTS/UxRTS 未使用 (2) 01 UxRX 输入连接到 UxTX UxTX 引脚工作 UxRX 引脚忽略 UxRTS (2) 引脚工作 UxCTS 未使用 (2) 10 UxRX 输入连接到 UxTX UxTX 引脚工作 UxRX 引脚忽略 (2) UxRTS 引脚工作 UxCTS 输入连接到 UxRTS (2) (2) UxCTS 引脚忽略 11 UxRX 输入连接到 UxTX UxTX 引脚工作 UxRX 引脚忽略 BCLKx 引脚工作 (2) UxCTS/UxRTS 未使用注 1: 应仅在使能与 UART 模块相关的其他位之后, 才设置 LPBACK = 1 2: UART1B UART2B 和 UART3B 模块不支持这些引脚 关于可用性, 请参见具体器件数据手册 21.10.2 自动波特率支持 要允许系统确定所接收字符的波特率, 可以使能 ABAUD 位 如果使能了自动波特率检测 (ABAUD = 1), 则每当接收到启动位时, UART 就会开始自动波特率测量序列 波特率计算采用自平均的方式 该功能仅在禁止自动唤醒 (WAKE = 0) 时有效 此外, 对于自动波特率操作, LPBACK 必须等于 0 当 ABAUD 位置 1 时,BRG 计数器值将被清零并开始检测一个启动位 ; 在这种情况下, 启动位定义为高电平到低电平跳变后跟随一个低电平到高电平跳变 在启动位之后, 自动波特率功能需要接收一个 ASCII U (55h), 以计算相应的比特率 为了尽量减少输入信号不对称造成的影响, 测量时段内要包含一个高位和一个低位时间 在启动位 ( 上升沿 ) 结束时,BRG 计数器开始使用 FPB/8 时钟计数 在 UxRX 引脚的第 5 个上升沿, 统计相应 BRG 总周期数的累计 BRG 计数器值将被传输到 UxBRG 寄存器 ABAUD 位自动清零 如果用户在序列完成之前清零 ABAUD 位, 则可能导致意外的模块行为 关于 ABD 序列的信息, 请参见图 21-1 2010 Microchip Technology Inc. DS61107E_CN 第 21-27 页

PIC32MX 系列参考手册 图 21-7: 自动波特率计算 BRG 计数器 UxRX XXXXh 0000h 启动位 边沿 1 bit 0 bit 1 边沿 2 bit 2 bit 3 边沿 3 bit 4 bit 5 边沿 4 bit 6 bit 7 001Ch 边沿 5 停止位 BRG 时钟 由用户置 1 ABAUD 位 自动清零 UxRXIF BRG 寄存器 XXXXh 001Ch 在进行自动波特率序列时,UART 状态机保持在空闲状态 无论 RXISEL<1:0> 设置如何,UxRXIF 中断均设置为在第 5 个 UxRX 上升沿产生 接收器 FIFO 不会被更新 21.10.3 间隔检测序列 用户可以将模块配置为在间隔检测之后立即自动检测波特率 这通过将 ABAUD 位置 1 和 WAKE 位置 1 来实现 图 21-8 显示了在间隔检测之后产生自动波特率序列 WAKE 位的优先级高于 ABAUD 位设置的优先级 注 : 如果 WAKE 位与 ABAUD 位同时置 1, 自动波特率检测将在间隔字符之后的字节处发生 用户必须考虑给定时钟可能提供的波特率, 确保进入的字符波特率处于选定 UxBRG 时钟源的范围内 在自动波特率序列期间, 不能使用 UART 发送器 此外, 用户应确保不要在正在进行发送序列时, 将 ABAUD 位置 1 否则, UART 会产生不可预测的行为 图 21-8: 间隔检测之后跟随自动波特率序列 Q1 UxRX 启动 bit 0 bit 7 停止 WAKE 位 由用户置 1 自动清零 ABAUD 位 由用户置 1 自动清零 UxRXIF 同步 同步 UART 模式空闲间隔检测自动波特率检测空闲 DS61107E_CN 第 21-28 页 2010 Microchip Technology Inc.

21.11 UxCTS 和 UxRTS 控制引脚的操作 第 21 章 UART UxCTS ( 允许发送 ) 和 UxRTS ( 请求发送 ) 是与 UART 模块相关的两个由硬件控制的引脚 这两个引脚使 UART 可以工作于单工和流控制模式, 第 21.11.2 节 流控制模式下的 UxRTS 功能 和第 21.11.3 节 单工模式下的 UxRTS 功能 分别详细说明了这两种模式 这两个引脚用于控制数据终端设备 (Data Terminal Equipment, DTE) 之间的发送和接收 注 : UART1B UART2B 和 UART3B 模块不支持这些引脚 关于可用性, 请参见具体器件数据手册 21 UART 21.11.1 UxCTS 功能 在 UART 操作中, UxCTS 引脚用作可以控制发送的输入引脚 该引脚由另一个设备 ( 通常为个人计算机 ) 控制 UxCTS 引脚使用 UEN<1:0> 位 (UxMODE<9:8>) 进行配置 当 UEN<1:0> = 10 时, UxCTS 配置为输入 如果 UxCTS = 1, 则发送器会装入发送移位寄存器中的数据, 但不会启动发送 这使 DTE 可以根据其需求通过控制器控制和接收数据 在发送数据改变的同时 ( 即, 在 16 倍波特率时钟开始时 ) 会对 UxCTS 引脚进行采样 只有采样到 UxCTS 引脚为低电平时才会开始发送 UxCTS 引脚在内部使用 Q 时钟进行采样, 这意味着 UxCTS 上的脉冲宽度应至少为 1 个外设时钟 但是, 这不能作为规范, 因为 FPB 会随所使用的时钟不同而不同 用户也可以通过读相关的端口引脚来读取 UxCTS 引脚的状态 21.11.2 流控制模式下的 UxRTS 功能 在流控制模式下,DTE 的 UxRTS 引脚连接到 PIC32MX 的 UxCTS 引脚,DTE 的 UxCTS 引脚连接到 PIC32MX 的 UxRTS 引脚, 如图 21-9 所示 UxRTS 信号指示器件准备好接收数据 每当 UEN<1:0> = 01 或 10 时,UxRTS 引脚就会被驱动为输出 每当接收器准备好接收数据时,UxRTS 引脚就会被置为有效 ( 驱动为低电平 ) 当 RTSMD 位 = 0 时 ( 器件处于流控制模式时 ), UxRTS 引脚在接收缓冲区未满或 OERR 位未置 1 时被驱动为低电平 当 RTSMD 位 = 0 时, UxRTS 引脚在器件未准备好接收时 ( 即, 接收缓冲区已满或正在进行移位时 ) 被驱动为高电平 当接收器在 FIFO 中至少有 2 个字符的空间时,UxRTS 引脚会被置为有效 ( 驱动为低电平 ) 由于 DTE 的 UxRTS 引脚连接到 PIC32MX 的 UxCTS 引脚, 因此每当它准备好接收数据时, UxRTS 引脚就会将 UxCTS 引脚驱动为低电平 当 UxCTS 引脚变为低电平时, 数据发送开始, 如第 21.11.1 节 UxCTS 功能 中所述 图 21-9: DTE-DTE 的 UxRTS/UxCTS 流控制 (RTSMD = 0, 流控制模式 ) DTE 通常为个人计算机 DTE 通常为另一个系统或单片机 已准备好接收 UxRTS UxRTS 已准备好接收 如果允许, 将进行发送 UxCTS UxCTS 如果允许, 将进行发送 2010 Microchip Technology Inc. DS61107E_CN 第 21-29 页

PIC32MX 系列参考手册 21.11.3 单工模式下的 UxRTS 功能 在单工模式下, DCE 的 UxRTS 引脚连接到 PIC32MX 的 UxRTS 引脚, DCE 的 UxCTS 引脚连接到 PIC32MX 的 UxCTS 引脚, 如图 21-10 所示 在单工模式下,UxRTS 信号指示 DTE 已准备好发送 当 DCE 准备好接收发送数据时,DCE 就会通过有效的 UxCTS 信号对 UxRTS 信号作出答复 当 DTE 接收到有效的 UxCTS 信号时, 它将开始发送 如图 21-11 所示, IEEE-485 系统中也使用单工模式来使能发送器 当 UxRTS 信号指示 DTE 准备好发送时, UxRTS 信号将使能驱动器 每当 UEN<1:0> = 01 或 10 时,UxRTS 引脚就会被驱动为输出 当 RTSMD = 1 时, 每当有数据可供发送时 (TRMT = 0),UxRTS 引脚就会被置为有效 ( 驱动为低电平 ) 当 RTSMD = 1 时, 当发送器为空时 (TRMT = 1), UxRTS 引脚就会被置为无效 ( 驱动为高电平 ) 图 21-10: DTE-DCE 的 UxRTS/UxCTS 握手 (RTSMD = 1, 单工模式 ) DTE 通常为单片机 DCE 通常为调制解调器 是否可以发送? UxRTS UxRTS UxRTS 有效, 接收器准备就绪 如果允许, 将进行发送 允许, 请继续并发送 UxCTS UxCTS 图 21-11: IEEE-485 系统的 UxRTS/UxCTS 总线使能 (RTSMD = 1) TTL 至 RS-485 收发器集成的 CKT UxTX D DTE 通常为单片机 UxRX R 是否可以发送? UxRTS 如果允许, 将进行发送 UxCTS A B DS61107E_CN 第 21-30 页 2010 Microchip Technology Inc.

21.12 红外支持 UART 模块提供以下两种类型的红外 UART 支持 : IrDA 时钟输出, 用于支持外部 IrDA 编码器和解码器 ( 传统模块支持 ) 注 : 完全实现的 IrDA 编码器和解码器 第 21 章 UART UART1B UART2B 和 UART3B 模块不支持该功能所需的引脚 关于可用性, 请参见具体器件数据手册 21 UART 图 21-12: IrDA 编码方式 21.12.1 外部 IrDA 支持 IrDA 时钟输出 为了支持外部 IrDA 编码器和解码器, 可将 BCLKx 引脚配置为产生 16x 波特率时钟 当 UEN<1:0> = 11 时, 如果使能了 UART 模块,BCLKx 引脚将输出 16x 波特率时钟 ; 它可以用于支持 IrDA 编解码芯片 21.12.2 内置 IrDA 编码器和解码器 UART 模块在其内部完全实现了 IrDA 编码器和解码器 内置 IrDA 编码器和解码器的功能可通过 IREN 位 (UxMODE<12>) 来使能 当使能时 (IREN = 1), 接收引脚 UxRX 作为红外接收器的输入引脚 发送引脚 UxTX 作为红外发送器的输出引脚 21.12.2.1 IrDA 编码器功能 编码器的工作方式为 : 从 UART 获取串行数据, 并使用以下方式替换它 : 当发送位数据为 1 时, 16x 波特率时钟的全部 16 个周期均编码为 0 当发送位数据为 0 时, 16x 波特率时钟的前 7 个周期编码为 0, 接下来的 3 个周期编码为 1, 而余下的 6 个周期则编码为 0 详情请参见图 21-12 和图 21-14 21.12.2.2 IrDA 发送极性 IrDA 发送极性使用 UTXINV 位 (UxSTA<13>) 进行选择 该位仅在使能 IrDA 编码器和解码器 (IREN = 1) 时作用于模块 对于正常的发送和接收,UTXINV 位对接收器或模块操作均无影响 当 UTXINV = 0 时,UxTX 线的空闲状态为 0( 见图 21-12) 当 UTXINV = 1 时,UxTX 线的空闲状态为 1 ( 见图 21-13) UxTX 数据 UxTX 图 21-13: 位数据为 0 时的 IrDA 编码方式 UxTX 数据 UxTX 2010 Microchip Technology Inc. DS61107E_CN 第 21-31 页

PIC32MX 系列参考手册 图 21-14: 对应于 16x 波特率时钟, 位数据为 0 时的 IrDA 编码方式 16x 波特率时钟 发送位为 0 UxTX 数据 UxTX 第 8 个周期开始 第 11 个周期开始 21.12.2.3 IrDA 解码器功能 解码器的工作方式为 : 从 UxRX 引脚获取串行数据, 并将其替换为解码后的数据流 数据流基于 UxRX 输入的下降沿检测进行解码 UxRX 的每个下降沿都会使解码数据被驱动为低电平并保持 16x 波特率时钟的 16 个周期 如果在 16 个周期结束之前, 检测到另一个下降沿, 则在接下来的 16 个周期, 解码数据继续保持为低电平 如果未检测到下降沿, 则解码数据被驱动为高电平 请注意, 进入器件的数据流比实际报文源晚了 16x 波特率时钟的 7 到 8 个周期 存在一个时钟周期的不确定性是由于时钟边沿分辨率的原因 ( 详情请参见图 21-15) 图 21-15: IrDA 解码方式的宏观视图 16 个周期 16 个周期 16 个周期 16 个周期 16 个周期 在进入 IrDA 编码器之前 ( 发送器件 ) UxRX 解码数据 启动 BRG TIRDEL 21.12.2.4 IrDA 接收极性 IrDA 信号的输入可以具有反相的极性 同一逻辑可以解码信号串, 但在这种情况下, 解码数据流比原始报文源晚了 16x 波特率时钟的 10 到 11 个周期 同样, 存在一个时钟周期的不确定性是由于时钟边沿分辨率的原因 ( 详情请参见图 21-16) 图 21-16: 反相极性解码结果 16 个周期 16 个周期 16 个周期 16 个周期 16 个周期 在进入 IrDA 编码器之前 ( 发送器件 ) UxRX 启动 BRG TIRDELI 解码数据 DS61107E_CN 第 21-32 页 2010 Microchip Technology Inc.

21.12.2.5 时钟抖动 第 21 章 UART 21 图 21-17: 由于时钟抖动或器件之间微小的频率差, 可能会导致错过某个 16x 周期的下一个下降位边沿 在这种情况下, 在解码数据流中会出现一个时钟宽的脉冲 由于 UART 在位中点附近执行择多检测, 因此这不会导致错误数据 ( 详情请参见图 21-17) 时钟抖动导致在连续的 0 之间产生脉冲 UART 16 个周期 16 个周期 UxRX(rx_in) 解码数据 多余的脉冲将被忽略 2010 Microchip Technology Inc. DS61107E_CN 第 21-33 页

PIC32MX 系列参考手册 21.13 中断 21.14 I/O 引脚控制 UART 能够产生一些中断, 反映在数据通信期间发生的事件 它可以产生以下类型的中断 : 接收器数据可用中断, 通过 UxRXIF 指示 该事件根据 RXISEL<1:0> (UxSTA<7:6>) 控制位的值而产生 详情请参见第 21.6.3 节 接收中断 发送器缓冲区为空中断, 通过 UxTXIF 指示 该事件根据 UTXISEL<1:0>(UxSTA<15:14>) 控制位的值而产生 详情请参见第 21.5.2 节 发送中断 UART 错误中断, 通过 UxEIF 指示 - 该事件在发生以下任意错误条件时产生 : 检测到奇偶校验错误 PERR (UxSTA<3>) 检测到帧错误 FERR (UxSTA<2>) 发生接收缓冲区溢出条件 OERR (UxSTA<1>) 所有这些中断标志必须用软件清零 更多信息, 请参见第 21.5.2 节 发送中断 和第 21.6.3 节 接收中断 UART 器件通过以下相应的 UART 中断允许位使能为中断源 : UxRXIE UxTXIE UxEIE 此外, 还必须配置中断优先级位和中断子优先级位 : UxIP (IPC6<4:2>) 和 UxIS (IPC6<1:0>) 关于优先级位和子优先级位的详细信息, 请参见第 8 章 中断 (DS61108) 通过将 ON 位 (UxMODE<15>) UTXEN 位 (UxSTA<10>) 和 URXEN 位 (UxSTA<12>) 置 1 使能 UART 模块时, UART 模块将按照 UEN<1:0> (UxMODE<9:8>) 位的定义控制 I/O 引脚, 改写端口 TRIS 和 LATCH 寄存器位设置 UxTX 会被强制设为输出,UxRX 设为输入 此外, 如果使能了 UxCTS 和 UxRTS,UxCTS 引脚将被强制设为输入, 而 UxRTS/BLCKx 引脚则用作 UxRTS 输出 如果使能了 BLCKx, 则 UxRTS/BLCKx 输出会驱动 16x 波特率输出 DS61107E_CN 第 21-34 页 2010 Microchip Technology Inc.

21.15 节能和调试模式下的 UART 操作 21.15.1 休眠模式下的操作 第 21 章 UART 当器件进入 Sleep ( 休眠 ) 模式时, 系统时钟被禁止 UART 在 Sleep ( 休眠 ) 模式下不工作 如果在发送过程中进入 Sleep ( 休眠 ) 模式, 则发送会被中止, UxTX 引脚被驱动为逻辑 1 类似地, 如果在接收过程中进入 Sleep( 休眠 ) 模式, 接收会被中止 RTS 和 BCLK 引脚会被驱动为 0 ( 可选 ) UART 模块可用于在检测到启动位时将 PIC32MX 器件从 Sleep ( 休眠 ) 模式唤醒 如果 WAKE 位 (UxMODE<7>) 在器件进入 Sleep ( 休眠 ) 模式之前置 1, 并且允许 UART 接收中断 (UxRXIE = 1), 则 UxRX 引脚上的下降沿会产生接收中断并唤醒器件 接收中断选择模式位 (RXISEL) 对该功能没有影响 只有 ON (UxMODE<15>) 位置 1 时, 才会产生唤醒中断 21 UART 21.15.2 空闲模式下的操作 当器件进入 Idle ( 空闲 ) 模式时, 系统时钟源保持工作, 但 CPU 停止执行代码 SIDL 位 (UxMODE<13>) 用于选择在器件进入 Idle( 空闲 ) 模式时,UART 模块是停止工作还是继续正常工作 如果 SIDL = 1, 则模块在 Idle ( 空闲 ) 模式下停止工作 模块在 Idle ( 空闲 ) 模式下停止工作时 (SIDL = 1) 执行与在 Sleep ( 休眠 ) 模式下相同的过程 如果 SIDL = 0, 则模块在 Idle ( 空闲 ) 模式下继续工作 21.15.3 调试模式下的操作 FRZ 位 (UxMODE<14>) 决定 CPU 在 Debug ( 调试 ) 模式下执行调试异常代码 ( 即, 应用程序暂停 ) 时, UART 模块是继续运行还是停止 具体地说, FRZ 位会以以下形式影响操作 : 当 FRZ = 1 且应用程序在 Debug ( 调试 ) 模式下暂停时, 模块会冻结其操作, 并且不会更改 UART 模块的状态 在应用程序继续开始执行代码之后, 模块将继续工作 如果 FRZ = 0, 则在 Debug ( 调试 ) 模式下, 即使应用程序暂停, 模块也会继续工作 注 : 只有 CPU 在调试异常模式下执行时,FRZ 位才可读写 在所有其他模式下,FRZ 位读为 0 如果 FRZ 位在 Debug ( 调试 ) 模式期间发生改变, 则只有退出当前调试异常模式并重新进入该模式之后, 新值才会生效 在调试异常模式期间, 在进入 Debug ( 调试 ) 模式时 FRZ 位会读取外设状态 2010 Microchip Technology Inc. DS61107E_CN 第 21-35 页

PIC32MX 系列参考手册 21.15.4 同步间隔字符自动唤醒 自动唤醒功能通过 WAKE 位 (UxMODE<7>) 来使能 当 WAKE 有效时, 将禁止 UxRX 上的典型接收序列 发生唤醒事件之后, 模块会产生 UxRXIF 中断 请注意,LPBACK 位 (UxMODE<6>) 必须等于 0 时唤醒功能才有效 唤醒事件是指 UxRX 线上发生高电平到低电平的跳变 这刚好与同步间隔字符或 LIN 协议唤醒信号字符的启动条件一致 当 WAKE 有效时, 无论 CPU 模式如何, 都会对 UxRX 线进行监视 在正常用户模式下, UxRXIF 中断将与 Q 时钟同步产生 ; 在模块因 Sleep ( 休眠 ) 或 Idle ( 空闲 ) 模式而被禁止时, 中断则异步产生 为了确保不会丢失任何实际数据, 应在进入 Sleep ( 休眠 ) 模式之前和当 UART 模块处于 Idle ( 空闲 ) 模式时将 WAKE 位置 1 发生唤醒事件之后, 当 UxRX 线上出现低电平到高电平的跳变时, WAKE 位自动清零 此时, UART 模块将从 Idle ( 空闲 ) 模式返回到正常工作模式 这向用户指示同步间隔事件结束 如果用户应用程序在序列完成之前清零 WAKE 位, 则可能导致意外的模块行为 唤醒事件会通过将 UxRXIF 位置 1 产生一个接收中断 对于该功能, 接收中断选择模式位 RXISEL<1:0> (UxSTA<7:6>) 被忽略 如果允许 UxRXIF 中断, 这会唤醒器件 注 : 同步间隔 ( 或唤醒信号 ) 字符必须足够长, 以便使选定振荡器有时间起振并确保 UART 正确初始化 为了确保器件及时唤醒, 用户应读取 WAKE 位的值 如果该位清零, 则说明 UART 可能未能及时准备就绪以接收下一个字符, 可能需要将模块与总线重新同步 图 21-18: 正常工作模式下的自动唤醒位 (WAKE) 时序 OSC1 WAKE 位 (1) UxRX UxRXIF 由用户置 1 自动清零 注 1: 当 WAKE 位有效时, UART 状态机保持在空闲模式下 图 21-19: 休眠模式下的自动唤醒位 (WAKE) 时序 OSC1 WAKE 位 (2) UxRX UxRXIF 休眠 由用户置 1 (1) 自动清零 注 1: 如果唤醒事件需要较长的振荡器预热时间, 在系统时钟仍然有效时会发生 WAKE 位自动清零 该时序与 Q 时钟出现与否无关 2: 当 WAKE 位有效时, UART 状态机保持在空闲模式下 DS61107E_CN 第 21-36 页 2010 Microchip Technology Inc.

21.16 各种复位的影响 21.16.1 器件复位 在发生器件复位时, 所有 UART 寄存器会被强制设为它们的复位状态 21.16.2 上电复位在发生上电复位 (POR) 时, 所有 UART 寄存器会被强制设为它们的复位状态 第 21 章 UART 21 UART 21.17 设计技巧 21.16.3 看门狗复位 在发生看门狗复位时, 所有 UART 寄存器保持不变 问 1: 我用 UART 发送的数据不能正确接收 这是什么原因? 答 1: 接收错误的最常见的原因是为 UART 波特率发生器计算了一个错误的值 确保写入 UxBRG 寄存器的值是正确的 问 2: 尽管 UART 接收引脚上的信号看上去是正确的, 但还是出现了帧错误 可能是什么原因? 答 2: 确保以下控制位已正确设置 : BRGH (UxBRG<15:0), 波特率分频比位 PDSEL (UxMODE<1:0>), 奇偶校验和数据选择位 STSEL (UxMODE<0>), 停止选择位 2010 Microchip Technology Inc. DS61107E_CN 第 21-37 页

PIC32MX 系列参考手册 21.18 相关应用笔记 本节列出了与手册本章内容相关的应用笔记 这些应用笔记可能并不是专为 PIC32MX 器件系列而编写的, 但其概念是相近的, 通过适当修改并受到一定限制即可使用 当前与 UART 模块相关的应用笔记有 : 标题目前没有相关的应用笔记 应用笔记编号 N/A 注 : 如需获取更多 PIC32MX 器件系列的应用笔记和代码示例, 请访问 Microchip 网站 (www.microchip.com) DS61107E_CN 第 21-38 页 2010 Microchip Technology Inc.

21.19 版本历史 版本 A (2007 年 8 月 ) 这是本文档的初始版本 版本 B (2007 年 10 月 ) 更新了文档 ( 删除了 机密 状态 ) 版本 C (2008 年 4 月 ) 第 21 章 UART 将状态修改为 初稿 ; 将 U-0 修改为 r-x ; 修改了寄存器 21-1 的 bit 10 ; 修改了表 21-1 的 IEC1 ; 修改了寄存器 21-16 的 bit 25 ; 修改了寄存器 21-18 的 bit 25 ; 修改了位名称 版本 D (2008 年 6 月 ) 修改了第 21.1 节 ; 在寄存器 21-15 至 21-20 中增加了脚注编号 ; 将保留位从 保持为 更改为 写入 ; 为 ON 位 (UxMODE 寄存器 ) 增加了注释 21 UART 版本 E (2009 年 11 月 ) 该版本包括以下更改 : 在第 21.1 节 简介 中, 更新了 UART 模块特性, 以说明哪些 UART 模块对于特定特性可用 更新了图 21-1 中的 注 1 更新了第 21.2 节 控制寄存器 中的寄存器介绍 将所有出现的 UTXISEL0 更改为 UTXISEL UART 寄存器汇总 ( 表 21-1) - 删除了对 IFS0 IFS1 IEC0 IEC1 IPC6 和 IPC8 寄存器的引用 - 增加了 地址偏移 栏 - 增加了介绍清零 置 1 和取反寄存器的 注 1 注 2 和 注 3 - 增加了关于位可用性的 注 4 在以下寄存器中增加了介绍清零 置 1 和取反寄存器的注释 : - UxMODE - UxSTA - UxBRG 更新了 UxMODe:UART x 模式寄存器 中的 注 4 ( 寄存器 21-1) 更新了 UxSTA:UARTx 状态和控制寄存器 中的 注 4 以及 UTXISEL<1:0> 和 URXISEL<1:0> 位定义 ( 寄存器 21-2) 更新了第 21.3.2 节 BCLKx 输出 中的阴影注释 更新了第 21.4.1 节 使能 UART 中的段落 更新了第 21.4.2 节 禁止 UART 中的第二段 更新了 UART 发送器框图 ( 图 21-3) 更新了第 21.5 节 UART 发送器 中的第三段 更新了第 21.5.1 节 发送缓冲区 (UxTXREG) 中的第一段和阴影注释 在第 21.5.2 节 发送中断 中, 删除了 3 步骤过程和阴影注释, 并新增了两个段落 在第 21.5.3 节 设置 UART 发送 中, 调换了步骤 4 和 5, 更新了步骤 6, 并删除了阴影注释 更新了第 21.5.4 节 间隔字符的发送 在第 21.5.5 节 间隔和同步发送序列 中增加了新的步骤 2 删除了图 21-4 和图 21-5 更新了第 21.6 节 UART 接收器 中的第一段, 并删除了第二段 更新了第 21.6.2 节 接收器错误处理 中的第三段和第四段 在第 21.6.3 节 接收中断 中第一段后面新增了两个段落 更新了 UART 接收器框图 ( 图 21-5) 2010 Microchip Technology Inc. DS61107E_CN 第 21-39 页

PIC32MX 系列参考手册 版本 E (2009 年 11 月 )( 续 ) 更改了第 21.8 节 接收间隔字符序列 的标题, 原标题为 接收的间隔字符 更新了 环回模式引脚功能 表中的 注 2 ( 表 21-3) 更新了第 21.11 节 UxCTS 和 UxRTS 控制引脚的操作 和第 21.12 节 红外支持 中的阴影注释 删除了图 21-8 和图 21-9 更新了第 21.13 节 中断 删除了第 21.13.1 节 中断配置 更改了第 21.15.2 节 空闲模式下的操作 的标题, 原标题为 休眠模式下的操作, 并更正了对于 Sleep ( 休眠 ) 模式的错误引用, 将它们更改为 Idle ( 空闲 ) 模式 删除了表 21-5 DS61107E_CN 第 21-40 页 2010 Microchip Technology Inc.

请注意以下有关 Microchip 器件代码保护功能的要点 : Microchip 的产品均达到 Microchip 数据手册中所述的技术指标 Microchip 确信 : 在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一 目前, 仍存在着恶意 甚至是非法破坏代码保护功能的行为 就我们所知, 所有这些行为都不是以 Microchip 数据手册中规定的操作规范来使用 Microchip 产品的 这样做的人极可能侵犯了知识产权 Microchip 愿与那些注重代码完整性的客户合作 Microchip 或任何其他半导体厂商均无法保证其代码的安全性 代码保护并不意味着我们保证产品是 牢不可破 的 代码保护功能处于持续发展中 Microchip 承诺将不断改进产品的代码保护功能 任何试图破坏 Microchip 代码保护功能的行为均可视为违反了 数字器件千年版权法案 (Digital Millennium Copyright Act) 如果这种行为导致他人在未经授权的情况下, 能访问您的软件或其他受版权保护的成果, 您有权依据该法案提起诉讼, 从而制止这种行为 提供本文档的中文版本仅为了便于理解 请勿忽视文档中包含的英文部分, 因为其中提供了有关 Microchip 产品性能和使用情况的有用信息 Microchip Technology Inc. 及其分公司和相关公司 各级主管与员工及事务代理机构对译文中可能存在的任何差错不承担任何责任 建议参考 Microchip Technology Inc. 的英文原版文档 本出版物中所述的器件应用信息及其他类似内容仅为您提供便利, 它们可能由更新之信息所替代 确保应用符合技术规范, 是您自身应负的责任 Microchip 对这些信息不作任何明示或暗示 书面或口头 法定或其他形式的声明或担保, 包括但不限于针对其使用情况 质量 性能 适销性或特定用途的适用性的声明或担保 Microchip 对因这些信息及使用这些信息而引起的后果不承担任何责任 如果将 Microchip 器件用于生命维持和 / 或生命安全应用, 一切风险由买方自负 买方同意在由此引发任何一切伤害 索赔 诉讼或费用时, 会维护和保障 Microchip 免于承担法律责任, 并加以赔偿 在 Microchip 知识产权保护下, 不得暗中或以其他方式转让任何许可证 商标 Microchip 的名称和徽标组合 Microchip 徽标 dspic KEELOQ KEELOQ 徽标 MPLAB PIC PICmicro PICSTART PIC 32 徽标 rfpic 和 UNI/O 均为 Microchip Technology Inc. 在美国和其他国家或地区的注册商标 FilterLab Hampshire HI-TECH C Linear Active Thermistor MXDEV MXLAB SEEVAL 和 The Embedded Control Solutions Company 均为 Microchip Technology Inc. 在美国的注册商标 Analog-for-the-Digital Age Application Maestro CodeGuard dspicdem dspicdem.net dspicworks dsspeak ECAN ECONOMONITOR FanSense HI-TIDE In-Circuit Serial Programming ICSP Mindi MiWi MPASM MPLAB Certified 徽标 MPLIB MPLINK mtouch Omniscient Code Generation PICC PICC-18 PICDEM PICDEM.net PICkit PICtail REAL ICE rflab Select Mode Total Endurance TSHARC UniWinDriver WiperLock 和 ZENA 均为 Microchip Technology Inc. 在美国和其他国家或地区的商标 SQTP 是 Microchip Technology Inc. 在美国的服务标记 在此提及的所有其他商标均为各持有公司所有 2010, Microchip Technology Inc. 版权所有 ISBN:978-1-60932-521-3 Microchip 位于美国亚利桑那州 Chandler 和 Tempe 与位于俄勒冈州 Gresham 的全球总部 设计和晶圆生产厂及位于美国加利福尼亚州和印度的设计中心均通过了 ISO/TS-16949:2002 认证 公司在 PIC MCU 与 dspic DSC KEELOQ 跳码器件 串行 EEPROM 单片机外设 非易失性存储器和模拟产品方面的质量体系流程均符合 ISO/TS- 16949:2002 此外, Microchip 在开发系统的设计和生产方面的质量体系也已通过了 ISO 9001:2000 认证 2010 Microchip Technology Inc. DS61107E_CN 第 21-41 页

全球销售及服务网点 美洲 亚太地区 亚太地区 欧洲 公司总部 Corporate Office 2355 West Chandler Blvd. Chandler, AZ 85224-6199 Tel: 1-480-792-7200 Fax: 1-480-792-7277 技术支持 : http://support.microchip.com 网址 :www.microchip.com 亚特兰大 Atlanta Duluth, GA Tel: 1-678-957-9614 Fax: 1-678-957-1455 波士顿 Boston Westborough, MA Tel: 1-774-760-0087 Fax: 1-774-760-0088 芝加哥 Chicago Itasca, IL Tel: 1-630-285-0071 Fax: 1-630-285-0075 克里夫兰 Cleveland Independence, OH Tel: 1-216-447-0464 Fax: 1-216-447-0643 达拉斯 Dallas Addison, TX Tel: 1-972-818-7423 Fax: 1-972-818-2924 底特律 Detroit Farmington Hills, MI Tel: 1-248-538-2250 Fax: 1-248-538-2260 科科莫 Kokomo Kokomo, IN Tel: 1-765-864-8360 Fax: 1-765-864-8387 洛杉矶 Los Angeles Mission Viejo, CA Tel: 1-949-462-9523 Fax: 1-949-462-9608 圣克拉拉 Santa Clara Santa Clara, CA Tel: 1-408-961-6444 Fax: 1-408-961-6445 亚太总部 Asia Pacific Office Suites 3707-14, 37th Floor Tower 6, The Gateway Harbour City, Kowloon Hong Kong Tel: 852-2401-1200 Fax: 852-2401-3431 中国 - 北京 Tel: 86-10-8528-2100 Fax: 86-10-8528-2104 中国 - 成都 Tel: 86-28-8665-5511 Fax: 86-28-8665-7889 中国 - 重庆 Tel: 86-23-8980-9588 Fax: 86-23-8980-9500 中国 - 香港特别行政区 Tel: 852-2401-1200 Fax: 852-2401-3431 中国 - 南京 Tel: 86-25-8473-2460 Fax: 86-25-8473-2470 中国 - 青岛 Tel: 86-532-8502-7355 Fax: 86-532-8502-7205 中国 - 上海 Tel: 86-21-5407-5533 Fax: 86-21-5407-5066 中国 - 沈阳 Tel: 86-24-2334-2829 Fax: 86-24-2334-2393 中国 - 深圳 Tel: 86-755-8203-2660 Fax: 86-755-8203-1760 中国 - 武汉 Tel: 86-27-5980-5300 Fax: 86-27-5980-5118 中国 - 西安 Tel: 86-29-8833-7252 Fax: 86-29-8833-7256 中国 - 厦门 Tel: 86-592-238-8138 Fax: 86-592-238-8130 台湾地区 - 新竹 Tel: 886-3-6578-300 Fax: 886-3-6578-370 澳大利亚 Australia - Sydney Tel: 61-2-9868-6733 Fax: 61-2-9868-6755 印度 India - Bangalore Tel: 91-80-3090-4444 Fax: 91-80-3090-4123 印度 India - New Delhi Tel: 91-11-4160-8631 Fax: 91-11-4160-8632 印度 India - Pune Tel: 91-20-2566-1512 Fax: 91-20-2566-1513 日本 Japan - Yokohama Tel: 81-45-471-6166 Fax: 81-45-471-6122 韩国 Korea - Daegu Tel: 82-53-744-4301 Fax: 82-53-744-4302 韩国 Korea - Seoul Tel: 82-2-554-7200 Fax: 82-2-558-5932 或 82-2-558-5934 马来西亚 Malaysia - Kuala Lumpur Tel: 60-3-6201-9857 Fax: 60-3-6201-9859 马来西亚 Malaysia - Penang Tel: 60-4-227-8870 Fax: 60-4-227-4068 菲律宾 Philippines - Manila Tel: 63-2-634-9065 Fax: 63-2-634-9069 新加坡 Singapore Tel: 65-6334-8870 Fax: 65-6334-8850 泰国 Thailand - Bangkok Tel: 66-2-694-1351 Fax: 66-2-694-1350 奥地利 Austria - Wels Tel: 43-7242-2244-39 Fax: 43-7242-2244-393 丹麦 Denmark-Copenhagen Tel: 45-4450-2828 Fax: 45-4485-2829 法国 France - Paris Tel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79 德国 Germany - Munich Tel: 49-89-627-144-0 Fax: 49-89-627-144-44 意大利 Italy - Milan Tel: 39-0331-742611 Fax: 39-0331-466781 荷兰 Netherlands - Drunen Tel: 31-416-690399 Fax: 31-416-690340 西班牙 Spain - Madrid Tel: 34-91-708-08-90 Fax: 34-91-708-08-91 英国 UK - Wokingham Tel: 44-118-921-5869 Fax: 44-118-921-5820 加拿大多伦多 Toronto Mississauga, Ontario, Canada Tel: 1-905-673-0699 Fax: 1-905-673-6509 中国 - 珠海 Tel: 86-756-321-0040 Fax: 86-756-321-0049 台湾地区 - 高雄 Tel: 886-7-213-7830 Fax: 886-7-330-9305 台湾地区 - 台北 Tel: 886-2-2500-6610 Fax: 886-2-2508-0102 07/15/10 DS61107E_CN 第 21-42 页 2010 Microchip Technology Inc.