• 沒有找到結果。

存储器构成

在文檔中 的 64/80/100 引脚 (頁 33-57)

作为哈佛架构器件,PIC24F 单片机具有独立的程序和 数据存储空间以及总线。这一架构同时还允许在代码执 行过程中从数据空间直接访问程序存储器。

3.1 程序地址空间

PIC24FJ256GB110 系列器件的程序地址存储空间可存 储4M 个指令字。可通过由程序执行过程中 23 位程序计

数器 (PC)和第 3.3 节 “程序存储空间与数据存储空 间的接口”中所述的表操作或数据空间重映射得到的24 位值寻址这一空间。

用户只能访问程序存储空间的低半地址部分(地址范围 为000000h 至 7FFFFFh)。使用

TBLRD/TBLWT

指令 时,情况有所不同,这两条指令采用TBLPAG<7> 以允 许访问配置存储空间中的配置位和器件ID。

图3-1 给出了 PIC24FJ256GB110 系列器件的存储器映 射。

3-1: PIC24FJ256GB110 系列器件的程序存储空间映射

000000h

0000FEh 000002h

000100h

F8000Eh F80010h

FEFFFEh

FFFFFFh 000004h

000200h 0001FEh 000104h 复位地址

DEVID (2) GOTO指令

保留 备用向量表

保留 中断向量表 PIC24FJ128GB1XX

配置存储空间用户存储空间

闪存配置字

注: 存储器区域未按比例显示。

复位地址

器件配置寄存器

DEVID (2) GOTO指令

保留 备用向量表

保留 中断向量表 PIC24FJ192GB1XX

FF0000h F7FFFEh F80000h 器件配置寄存器

800000h 7FFFFFh

保留

保留 闪存配置字

02AC00h 02ABFEh 未实现

读为0

未实现 读为0

复位地址

器件配置寄存器 用户闪存 程序存储器

(87K 指令字)

DEVID (2) GOTO指令

保留 备用向量表

保留 中断向量表 PIC24FJ256GB1XX

保留 闪存配置字

未实现 读为0 复位地址

DEVID (2) GOTO指令

保留 备用向量表

保留 中断向量表 PIC24FJ64GB1XX

闪存配置字

器件配置寄存器

保留 未实现 读为0

015800h 0157FEh 00AC00h 00ABFEh 用户闪存

程序存储器

(22K 指令字)

020C00h 020BFEh 用户闪存

程序存储器

(67K 指令字)

用户闪存 程序存储器

(44K 指令字)

PIC24FJ256GB110 系列

DS39897B_CN 第 32 页

初稿

 2009 Microchip Technology Inc.

3.1.1 程序存储器构成

程序存储空间由可字寻址的块构成。虽然它被视为24位 宽,但将程序存储器的每个地址视作一个低位字和一个 高位字的组合更加合理,其中高位字的高字节部分没有 实现。低位字的地址始终为偶数,而高位字的地址为奇 数 (图3-2)。

程序存储器地址始终在低位字处按字对齐,并且在代码 执行过程中地址将递增或递减 2。这种寻址模式与数据 存储空间寻址兼容,且为访问程序存储空间中的数据提 供了可能。

3.1.2 存储器硬编码向量

所有PIC24F 器件中从 00000h 到 000200h 之间的地址 空间都是保留的,用来存储硬编码的程序执行向量。提 供了一个硬件复位向量将代码执行从器件复位时PC 的 默 认 值 重 新 定 位 到 代 码 实 际 起 始 处。用 户 可 在 地 址 000000h 处编写一条

GOTO

指令以将代码的实际起始地 址设置为000002h。

PIC24F 器件也具有两个中断向量表,地址分别为从 000004h 到 0000FFh 和 000100h 到 0001FFh。这两个 向量表允许使用不同的ISR 处理每个器件中断源。关于 中断向量表更详细的讨论,请参见第

6.1 节 “中断向量

表”。

3.1.3 闪存配置字

在 PIC24FJ256GB110 系列器件中,保留片上程序存 储器顶部的3 个字来保存配置信息。器件复位时,该配 置 信 息 被 复 制 到 相 应 的 配 置 寄 存 器 中。

PIC24FJ256GB110 系列器件的闪存配置字的地址如 表3-1 所示。图 3-1 给出了闪存配置字以及其他存储器 向量在存储器映射中的位置。

程序存储器中的配置字为紧凑格式。实际的配置位被 映射到配置存储空间中的几个不同寄存器中。它们在 闪存配置字中的顺序并不反映在配置空间中的对应排 列。第

25.1 节 “配置位”中提供了有关器件配置字的

更多详细信息。

3-1: PIC24FJ256GB110 系列器件的

闪存配置字

3-2:

程序存储器构成

器件 程序存储器

(字数) 配置字地址

PIC24FJ64GB 22,016 00ABFAh:

00ABFEh PIC24FJ128GB 44,032 0157FAh:

0157FEh PIC24FJ192GB 67,072 020BFAh:

020BFEh PIC24FJ256GB 87,552 02ABFAh:

02ABFEh

0 8

16

PC 地址

000000h 000002h 000004h 000006h 23

00000000 00000000

00000000 00000000

程序存储器

“虚拟”字节

(读为

0)

最低有效字 最高有效字

指令宽度 000001h

000003h 000005h 000007h MSW

地址 (LSW 地址)

 2009 Microchip Technology Inc.

初稿

DS39897B_CN 第 33 页

PIC24FJ256GB110 系列

3.2 数据地址空间

PIC24F 内核具有独立的 16 位宽数据存储空间,可将 其 作 为 一个 线 性 空 间 寻 址。使 用 两 个 地 址 发 生 单元

(Address Generation Unit, AGU)对数据空间进行 寻址,分别用于读操作和写操作。数据存储空间映射如 图3-3 所示。

数据存储空间中的所有有效地址 (Effective Addresse,

EA)均为 16 位宽,并且指向数据空间内的字节。这使 数据空间的地址范围为64 KB 即 32K 字。数据存储空间 的低半地址部分 (即当EA<15> = 0时)用作实现的存 储单元,而高半地址部分(EA<15> = 1)则保留为程序 空间可视性区域 (见第

3.3.3 节 “使用程序空间可视性

读程序存储器中的数据”)。

PIC24FJ256GB110 系列器件共实现了 16 KB 的数据存 储空间。如果EA 指向了该区域以外的存储单元,则将 返回一个全零的字或字节。

3.2.1 数据空间宽度

数据存储空间组织为可字节寻址的16 位宽的块。在数 据存储器和寄存器中的数据是以 16 位字为单位对齐 的,但所有数据空间EA 都将解析为字节。每个字的低 字节(Least Significant Byte,LSB)部分具有偶地址,

而高字节 (Most Significant Byte, MSB)部分则具有 奇地址。

3-3: PIC24FJ256GB110 系列器件的数据存储空间映射

0000h 07FEh

FFFEh LSB LSB 地址

MSB MSB 地址 0001h 07FFh

1FFFh

FFFFh

8001h 8000h

7FFFh

0801h 0800h

2001h

Near 数据空间 1FFEh

SFR 空间 SFR

数据RAM 2000h

7FFFh

程序空间 可视性区域

注: 数据存储器区域未按比例显示。

47FEh 4800h 47FFh

4801h

空间

已实现的 数据RAM

未实现 读为

0

PIC24FJ256GB110 系列

DS39897B_CN 第 34 页

初稿

 2009 Microchip Technology Inc.

3.2.2 数据存储器构成和对齐方式

为维持与PIC®器件的后向兼容性和提高数据存储空间 的使用效率,PIC24F 指令集同时支持字和字节操作。

字节访问会在内部对按字对齐的存储空间的所有有效地 址进行计算调整。例如,对于执行后修改寄存器间接寻 址模式[Ws++] 的结果,字节操作时,内核将其识别为 值Ws + 1,而字操作时,内核将其识别为值 Ws + 2。

使用任何EA 的 LSb 来确定要选取的字节,数据字节读 取将读取包含字节的整个字。选定的字节被放在数据总 线的LSB 处。这就是说,数据存储器和寄存器被组织为 两个并行的字节宽的实体,它们共享 (字)地址译码,

但写入线独立。数据字节写操作只写阵列或寄存器中与 字节地址匹配的那一侧。

所有字访问必须按偶地址对齐。不支持不对齐的字数据 取操作,所以在混合字节和字操作时,或者从8 位 MCU 代码移植时,必须要小心。如果试图进行不对齐的读或 写操作,将产生地址错误陷阱。如果在读操作时产生错 误,正在执行的指令将完成;而如果在写操作时产生错 误,指令仍将执行,但不会进行写入。无论是哪种情况,

都会产生陷阱,从而系统和/ 或用户能够检查地址错误 发生之前的机器状态。

所有装入W 寄存器的字节都将装入 W 寄存器的低字节

(LSB), W 寄存器的高字节 (MSB)不变。

提供了一条符号扩展 (SE)指令,允许用户把 8 位有 符号数据转换为16 位有符号值。或者,对于 16 位无符 号数据,用户可以通过在适当地址处执行一条零扩展

(ZE)指令清零任何W 寄存器的 MSB。

尽管大多数指令能够对字或字节大小的数据进行操作,

但要注意的是,部分指令只对字大小的数据进行操作。

3.2.3 NEAR 数据空间

在0000h 和 1FFFh 之间的 8 KB 的区域被称为 near 数 据空间。可以使用所有存储器直接寻址指令中的13 位 绝对地址字段直接寻址这一空间中的存储单元。可以间 接寻址数据空间的其余部分。此外,还可以使用

MOV

指 令寻址整个数据空间,支持使用 16 位地址字段的存储 器直接寻址模式。

3.2.4 SFR 空间

Near数据空间的前2 KB存储单元(从0000h到07FFh)

主要被特殊功能寄存器 (Special Function Register,

SFR)占用。 PIC24F 内核和外设模块使用这些寄存器 来控制器件的工作。

SFR 分布在受其控制的模块中,通常一个模块会使用一 组SFR。大部分 SFR 空间包含未用的地址单元,它们 读为

0

。显示实际实现的SFR 位置的 SFR 空间图表如 表3-2 所示。每个已实现区域指示至少有一个地址被实 现为SFR 的 32 字节区域。表 3-3 到表 3-30 给出了已 实现SFR 的完整列表 (包括它们的地址)。

3-2: SFR 数据空间的已实现区域

SFR 空间地址

xx00 xx20 xx40 xx60 xx80 xxA0 xxC0 xxE0

000h

内核 ICN 中断 —

100h

定时器 捕捉 比较

200h

I2C™ UART SPI/UART SPI/I2C SPI UART I/O

300h

A/D A/D/CTMU — — — — — —

400h

— — — — USB —

500h

— — — — — — — —

600h

PMP RTC/ 比较 CRC — PPS —

700h

— — 系统 NVM/PMD — — — —

图注: — = 此存储块中未实现的 SFR

 2009 Microchip Technology Inc.

初稿

DS39897B_CN 第35页

PIC24FJ256GB1 10 系列

3-3: CPU 内核寄存器映射

寄存器

名称 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

所有复 位时的 状态

WREG0 0000 工作寄存器0 0000

WREG1 0002 工作寄存器1 0000

WREG2 0004 工作寄存器2 0000

WREG3 0006 工作寄存器3 0000

WREG4 0008 工作寄存器4 0000

WREG5 000A 工作寄存器5 0000

WREG6 000C 工作寄存器6 0000

WREG7 000E 工作寄存器7 0000

WREG8 0010 工作寄存器8 0000

WREG9 0012 工作寄存器9 0000

WREG10 0014 工作寄存器10 0000

WREG11 0016 工作寄存器11 0000

WREG12 0018 工作寄存器12 0000

WREG13 001A 工作寄存器13 0000

WREG14 001C 工作寄存器14 0000

WREG15 001E 工作寄存器15 0800

SPLIM 0020 堆栈指针限制值寄存器 xxxx

PCL 002E 程序计数器低位字寄存器 0000

PCH 0030 — — — — — — — — 程序计数器寄存器高字节 0000

TBLPAG 0032 — — — — — — — — 表存储器页地址寄存器 0000

PSVPAG 0034 — — — — — — — — 程序空间可视性页地址寄存器 0000

RCOUNT 0036 Repeat 循环计数器寄存器 xxxx

SR 0042 — — — — — — — DC IPL2 IPL1 IPL0 RA N OV Z C 0000

CORCON 0044 — — — — — — — — — — — — IPL3 PSV — — 0000

DISICNT 0052 — — 禁止中断计数器寄存器 xxxx

图注: — = 未实现,读为0。复位值以十六进制显示。

PIC24FJ256GB1 10 系列

DS39897B_CN 第36页

初稿

 2009 Microchip Technology Inc.

3-4: ICN 寄存器映射

寄存器

名称 地址 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

所有复 位时的 状态 CNPD1 0054 CN15PDE CN14PDE CN13PDE CN12PDE CN11PDE CN10PDE CN9PDE CN8PDE CN7PDE CN6PDE CN5PDE CN4PDE CN3PDE CN2PDE CN1PDE CN0PDE 0000 CNPD2 0056 CN31PDE CN30PDE CN29PDE CN28PDE CN27PDE CN26PDE CN25PDE CN24PDE CN23PDE CN22PDE CN21PDE(1)CN20PDE(1) CN19PDE(1) CN18PDE CN17PDE CN16PDE 0000 CNPD3 0058 CN47PDE(1) CN46PDE(2) CN45PDE(1) CN44PDE(1) CN43PDE(1) CN42PDE(1)CN41PDE(1) CN40PDE(2) CN39PDE(2) CN38PDE(2) CN37PDE(2)CN36PDE(2) CN35PDE(2) CN34PDE(2) CN33PDE(2) CN32PDE 0000 CNPD4 005A CN63PDE CN62PDE CN61PDE CN60PDE CN59PDE CN58PDE CN57PDE(1) CN56PDE CN55PDE CN54PDE CN53PDE CN52PDE CN51PDE CN50PDE CN49PDE CN48PDE(2) 0000 CNPD5 005C CN79PDE(2) CN78PDE(1) CN77PDE(1) CN76PDE(2) CN75PDE(2) CN74PDE(1) — — CN71PDE CN70PDE(1) CN69PDE CN68PDE CN67PDE(1) CN66PDE(1) CN65PDE CN64PDE 0000

CNPD6(2) 005E — — — — — — — — — — — — — CN82PDE(2) CN81PDE(2) CN80PDE(2) 0000

CNEN1 0060 CN15IE CN14IE CN13IE CN12IE CN11IE CN10IE CN9IE CN8IE CN7IE CN6IE CN5IE CN4IE CN3IE CN2IE CN1IE CN0IE 0000 CNEN2 0062 CN31IE CN30IE CN29IE CN28IE CN27IE CN26IE CN25IE CN24IE CN23IE CN22IE CN21IE(1) CN20IE(1) CN19IE(1) CN18IE CN17IE CN16IE 0000 CNEN3 0064 CN47IE(1) CN46IE(2) CN45IE(1) CN44IE(1) CN43IE(1) CN42IE(1) CN41IE(1) CN40IE(2) CN39IE(2) CN38IE(2) CN37IE(2) CN36IE(2) CN35IE(2) CN34IE(2) CN33IE(2) CN32IE 0000 CNEN4 0066 CN63IE CN62IE CN61IE CN60IE CN59IE CN58IE CN57IE(1) CN56IE CN55IE CN54IE CN53IE CN52IE CN51IE CN50IE CN49IE CN48IE(2) 0000 CNEN5 0068 CN79IE(2) CN78IE(1) CN77IE(1) CN76IE(2) CN75IE(2) CN74IE(1) — — CN71IE CN70IE(1) CN69IE CN68IE CN67IE(1) CN66IE(1) CN65IE CN64IE 0000

CNEN6(2) 006A — — — — — — — — — — — — — CN82IE(2) CN81IE(2) CN80IE(2) 0000

CNPU1 006C CN15PUE CN14PUE CN13PUE CN12PUE CN11PUE CN10PUE CN9PUE CN8PUE CN7PUE CN6PUE CN5PUE CN4PUE CN3PUE CN2PUE CN1PUE CN0PUE 0000 CNPU2 006E CN31PUE CN30PUE CN29PUE CN28PUE CN27PUE CN26PUE CN25PUE CN24PUE CN23PUE CN22PUE CN21PUE(1)CN20PUE(1) CN19PUE(1) CN18PUE CN17PUE CN16PUE 0000 CNPU3 0070 CN47PUE(1) CN46PUE(2) CN45PUE(1) CN44PUE(1) CN43PUE(1) CN42PUE(1)CN41PUE(1) CN40PUE(2) CN39PUE(2) CN38PUE(2) CN37PUE(2)CN36PUE(2) CN35PUE(2) CN34PUE(2) CN33PUE(2) CN32PUE 0000 CNPU4 0072 CN63PUE CN62PUE CN61PUE CN60PUE CN59PUE CN58PUE CN57PUE(1) CN56PUE CN55PUE CN54PUE CN53PUE CN52PUE CN51PUE CN50PUE CN49PUE CN48PUE(2) 0000 CNPU5 0074 CN79PUE(2) CN78PUE(1) CN77PUE(1) CN76PUE(2) CN75PUE(2) CN74PUE(1) — — CN71PUE CN70PUE(1) CN69PUE CN68PUE CN67PUE(1) CN66PUE(1) CN65PUE CN64PUE 0000

CNPU6(2) 0076 — — — — — — — — — — — — — CN82PUE(2) CN81PUE(2) CN80PUE(2) 0000

图注: — = 未实现,读为0。复位值以十六进制显示。

1: 在 64 引脚器件上未实现;读为0。

2: 在 64 引脚和 80 引脚器件上未实现;读为0。

在文檔中 的 64/80/100 引脚 (頁 33-57)