电子工程师的网站
首 页 |  新闻资讯 | 最新产品 | 解决方案 | 技术参数
设计应用
电路图 | 技术资料 | 芯片资料 | 技术论坛
  现在位置: 首页 > 设计应用 > 单片机 > 详细信息
单片机:一种实用的PIC编程嚣的设计方法
来源:   时间: 2008-8-21 2:39:54    

  随着工业生产的扩大,存在着对同一型号芯片进行相同代码编程的需要。目前采用的编程方式是通过专用的编程器来执行,其编程过程离不开PC机。在对一定批量的芯片编程时,操作比较烦琐,保密性能差,且难以在工业现场进行。

  本编程器设计简单,操作方便,保密性好,易携带,需要的外部设备少。编程器以PIClOF202为例进行设计。PIClOF2xx系列是Microchip公司生产的低功耗,高性能Flash单片机。其封装小,易于使用,成本低。性能稳定,在通用电子设计中被广泛使用。本设计的基本思想适用于其他类型的单片机。

1 PICl0F2xx的存储结构及编程方法
1.1 存储空间映射

  以PICl0F202为例,其内部程序存储空间映射如下:
  0000H~0lFFH是用户可以使用的代码存储空间,0200H~03FFH是系统的配置空间。其中01FFH单元是复位向量,系统复位后程序指针PC将指向此地址单元。0200H~0203H是用户ID信息存储区间。0204H地址单元存放的是备份的OSCCAL值,被预留用来测试内部晶振,因此该值在任何情况下都不应该被更改。一旦被擦除,必须恢复该值,否则芯片不能正常工作。03FF地址单元存放系统的配置字,其他地址单元系统保留。

1.2 芯片编程方法

  
采用串行在线编程的方式,串行时钟信号由主控单元的I/O口发出,从PIC的时钟引脚ISCLK输入。在串行时钟信号作用下,串行数据从数据引脚ISDAT输入/输出,完成对芯片的Flash的代码写入。

  只有在进入编程模式后,PIClOF202才能允许对其存储空间的操作,如图l所示。当保持ISDAT(串行数据输入端)和ISCLK(串行时钟输入端)为低电平时,VCC(芯片电源)上升到高电平。经tl延时,MCLR(编程模式选择端)上升到高电平,再经t2延时,开始时钟脉冲和数据的输入/输出。此时PIClOF202进入编程模式。


 系统逻辑框图如图2所示,由主控机、控制模块、监控显示模块和目标芯片组成。主控机选用89C51单片机,用单片机的2个I/O口分别提供ISDAT和ISCLK信号;目标芯片即PIC。PIC的MCLR端为编程模式选择端。为了让PIC10F202能够进入编程状态,需要由控制模块实现对MCLR端的电平控制。监控显示模块用于指示目前系统的工作状态和监控系统运行。

2.1 控制模块的实现

  为了实现控制模块对MCLR端的电平控制,使用2个晶体管T1、T2,如图3所示。当单片机I/O口为高电位时,T1导通,其发射级为低电位,T2导通,于是电源VPP与PIC的MCLR端接通;当I/O口为低电位时,T1截止,其发射级为高电位,T2截止,VPP和MCLR端之间断开。

2.2 监控显示模块

  
采用一组发光二极管来显示系统状态和编程结果。系统的工作状态包括:目标芯片检测、就绪等待、编程进行中、代码校验等。系统在就绪等待状态下,就绪状态灯亮,主控机监控按键指令;接到指令后即进入编程状态,同时编程灯亮,编程后执行校验,校验完成后结束灯亮,说明完成整个缩程工作。整个编程过程中,若遇到故障,相应故障灯显示。

3 系统软件设计
3.1 数据(命令)输入方法

  
无论是指令还是需要写入的代码数据,都在相应的时钟节拍下由串行数据端输入。串行时钟始终与串行数据的要求一致。对于不同的命令,时钟脉冲间的时间参数t1~t6的要求是不同的。在相应时钟脉冲下降沿,PIC对数据端采样,命令代码在前,一段时间延时后,输入代码数据。数据低位在前,高位在后,如图4所示。时间参数的具体要求见参考文献。

    下面以数据导入为例简要说明。
    代码举例如下:

                                                                                                     

    由命令字表中可知,若导人数据的命令字是xx0010B,低位在前由ISDAT输入,每次ISCLK的下降沿对ISDAT采样。以上代码实现了“0”、“1”的输入,其他命令的输入类似。数据输入和命令输入都是下降沿有效。每次导入1字节的数据为12位,但是必须在16个时钟脉冲中完成。前6个时钟脉冲的下降沿输入命令字,且前4位有效。一段时间参数的延迟后,数据开始输入,第1个时钟下降沿输入起始位,后第2~13个时钟的下降沿输入1字节的数据,共12位。第14、15个时钟下降沿输入数据无效,最后一个下降沿输入停止位(起始位和停止位固定为O)。

3.2 PC指针的处理及寻址方法

    在对其编程的过程中,需要知道当前PIC的PC指针指向的Flash存储区单元地址,也就是当前的操作单元。由于无法直接读取其PC指针的值,故采用在89C5l的RAM区定义一个变量用来记录PIC的PC指针(12位,占用2字节)。该变量的值始终和PIC的PC指针一致,读取该值便可取得当前所操作的PIC的Flash存储单元地址。

    变量的操作应该遵循如下运算规则:
    ①只有“加1”这一种运算;
    ②03FF+1=0000(03FF为PIC10F202的存储器末地址)}
    ③当变量的值不等于03FF时,其“加l”运算与指针值“加1”同步;
    ④初始情况下,指针的值指向03FF。
    PICl0F202的Flash单元地址为0000H~03FFH。在以上运算规则下,记录PC指针的变量值也只能是0000H~03FFH,通过“加1”运算即可寻址到每一个Flash存储单元。

3.3 数据的读取

    从Flash存储单元中读取数据位的方法:先是6个时钟下降沿输入6位命令字,在接收到这个命令字后,PIC将当前PC指针所对应ROM存储单元的值按位由ISDAT输出。在第6个下降沿结束后,经延时,在时钟脉冲每个上升沿对ISDAT采样,一共16个上升沿,输出16位的数据。第2~13位是12位的数据;14、15位无效;首位和末位分别是起始位和结束位,如图5所示。

    读取数据时有两点值得注意:
    ①命令字的输入和其他操作相同,但数据输出时是上升沿有效;
    ②由于01FFH和0204H是系统预定值单元,当寻址到这两个单元时,执行读取指令后必须保留其内容,以便编程时恢复。

3.4 写入Flash方法

    数据写入Flash的过程如下:
    每次导入一个字节的数据(12位),输入开始写入的指令码,经过一段时间参数的延时,再输人结束写入指令码,就完成一个字节的写入过程。但需要注意的是,无论是数据读取还是写入,都是对当前PC指针所指向的F1ash单元进行的;而且数据写入只有在当前存储单元已经被擦除的情况下才可以正确地实现。

    指令输入形式(如芯片擦除、开始写入、结束写入和地址加1等)可以查得其命令宇,其输入方法与图4和图5类似,每个指令都需要时钟脉冲的6个下降沿输入。仅有“导入数据”和“读取数据”2条命令需要后跟数据字节,其他的指令在输入完成后,经延时,便可以进行下一条指令的输入。字节写入流程如图6所示。

3.5 配置字编程及代码保护的处理
    配置字是关于PIC的设置,包括是否使能看门狗,是否采用I/O弱上拉,以及MCLR引脚的配置等。配置字在03FFH单元,PIC进入编程模式时,配置字单元就是Pc指针所指向的单元。配置字的写入方法与一般的代码写入方法一致。一旦设置了代码保护,用户代码空间的0040H以上的字节读出为“0”,其他的配置空间依旧可以正确读出,包括配置字单元和用户ID区。配置字可以被多次写入,但是在任何情况下擦除配置字单元,用户储存区的代码也同时被擦除。可以通过图7的方法解除代码保护,但是这样的处理会将整个Flastl存储空间全部清除,所以在代码保护使能的情况下,是不可能正确读取代码值的。即使可以重写配置字,但是重写过程中代码已经被清除。

3.6 预定值的处理
   
每个PIC芯片都没有厂家设定的预定值。这些值是不应该被更改的,否则PIC芯片就无法正常工作。ROM区的01FFH单元保存复位向量,系统复位后,PC指针将指向该单元。0204H单元保存着OSSCAL的值。这两个单元的值应该先读出并且保存在一个临时单元(因为在芯片擦除的过程中会丢失),待到需要编程的代码执行完毕,再从临时单元读出并写入相应的位置。其实际过程就是一个“读取保存恢复”的过程。

    要读取预定值,首先必须寻址到预定值所在的单元。其寻址的过程如图8所示:进入编程模式后,此时指向的存储单元是03FFH,89C51中记录PC指针的变量的值也应该设置成03FF。按照该变量的运算规则,执行地址加1指令,变量值也加1,并查询当前变量的值,直到所需的存储单元为止。恢复的过程是先寻址到01FF和0204单元,然后把保留的值写入,具体流程与图8类似。

3.7 软件流程
    系统在初始化中,如果检测到目标芯片已经安装就绪,监控显示模块便会显示系统处于就绪状态,然后监控按键。一旦按键按下。编程开始,如图9所示。先读取系统预定值并保存在主控机的RAM中,然后PIC芯片擦除,包括用户使用的代码区和PIC系统配置区。擦除完成后,将PC指向首地址0000H,开始代码写入,每次写入l个字节的代码,写完后校验。所有代码写完后,恢复已保存的预定值,恢复的过程与代码写入一致。

    寻址到配置字单元后进行配置字写入,在先前的擦除工作中,配置字单元已经擦除。写入的过程也与代码写入一致。

    整个编程过程中,监控显示模块会显示目前的系统状态。写入过程中(包括代码、预定值和配置字等)出现的任何错误,编程会报错停止,并回到就绪等待状态,等待下次编程的开始。

    若无任何错误的状况发生,系统显示编程成功,整个芯片编程过程结束。

4 小结
    本系统操作简单,性能稳定,编程速度快,无需PC机的支持。所有的代码均保存在主控机的ROM区中。在主控机ROM写保护的情况下,代码不可能被读出,具有很强的保密性。需要的外部设备少,易于携带,而且成本低。本方法对于工业现场的批量芯片编程有一定借鉴意义。

      欢迎转载,信息来自维库电子市场网(www.dzsc.com

相关信息
发表评论
打印本页 关闭本页
Microchip推出闪存PIC单片机 数据传输速度达12Mbps
    Microchip近日宣布,推出新款具备经过认证的全速USB 2.0连接功能的闪存PIC®单片机。新产品工作频率为48 MHz,数据传输速度高达12 Mbps。该系列器件具备各种片上外设,采用纳瓦(nanoWatt)技术进行电源管理,可为在工业、医疗及许多其他嵌入式应用中运用USB的设计工程师提供完整的嵌入式控制解决方案。   目前,大部分具有USB功能的单片机都是针对个人电脑外围设备和消费市场应...
>>详细内容
Microchip推出USB、LCD及通用8位PIC单片机系列
    MicrochipTechnologyInc.(美国微芯科技公司)宣布推出12款全新的高性能、8位闪存单片机,其中包括该公司首款集成片上高速12位模数转换器外设的USB及LCD单片机系列。三个新产品系列共备有16种集成高分辨率片上模数转换器的高性能PIC18单片机,扩展了Microchip通用PIC18F4523系列产品线并极大地丰富了客户的选择。   在这三个新产品系列中,PIC18F8723大容量存储器通用系列提供丰富...
>>详细内容
Microchip推出128KB可自行再编程闪存的40MHz PIC®单片机
    Microchip Technology(美国微芯科技公司)近日推出四款多引脚、高密度PIC18F系列产品。新产品极具成本效益,配备96 KB和128 KB可自行再编程及高耐用闪存,性能高达10MIPS,工作电压范围为2.0至5.5V。  除上述特性外,新产品还兼具纳瓦电源管理功能,并附带全套模拟及数字外设,性能可与16位高端嵌入式应用器件媲美,同时保留了8位器件易操作的特点,确保设计师可以沿用现有的开发...
>>详细内容
Microchip推出全新通用小型PIC单片机,适合多种应用
    美国微芯科技公司(Microchip Technology Inc.)宣布推出包括四款器件的PIC16F88X单片机系列。这些器件分别采用28、40和44引脚封装,适用于众多应用领域。该系列兼容PIC16F87XA系列,易于移植;还新增了许多功能,可为用户节省设计阶段和设计完成后的时间和资金。这些新功能包括:配备时钟切换及故障排除时钟模式的双重内置振荡器;更多(多至14个)模数转换通道;配备两个比较器和一个设...
>>详细内容
Microchip新推闪存PIC®单片机
    Microchip Technology(美国微芯科技公司)日前推出首款具备全速USB2.0连接功能的闪存PIC®单片机,工作频率达48MHz,数据传输速率高达12Mbps。结合新器件配备的一系列片上外设和纳瓦技术(nanoWatt)的功耗管理功能,该系列器件针对采用USB的工业、医疗和其它多种嵌入式应用,为设计人员提供了全套嵌入式控制解决方案。   目前大部份具有USB功能的单片机都是专门针对...
>>详细内容
美芯PICDEM LCD 2驱动器解决方案
  美芯公司的PIC18F85J90系列是带LCD驱动器的64/80 引脚高性能单片机,它继承了所有PIC18 单片机的传统优点,即具有出色的计算性能、丰富的功能集,除此之外,还带有一个多功能片上LCD 驱动器,以及极具竞争力的价格。片上LCD驱动器包括许多功能,如一个带有电荷泵的集成的稳压器,允许用软件控制对比度并且可在高于器件VDD 的电压下进行显示操作。本文给出了MCU的主要性能以及采用PIC18FXXJ...
>>详细内容
已有(
)位对此新闻感兴趣的网发发表了看法 >>更多评论
内 容:
     
 
热点新闻
一周排行
关于我们 | 服务项目 | 付款方式 | 广告服务 | 联系我们 | 友情链接 | 投诉 建议 合作 | 网站地图 | 加入收藏
Copyright © 2007-2008 WEEQOO.COM Corp.All Rights Reserved. 版权所有 经营许可证编号:浙B2-20050339 法律声明
维库电子旗下网站:维库电子市场网 | ChinaICMart | 维库电子开发网 | 维库电子人才网
总部:杭州市下城区朝晖路182号国都发展大厦1号楼80A
电话:0571-85889139-8007 QQ:303939539 | MSN:zh1226@hotmail.com |  邮箱:laz8258@163.com dzsc51@163.com