32位单片机知识讲解:Microchip PIC32系列(四)
UART 使用标准的不归零(Non-Return-to-Zero,NRZ)格式(1 个启动位、8 或9 个数据位和1 或2 个停止位)。硬件提供奇偶校验,可由用户配置为偶校验、奇校验或无奇偶校验。最普通的数据格式是8 位,无奇偶校验,有1 个停止位(用8, N, 1 表示),这是默认的上电复位(Power-onReset, POR)设置。数据位数、停止位数以及奇偶校验均在PDSEL1:0> (UxMODE2:1>)和STSEL (UxMODE0>)位中指定。UART 首先发送和接收最低有效位(Least Significant bit,LSb)。UART 的发送器和接收器在功能上是独立的,但使用相同的数据格式和波特率。
使能UART通过将ON位(UxMODE15>)置1 来使能UART 模块。此外,通过将UTXEN 位(UxSTA10>)和URXEN 位(UxSTA12>)置1 来分别使能UART 发送器和接收器。一旦将这些使能位置1,UxTX 和UxRX 引脚就分别被配置为输出和输入,改写对应I/O 端口引脚的TRISx 和PORTx 寄存器位设置。
禁止UART
通过清零ON 位来禁止UART 模块。这是任何复位后的默认状态。如果禁止了UART,所有UART引脚在PORTx 和TRISx 寄存器中的相应位控制下用作端口引脚。禁止UART 模块会将缓冲区复位为空状态。当禁止模块时,缓冲区中的所有数据都将丢失。当禁止UART 模块时,所有与之相关的错误和状态标志都将复位。UxSTA 寄存器中的RXDA、OERR、FERR、PERR、UTXEN、URXEN、UTXBRK 和UTXBF 位被清零,而RIDLE 和TRMT位被置1。其他控制位(包括ADDEN、RXISEL1:0> 和UTXISEL)以及UxMODE 和UxBRG寄存器均不受影响。当UART 模块处于活动状态时,清零ON 位将中止所有等待的发送和接收,同时如以上所述那样将模块复位。重新使能UART 将使用同样的配置重新启动UART 模块。
UART 发送器
图给出了UART 发送器框图。发送器的核心是发送移位寄存器(UxTSR)。UxTSR 从发送FIFO 缓冲区UxTXREG 中获取数据。通过软件将数据装入UxTXREG 寄存器。在前一次装入数据的停止位发送之前,不会向UxTSR 寄存器装入新数据。一旦停止位发送完毕,就会将UxTXREG 寄存器中的新数据(如果有)装入UxTSR。
UART 发送器框图
通过将UTXEN 使能位(UxSTA10>)置1 来使能发送。实际的发送要到UxTXREG 寄存器装入了数据并且波特率发生器UxBRG 产生了移位时钟(图21-3)之后才发生。也可以先装入UxTXREG 寄存器,然后将UTXEN 使能位置1 来启动发送。通常,第一次开始发送的时候,由于UxTSR 寄存器为空,这样传输数据到UxTXREG 寄存器会导致该数据立即传输到UxTSR。发送期间清零UTXEN 位将中止发送并复位发送器。因此, UxTX 引脚将恢复到UTXINV 位(UxSTA13>)定义的状态。若要选择9 位发送, PDSEL1:0> 位(UxMODE2:1>)应设置为11。
PIC32单片机存储器构成
PIC32MX 单片机提供4 GB 的统一虚拟存储地址空间。所有存储区(包括程序存储器、数据存储器、SFR 和配置寄存器)都位于该地址空间中各自的唯一地址范围内。程序存储器和数据存储器可以选择划分为用户存储器和内核存储器。此外,数据存储器可以是可执行存储器,允许PIC32MX 器件从数据存储器执行。
PIC32MX 存储器构成的主要特性包括:
? 32 位固有数据宽度
? 独立的用户模式地址空间和内核模式地址空间
? 灵活的程序闪存存储器分区
? 数据RAM 可灵活地分为数据空间和程序空间
? 受保护代码的独立引导闪存
? 强大的总线异常处理功能,阻止代码跑飞
? 简单的存储器映射(通过使用固定映射转换(Fixed Mapping Translation, FMT)单元)
? 可高速缓存的地址区和不可高速缓存的地址区
控制寄存器
本节列出了用于为数据和代码设置RAM 和闪存分区的特殊功能寄存器(Special Function
Register, SFR)(对于用户模式和内核模式)。
以下是可用SFR 的列表:
? BMXCON:配置寄存器
? BMXxxxBA:存储器分区基址寄存器
? BMXDRMSZ:数据RAM 大小寄存器
? BMXPFMSZ:程序闪存大小寄存器
? BMXBOOTSZ:引导闪存大小寄存器
BMXCON 寄存器
该寄存器用于配置DMA 访问的程序闪存高速缓存功能、总线错误异常、数据RAM 等待状态和仲裁模式。
BMXxxxBA 寄存器
这些寄存器用于配置内核模式、用户模式数据和用户模式程序空间在RAM 中的相对基址。
BMXDRMSZ 寄存器
该只读寄存器用于标识数据RAM 的大小(以字节为单位)。
BMXPFMSZ 寄存器
该只读寄存器用于标识程序闪存存储器的大小(以字节为单位)。
BMXBOOTSZ 寄存器
该只读寄存器用于标识引导闪存存储器的大小(以字节为单位)。
表简要汇总了所有与存储器构成相关的寄存器。该汇总表之后列出了相应的寄存器,并且每个寄存器均附有详细的说明。
存储器构成SFR
- 8位MCU如何升级至32位MCU (10-07)
- 最详尽32位MCU低功耗设计考量与经典范例参考(三)(12-14)
- 最详尽32位MCU低功耗设计考量与经典范例参考(一)(12-14)
- 最详尽32位MCU低功耗设计考量与经典范例参考(二)(12-14)
- 低价32位MCU大军压境,8位ASIC MCU看涨(12-14)
- 32位元MCU功耗再降(09-28)