PIC18F2XXX/4XXX系列闪存微控制器编程规范解析

电子说

1.4w人已加入

描述

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系列闪存微控制器的编程规范涵盖了设备的各个方面,包括编程方法、硬件要求、引脚图、内存映射、编程过程、进入和退出模式以及擦除操作等。电子工程师在使用这些设备进行硬件设计和开发时,需要仔细研究这些规范,确保正确地对设备进行编程和操作。大家在实际应用中遇到过哪些与编程规范相关的问题呢?欢迎在评论区分享交流。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分