PIC18F2XXX/4XXX系列闪存微控制器编程规范解析
一、引言
今天我们来深入探讨PIC18F2XXX/4XXX系列闪存微控制器的编程规范。这个系列包含了众多型号的设备,这些设备广泛应用于各种电子系统中。了解其编程规范,对于电子工程师来说至关重要,有助于我们更好地进行硬件设计和开发。
文件下载:PIC18F4321T-I/ML.pdf
二、设备概述
该文档涵盖了一系列PIC18F2XXX/4XXX系列的设备,例如PIC18F2221、PIC18F4221等众多型号。这些设备在不同的应用场景中发挥着重要作用。
三、编程概述
3.1 编程方法
PIC18F2XXX/4XXX系列设备可以使用高压在线串行编程(High - voltage In - Circuit Serial Programming™,ICSP™)方法或低压ICSP方法进行编程。这两种方法都可以在用户系统中对设备进行操作。低压ICSP方法与高压方法略有不同,在适用的地方会特别说明。
3.2 硬件要求
3.2.1 高压ICSP模式
在高压ICSP模式下,PIC18F2XXX/4XXX系列设备需要两个可编程电源,一个用于VDD,一个用于MCLR/VPP/RE3。这两个电源的最小分辨率应为0.25V。更多硬件参数可参考第6.0节“编程/验证测试模式的交/直流特性时序要求”。
3.2.2 低压ICSP编程
在低压ICSP模式下,PIC18F2XXX/4XXX系列设备可以使用工作范围内的VDD源进行编程。MCLR/VPP/RE3不需要设置为不同的电压,可保持正常工作电压。同样,更多硬件参数可参考第6.0节。
3.3 引脚图
文档中给出了PIC18F2XXX/4XXX系列不同封装类型(如28引脚SPDIP、PDIP、SOIC、SSOP、QFN,40引脚PDIP,44引脚TQFP、QFN)的引脚图。不同封装类型的引脚排列有所不同,在进行硬件设计时,需要根据具体的设备封装来正确连接引脚。例如,在28引脚SPDIP封装中,MCLR/VPP/RE3位于第1引脚,RB7/PGD位于第2引脚等。
3.4 内存映射
不同型号的PIC18F2XXX/4XXX系列设备的代码内存空间大小和布局有所不同。
- PIC18FX6X0设备的代码内存空间从0000h到0FFFFh(64 Kbytes),分为四个16 - Kbyte块。
- PIC18FX5X5设备的代码内存空间从0000h到0BFFFFh(48 Kbytes),分为三个16 - Kbyte块。
- 对于PIC18F2685/4685设备,代码内存空间从0000h到017FFFh(96 Kbytes),分为五个16 - Kbyte块;PIC18F2682/4682设备的代码内存空间从0000h到0013FFFh(80 Kbytes),分为四个16 - Kbyte块。
- 其他型号如PIC18FX5X0/X5X3、PIC18FX4X5/X4X8、PIC18FX4X0/X4X3、PIC18F2480/4480、PIC18F2580/4580、PIC18F2221/4221、PIC18F2321/4321等也都有各自特定的代码内存空间布局。
此外,还有三个可通过表读取和表写入访问的块,包括用于存储识别信息的ID寄存器(地址为200000h - 200007h)、用于配置位的地址(300000h - 30000Dh)以及用于设备ID位的地址(3FFFFEh和3FFFFFh)。这些信息即使在代码保护应用后也能正常读出。
3.5 编程过程概述
编程过程的高级概述如下:首先进行整体擦除(Bulk Erase),然后对代码内存、ID位置和数据EEPROM(部分设备支持,详见第3.3节“数据EEPROM编程”)进行编程,接着验证这些内存以确保编程成功。如果没有检测到错误,再对配置位进行编程和验证。
3.6 进入和退出编程验证模式
3.6.1 高压ICSP编程/验证模式
进入高压ICSP编程/验证模式时,需将PGC和PGD保持低电平,然后将MCLR/VPP/RE3升高到VIHH(高电压)。进入该模式后,可以串行访问和编程代码内存、数据EEPROM(部分设备)、ID位置和配置位。退出该模式有相应的序列。进入该模式时,所有未使用的I/O会处于高阻抗状态。
3.6.2 低压ICSP编程/验证模式
当LVP配置位为‘1’时,低压ICSP模式启用。进入低压ICSP编程/验证模式时,需将PGC和PGD保持低电平,PGM置为逻辑高电平,然后将MCLR/VPP/RE3升高到VIH。在该模式下,RB5/PGM引脚专门用于编程功能,不再是通用I/O引脚。退出该模式也有对应的序列,进入模式时同样会使所有未使用的I/O处于高阻抗状态。
3.7 串行编程/验证操作
3.7.1 4位命令
| 所有指令为20位,由一个4位命令和一个16位操作数组成。编程和验证所需的命令如下表所示: | 描述 | 4位命令 |
|---|---|---|
| 核心指令(移入16位指令) | 0000 | |
| 移出TABLAT寄存器 | 0010 | |
| 表读取 | 1000 | |
| 表读取,后递增 | 1001 | |
| 表读取,后递减 | 1010 | |
| 表读取,预递增 | 1011 | |
| 表写入 | 1100 | |
| 表写入,后递增2 | 1101 | |
| 表写入,开始编程,后递增2 | 1110 | |
| 表写入,开始编程 | 1111 |
3.7.2 核心指令
核心指令将一个16位指令传递给CPU核心执行,这对于为其他命令设置适当的寄存器是必要的。
3.8 专用ICSP/ICD端口(仅44引脚TQFP)
PIC18F4455/4458/4550/4553的44引脚TQFP设备支持一个备用编程输入:专用ICSP/ICD端口。该端口的主要目的是提供备用的在线调试(ICD)选项,并释放通常用于调试应用程序的引脚(RB6、RB7和MCLR)。设置ICPRT配置位可启用该专用端口,它的功能与默认的ICSP/ICD端口相同,但使用的是备用引脚。
四、设备编程
4.1 ICSP擦除
4.1.1 高压ICSP整体擦除
| 擦除代码或数据EEPROM可通过配置位于3C0004h和3C0005h的两个整体擦除控制寄存器来完成。代码内存可以部分擦除,也可以一次性擦除整个设备。整体擦除操作还会清除与被擦除内存块相关的任何代码保护设置。具体的擦除选项如下表所示: | 描述 | (3C0005h:3C0004h) 数据 |
|---|---|---|
| 芯片擦除 | 3F8Fh | |
| 擦除数据EEPROM(部分设备) | 0084h | |
| 擦除引导块 | 0081h | |
| 擦除配置位 | 0082h | |
| 擦除代码EEPROM块0 | 0180h | |
| 擦除代码EEPROM块1 | 0280h | |
| 擦除代码EEPROM块2 | 0480h | |
| 擦除代码EEPROM块3 | 0880h | |
| 擦除代码EEPROM块4 | 1080h | |
| 擦除代码EEPROM块5 | 2080h |
4.1.2 低压ICSP整体擦除
使用低压ICSP时,如果要执行整体擦除,部件必须由参数D111指定的电压供电。其他整体擦除细节与高压ICSP整体擦除相同。如果需要在低于整体擦除限制的电源电压下进行程序内存擦除,可参考第3.1.3节“ICSP行擦除”和第3.2.1节“修改代码内存”的擦除方法;如果需要在低于整体擦除限制的电源电压下进行数据EEPROM擦除(部分设备),可遵循第3.3节“数据EEPROM编程”的方法并向数组写入‘1’。
4.1.3 ICSP行擦除
无论使用高压还是低压ICSP,只要块未被代码或写保护,就可以擦除一行(64字节的数据)。行位于静态边界,从程序内存地址000000h开始,延伸到内部程序内存限制。行擦除持续时间由外部定时,由PGC控制。在设置EECON1中的WR位后,发出一个NOP指令,其中第4个PGC在编程时间P9内保持高电平。PGC拉低后,编程序列终止。PGC必须在参数P10指定的时间内保持低电平,以允许内存阵列的高压放电。
五、总结
PIC18F2XXX/4XXX系列闪存微控制器的编程规范涵盖了设备的各个方面,包括编程方法、硬件要求、引脚图、内存映射、编程过程、进入和退出模式以及擦除操作等。电子工程师在使用这些设备进行硬件设计和开发时,需要仔细研究这些规范,确保正确地对设备进行编程和操作。大家在实际应用中遇到过哪些与编程规范相关的问题呢?欢迎在评论区分享交流。
-
闪存微控制器
+关注
关注
0文章
8浏览量
8241 -
编程规范
+关注
关注
0文章
10浏览量
9026
发布评论请先 登录
PIC18F2XXX/4XXX系列闪存微控制器编程规范解析
评论