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