0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

PIC18FXX80/XX85 Flash微控制器编程规范解析

chencui 2026-04-08 10:35 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

PIC18FXX80/XX85 Flash微控制器编程规范解析

电子工程师的日常工作中,微控制器的编程是一项至关重要的任务。今天我们就来深入探讨一下Microchip公司的PIC18FXX80/XX85系列Flash微控制器的编程规范。

文件下载:PIC18F6585-I/L.pdf

一、设备概述

PIC18FXX80/XX85系列包含了PIC18F6585、PIC18F6680、PIC18F8585和PIC18F8680等型号。这些设备在编程方面具有多种特性和要求,了解它们对于正确使用和开发这些微控制器至关重要。

二、编程概述

2.1 编程方法

该系列设备可以使用高压在线串行编程(High - Voltage In - Circuit Serial Programming,ICSP)或低压ICSP方法进行编程。这两种方法都可以在用户系统中对设备进行编程,但低压ICSP方法与高压方法略有不同。

2.1.1 硬件要求

  • 高压ICSP编程:在高压ICSP模式下,设备需要两个可编程电源,一个用于VDD,一个用于MCLR/VPP,且两个电源的最小分辨率为0.25V。更多硬件参数可参考“AC/DC Characteristics Timing Requirements for Program/Verify Test Mode”部分。
  • 低压ICSP编程:在低压ICSP模式下,设备可以使用工作范围内的VDD源进行编程,即MCLR/VPP可以保持正常工作电压。同样,更多硬件参数可参考上述部分。

2.2 引脚图

PIC18FXX80/XX85系列的引脚图展示在图2 - 1、图2 - 2和图2 - 3中。不过这些引脚图的描述并不代表设备类型的完整功能,用户需要参考相应的设备数据手册以获取完整的引脚描述。

2.3 内存映射

2.3.1 代码内存

代码内存空间从0000h到0FFFFh(64 Kbytes),分为四个16 - Kbyte的块。其中,0000h到07FFh定义为“Boot Block”区域,与块1分开处理。所有这些块在代码内存空间内定义了代码保护边界。代码内存面板以8 - Kbyte为边界定义,在“Code Memory Programming”部分有更详细的讨论。

2.3.2 配置和ID空间

除了代码内存空间,配置和ID空间中有三个块可供用户通过表读取和表写入访问。其在内存映射中的位置如图2 - 5所示。用户可以在八个ID寄存器中存储识别信息(ID),这些ID寄存器映射在地址200000h到200007h。配置位位于300000h到30000Dh,设备ID位位于3FFFFEh和3FFFFFh。这些位置在代码保护后仍可正常读出。

2.3.3 内存地址指针

地址空间000000h到3FFFFFh的内存通过表指针寻址,表指针由三个指针寄存器组成:TBLPTRU(位于RAM地址0FF8h)、TBLPTRH(位于RAM地址0FF7h)和TBLPTRL(位于RAM地址0FF6h)。在进行许多读写操作之前,使用4位命令‘0000’(核心指令)来加载表指针。

2.4 编程过程概述

编程过程的高级概述如图2 - 7所示。首先执行批量擦除,然后对代码内存、ID位置和数据EEPROM进行编程,接着验证这些内存以确保编程成功。如果没有检测到错误,再对配置位进行编程和验证。

2.5 进入编程/验证模式

2.5.1 高压ICSP编程/验证模式

通过将PGC和PGD保持低电平,然后将MCLR/VPP升高到VIHH(高电压),进入高压ICSP编程/验证模式。在此模式下,可以串行访问和编程代码内存、数据EEPROM、ID位置和配置位。进入该模式的序列会将所有未使用的I/O置于高阻抗状态。

2.5.2 低压ICSP编程/验证模式

当LVP配置位为‘1’时,启用低压ICSP模式。通过将PGC和PGD保持低电平,在PGM上置逻辑高电平,然后将MCLR/VPP升高到VIH,进入低压ICSP编程/验证模式。在此模式下,RB5/PGM引脚专用于编程功能,不再是通用I/O引脚。进入该模式的序列同样会将所有未使用的I/O置于高阻抗状态。

2.6 串行编程/验证操作

PGC引脚用作时钟输入引脚,PGD引脚用于在串行操作期间输入命令位和数据输入/输出。命令和数据在PGC的上升沿传输,在PGC的下降沿锁存,并且是最低有效位(LSb)优先。

2.6.1 4位命令

所有指令为20位,由前导4位命令和16位操作数组成,操作数取决于执行的命令类型。输入命令时,PGC循环四次。编程和验证所需的命令如表2 - 3所示。

2.6.2 核心指令

核心指令将16位指令传递给CPU核心执行,这对于设置寄存器以配合其他命令使用是必要的。

三、设备编程

3.1 高压ICSP批量擦除

通过向地址3C0004h写入“Erase Option”来擦除代码或数据EEPROM。代码内存可以部分擦除,也可以一次性擦除整个设备。批量擦除操作还会清除与擦除的内存块相关的任何代码保护设置。擦除选项详细信息如表3 - 1所示。

3.1.1 低压ICSP批量擦除

使用低压ICSP时,如果要执行批量擦除,部件必须由参数D111指定的电压供电。其他批量擦除细节与高压ICSP相同。如果需要在低于批量擦除限制的电源电压下执行程序内存擦除,可参考“ICSP Multi - Panel Single Row Erase”和“Modifying Code Memory”部分的擦除方法。如果需要在低于批量擦除限制的电源电压下执行数据EEPROM擦除,可按照“Data EEPROM Programming”部分的方法将‘1’写入阵列。

3.1.2 ICSP多面板单行擦除

无论使用高压还是低压ICSP,都可以同时擦除所有面板中的单行(64字节数据)。通过适当配置位于3C0006h的编程控制寄存器来启用多面板单行擦除。多面板单行擦除持续时间由外部定时,由PGC控制。发出“Start Programming”命令(4位,‘1111’)后,发出NOP,其中第4个PGC在编程时间P9内保持高电平。PGC拉低后,编程序列终止。PGC必须在参数P10指定的时间内保持低电平,以允许内存阵列的高压放电。

3.2 代码内存编程

编程代码内存的方法是先将数据加载到适当的写缓冲区,然后启动编程序列。代码内存空间中的每个面板都有一个8字节深的写缓冲区,在启动写序列之前必须加载。通常,所有程序缓冲区并行写入(多面板写入模式)。通过适当配置位于3C0006h的编程控制寄存器来启用多面板写入模式。编程持续时间由外部定时,由PGC控制。发出“Start Programming”命令(4位命令,‘1111’)后,发出NOP,其中第4个PGC在编程时间P9内保持高电平。PGC拉低后,编程序列终止。PGC必须在参数P10指定的时间内保持低电平,以允许内存阵列的高压放电。

3.2.1 单面板编程

在某些情况下,限制写入单个面板可能是有利的。此时,用户只需通过适当配置位于3C0006h的编程控制寄存器来禁用设备的多面板写入功能。要写入的单个面板将根据表指针的值自动启用。

3.2.2 修改代码内存

如果用户希望仅修改已编程设备的一部分,可以将设备置于单面板写入模式,加载面板的8字节写缓冲区,然后启动写序列。最小可写入数据量为8字节,最小可擦除代码内存量为64字节。使用EECON1寄存器操作代码内存时,必须设置EEPGD位(EECON1<7> = 1),清除CFGS位(EECON1<6> = 0),设置WREN位(EECON1<2> = 1)以启用任何类型的写入,设置FREE位(EECON1<4> = 1)以擦除表指针指向的程序空间,通过设置WR位(EECON1<1> = 1)启动擦除序列。为防止意外写入,EECON2用于“启用”WR位,在设置WR位之前,必须依次将55h和AAh加载到该寄存器。

3.3 数据EEPROM编程

数据EEPROM通过地址指针(寄存器对EEADR:EEADRH)和数据锁存器(EEDATA)一次访问一个字节。写入数据EEPROM时,将所需的内存位置加载到EEADR:EEADRH,将数据加载到EEDATA,并通过适当配置EECON1和EECON2寄存器启动内存写入。字节写入会自动擦除该位置并写入新数据(先擦除后写入)。使用EECON1寄存器执行数据EEPROM写入时,必须清除EEPGD和CFGS位(EECON1<7:6> = 00),设置WREN位(EECON1<2> = 1)以启用写入,通过设置WR位(EECON1<1> = 1)启动写入序列。为防止意外写入,EECON2用于“启用”WR位,在设置WR位之前,必须依次将55h和AAh加载到该寄存器。

3.4 ID位置编程

ID位置的编程与代码内存类似,但必须禁用多面板写入。要写入的单个面板将根据表指针的值自动启用。ID寄存器映射在地址200000h到200007h,这些位置在代码保护后仍可正常读出。

3.5 引导块编程

引导块段的编程方式与ID位置完全相同,必须禁用多面板写入,以便仅写入0000h到07FFh范围内的地址。

3.6 配置位编程

与代码内存不同,配置位一次编程一个字节。使用“Table Write, Begin Programming”4位命令(‘1111’),但仅写入后续16位有效负载的8位。有效负载的LSB写入偶地址,MSB写入奇地址。编程两个连续配置位置的代码序列如表3 - 8所示。每次配置字节编程之间需要执行四个NOP。

四、读取设备

4.1 读取代码内存、ID位置和配置位

通过4位命令‘1001’(表读取,后递增)一次读取一个字节的代码内存。表指针(TBLPTRU:TBLPTRH:TBLPTRL)指向的内存内容加载到表锁存器,然后在PGD上串行输出。该技术可用于读取000000h到3FFFFFh地址空间中的任何内存,因此也适用于读取ID和配置寄存器。

4.2 验证代码内存和ID位置

验证步骤包括读回代码内存空间并与编程器缓冲区中的副本进行比较。内存读取一次一个字节,因此必须读取两个字节以与编程器缓冲区中的字进行比较。验证代码内存后,必须手动将表指针设置为200000h(ID位置的基地址)。表读取4位命令的后递增功能不能用于将表指针递增到代码内存空间之外。

4.3 验证配置位

通过4位命令‘1001’读取配置地址并在PGD上输出。配置数据以字节方式读取和写入,因此在比较之前无需将两个字节合并为一个字。然后可以立即将结果与编程器内存中的相应配置数据进行比较以进行验证。

4.4 读取数据EEPROM内存

数据EEPROM通过地址指针(寄存器对EEADR:EEADRH)和数据锁存器(EEDATA)一次访问一个字节。读取数据EEPROM时,将所需的内存位置加载到EEADR:EEADRH,并通过适当配置EECON1寄存器启动内存读取。数据将加载到EEDATA,然后通过4位命令‘0010’(Shift Out Data Holding register)在PGD上串行输出。

4.5 验证数据EEPROM

通过一系列核心指令(4位命令,‘0000’)读取数据EEPROM地址,然后通过4位命令‘0010’(Shift Out Data Holding register)在PGD上输出。然后可以立即将结果与编程器内存中的相应数据进行比较以进行验证。

4.6 空白检查

“空白检查”意味着验证设备没有已编程的内存单元。必须验证所有内存:代码内存、数据EEPROM、ID位置和配置位。设备ID寄存器(3FFFFEh:3FFFFFh)应忽略。“空白”或“擦除”的内存单元将读取为‘1’,因此“空白检查”设备只需验证所有字节读取为FFh,配置位除外。未使用(保留)的配置位将读取为‘0’(已编程)。

五、配置字

5.1 ID位置

用户可以在八个ID位置(映射在200000h:200007h)中存储识别信息(ID)。建议每个ID的最高有效半字节为0Fh,这样如果用户代码无意中尝试从ID空间执行,ID数据将作为NOP执行。

5.2 设备ID字

PIC18FXX80/XX85设备的设备ID字位于3FFFFEh:3FFFFFh。这些位可由编程器用于识别正在编程的设备类型,并且在代码或读取保护后仍可正常读出。

5.3 低压编程(LVP)位

配置寄存器CONFIG4L中的LVP位启用低压ICSP编程。LVP位出厂默认值为‘1’。如果不使用低压编程模式,可以将LVP位编程为‘0’,此时RB5/PGM成为数字I/O引脚。但LVP位只能通过进入高压ICSP模式进行编程,其中MCLR/VPP升高到VIHH。一旦LVP位编程为‘0’,则只能使用高压ICSP模式对设备进行编程。

5.4 嵌入配置字信息到HEX文件

为了实现代码的可移植性,PIC18FXX80/XX85编程器需要从HEX文件中读取配置字位置。如果HEX文件中不存在配置字信息,应发出简单的警告消息。同样,保存HEX文件时,必须包含所有配置字信息,也可以提供不包含配置字信息的选项。嵌入配置字信息到HEX文件时,应从地址300000h开始。

5.5 校验和计算

校验和通过以下内容求和计算:所有代码内存位置的内容、适当屏蔽的配置字、ID位置。该和的最低有效16位为校验和。不同设备和代码保护设置下的校验和计算方法如表5 - 4所示。

5.6 嵌入数据EEPROM信息到HEX文件

为了实现代码的可移植性,PIC18FXX80/XX85编程器需要从HEX文件中读取数据EEPROM信息。如果数据EEPROM信息不存在,应发出简单的警告消息。同样,保存HEX文件时,必须包含所有数据EEPROM信息,也可以提供不包含数据EEPROM信息的选项。嵌入数据EEPROM信息到HEX文件时,应从地址F00000h开始。

六、AC/DC特性编程/验证测试模式的时序要求

标准操作条件建议工作温度为25°C。文档中给出了一系列参数,包括电压、电流、时间等的最小值、最大值和单位,以及相应的条件。例如,高压编程电压VIHH在MCLR/VPP上的范围是9.00 - 13.25V,低压编程电压VIHL在MCLR/VPP上的范围是2.00 - 5.50V等。

在实际应用中,电子工程师需要根据这些编程规范和要求,选择合适的编程方法和参数,确保PIC18FXX80/XX85系列微控制器的正确编程和使用。大家在编程过程中遇到过哪些问题呢?欢迎在评论区分享交流。

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

    关注

    0

    文章

    10

    浏览量

    9026
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    PIC32MX1XX/2XX 28/36/44 - PIN 32 位微控制器:功能与应用深度解析

    PIC32MX1XX/2XX 28/36/44 - PIN 32 位微控制器:功能与应用深度解析 在电子设计领域,微控制器如同大脑一般,掌控
    的头像 发表于 04-08 12:50 263次阅读

    深入剖析Microchip PIC18F6393/6493/8393/8493系列微控制器

    一、产品概述 PIC18F6393/6493/8393/8493系列属于64/80引脚的高性能闪存微控制器,集成了LCD驱动、12位ADC以及nanoWatt技术。该系列产品不仅具
    的头像 发表于 04-08 11:25 176次阅读

    PIC18CXX2高性能微控制器深度解析

    PIC18CXX2高性能微控制器深度解析 一、引言 在电子工程领域,微控制器的性能和功能对于各种应用的成功至关重要。PIC18CXX2系列
    的头像 发表于 04-08 11:20 174次阅读

    PIC18FXX20系列闪存微控制器编程解析

    PIC18FXX20系列闪存微控制器编程解析 在电子设计领域,微控制器编程是一项基础且关键的
    的头像 发表于 04-08 10:55 178次阅读

    深度剖析Microchip PIC18F2458/2553/4458/4553系列微控制器

    深度剖析Microchip PIC18F2458/2553/4458/4553系列微控制器 在电子工程师的日常工作中,选择合适的微控制器是项目成功的关键因素之一。Microchip
    的头像 发表于 04-08 10:15 324次阅读

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

    PIC18F2XXX/4XXX系列闪存微控制器编程规范解析 一、引言 今天我们来深入探讨PIC18
    的头像 发表于 04-08 10:05 328次阅读

    PIC18F2331/2431/4331/4431 微控制器:高性能与低功耗的完美结合

    PIC18F2331/2431/4331/4431 微控制器:高性能与低功耗的完美结合 在电子设计领域,选择一款合适的微控制器对于项目的成功至关重要。今天,我们就来深入了解一下 Microchip
    的头像 发表于 04-08 09:50 326次阅读

    深入解析Microchip PIC12C5XX系列8位CMOS微控制器

    深入解析Microchip PIC12C5XX系列8位CMOS微控制器 在电子工程师的工具箱中,微控制器就像是一把万能钥匙,能开启各种应用的大门。今天,我们要深入探讨Microchip
    的头像 发表于 04-07 15:00 115次阅读

    AT89C51IC2:高性能8位Flash微控制器的深度解析

    AT89C51IC2:高性能8位Flash微控制器的深度解析 在电子设计领域,微控制器扮演着至关重要的角色。今天,我们就来深入探讨一款高性能的8位F
    的头像 发表于 04-05 16:55 1132次阅读

    探索PIC16(L)F183XX微控制器:特性、应用与设计要点

    探索PIC16(L)F183XX微控制器:特性、应用与设计要点 在电子工程师的日常工作中,选择一款合适的微控制器对于项目的成功至关重要。今天,我们就来深入了解一下Microchip的
    的头像 发表于 03-25 11:35 202次阅读

    PIC18F8723 系列微控制器:高性能与低功耗的完美结合

    PIC18F8723 系列微控制器:高性能与低功耗的完美结合 在电子工程师的日常工作中,选择一款合适的微控制器对于项目的成功至关重要。今天,我们就来深入探讨一下 Microchip 公司
    的头像 发表于 03-16 15:25 220次阅读

    Microchip PIC18F2458/2553/4458/4553系列微控制器深度解析

    Microchip PIC18F2458/2553/4458/4553系列微控制器深度解析 在电子设计领域,选择一款合适的微控制器对于项目的成功至关重要。Microchip的
    的头像 发表于 03-03 17:15 625次阅读

    PIC16F72:8位CMOS FLASH微控制器的深度剖析

    PIC16F72:8位CMOS FLASH微控制器的深度剖析 在电子工程师的日常设计中,选择一款合适的微控制器至关重要。PIC16F72作为
    的头像 发表于 02-10 11:00 603次阅读

    Microchip PIC18F2XXX/4XXX 系列闪存微控制器编程指南

    F2XXX/4XXX 系列闪存微控制器编程规范。 文件下载: PIC18F4321-I P.pdf 一、器件概述 该文档涵盖了众多型号的编程
    的头像 发表于 02-09 16:50 1083次阅读

    PIC18F24/25Q24微控制器技术解析与应用指南

    Microchip Technology PIC18F24/25Q24微控制器PIC18-Q24微控制器系列28/40/44/48引脚器件的一部分,用于传感
    的头像 发表于 10-10 09:56 973次阅读
    <b class='flag-5'>PIC18</b>F24/25Q24<b class='flag-5'>微控制器</b>技术<b class='flag-5'>解析</b>与应用指南