|
发布时间: 2023-12-28 |
其他研究 |
|
|
收稿日期: 2023-06-05
中图法分类号: TP391
文献标识码: A
文章编号: 2096-8299(2023)06-0610-04
|
摘要
针对传统PIC系列芯片采用Microchip公司推出的PICKIT下载器对程序进行下载存在局限性的问题,在基于ICSP协议的基础上,采用STM32F407对PIC12F1572芯片进行程序下载。代码事先通过编译以HEX文件的形式经由STM32F407发送给PIC12F1572芯片,经校验无误后写入PIC芯片内。实验结果表明,该方法不仅能摆脱利用PICKIT下载程序所带来的局限性,而且能实现多路下载,大大提高了下载效率。
关键词
STM32F4控制器; PIC控制器; ICSP协议
Abstract
Aiming at the limitation of traditional PIC series chips using PICKIT downloaders produced by MICROCHIP company to download programs, this paper uses STM32F407 to download programs for PIC12F1572 chips on the basis of ICSP protocol.The code is sent to PIC12F1572 chips through HEX file in the form of compilation, and is written into PIC chips after verification.This method can not only get rid of the limitations brought by the use of PICKIT download program, but also can achieve multi-way download, greatly improving the efficiency of download.
Key words
STM32F4 controller; PIC controller; in-circuit serial programming protocol
PIC单片机是美国Microchip公司生产的8位微处理器。它的速度与功能远超一些普通的8位51单片机[1]。相较于传统单片机, PIC具有指令简单、寻址方式简单、代码压缩率高、运行速度快、功耗低等特点[2]。PIC芯片程序的下载一般需要经由Microchip公司官方提供的PICKIT下载器下载, 利用官方提供的MPLAB软件对PICKIT进行配置后才能完成[3]。
在部分项目应用中, 采用官方推出的ICD调试工具对系统进行调试[4], 虽然该种方式成本较低廉, 但其实现离不开第三方软件的支持, 从而限制了开发和设计过程, 在需要大规模生产应用的场合, 存在效率低、成本高、自定义空间小等问题。
本文基于ICSP编程协议, 提出了一种利用STM32F407控制器(以下简称“407”)下载PIC程序的方法, 程序内容经过编译后以HEX文件形式存入407中, PIC与407之间通过数据和时钟线进行通信。程序下载前, 由于407需要根据当前时钟脉冲向PIC发送一段特定的序列, 使PIC正常进入编程模式, 因此有效防止了误操作的出现; 在下载过程中, 每当407向PIC写入数据时, 需要等待来自PIC的正确回复以确保数据传输的正确性。通过对407引脚的正确配置, 可以实现在407组成的最小系统中对PIC芯片的多路下载, 而且不需要依赖任何第三方软件, 有效提高了下载效率。
1 STM 32F407接线方式
407与PIC的接线如图 1所示。其中, MCLR、VDD、GND、DAT、CLK分别是PIC对应的引脚名, 对于407而言, 采用通用IO管脚GPIO即可。
由图 1可知, 407上的通用IO管脚GPIO分别与PIC的MCLR、VDD、GND、DAT、CLK引脚连接。其中, MCLR作为PIC的编程引脚, 默认情况下不作为普通IO口, 因此当MCLR引脚作为普通IO口时, 可能会出现程序无法正常下载的情况, 此时需要对PIC进行相应的引脚配置; DAT引脚用于407和PIC间传输数据, 该引脚既用于接收来自407端发送的数据, 同时也能将自身数据返回给407, 用于校验数据的正确性; CLK为脉冲输出引脚, 用以接收来自407端发送的一定周期的脉冲, 整个下载过程中数据以及命令的收发都在时钟脉冲的控制下完成。在整个下载过程中, PIC芯片的供电由407的引脚独立控制, 同时对供电电压值及MCLR引脚控制时序都有一定要求。
2 低电压编程模式
在低电压编程模式(Low-Voltage Programming Mode, LVP)下进行配置(如果需要的话)。当DAT引脚上接收到正确的解锁序列, 即可进入编程模式。相较于高电压编程方式, 该方法不需要额外的升压措施, 有效降低了器件成本, 同时由于整个操作过程没有高电压的存在, 能有效防止误操作导致芯片损坏现象的出现。
PIC内部有专用的LVP使能位, 只有当LVP使能的情况下, 才允许设备进入低电压编程模式; 否则需要第三方软件对其配置字进行写入后, 才能正常进入编程模式。这里仅针对出厂默认LVP使能的芯片做出说明。LVP需要在特定电压时序下才能正常进入, 具体做法如下: 首先, 在保证芯片正常供电的情况下, 将MCLR引脚维持在高电平一段时间TENTS; 其次, 在开始向PIC发送解锁序列的前一段时间TENTH, 将MCLR编程引脚的电平拉低; 再次, 由407控制引脚输出一定周期的脉冲, 该脉冲的半波周期需要大于100 ns; 最后, 在上述脉冲的控制下, 在DAT上向PIC发送解锁序列, 该序列用16进制, 可表示为0x4d434850, 遵循低电位先发的原则逐位发送给PIC。当PIC端接收到正确的解锁序列后, 即可正常进入编程模式。
上述步骤中, TENTS和TENTH需要满足的条件为
$ \left\{\begin{array}{l} T_{\mathrm{ENTS}} \geqslant 100 \mathrm{~ns} \\ T_{\mathrm{ENTH}} \geqslant 250 \mu \mathrm{s} \end{array}\right. $ | (1) |
进入编程模式的电压时序如图 2所示。
由于PIC芯片内部有低电压复位功能, 当电压过低时会使芯片进入复位状态, 因此供电电压应高于复位电压, 才能使芯片正常进入编程模式。
3 程序下载流程
3.1 程序存储写入
3.2 配置字及用户ID写入
用户ID一般用以辨别不同设备。配置字是PIC单片机内部用以控制引脚功能、看门狗定时器及复位相关功能的特殊寄存器, 因此需要在下载程序的过程中写入适当的配置字及用户ID, 以保证PIC正常工作。由于配置字在不同芯片内部的地址不同, 因此对于不同的芯片, 首先需要通过增加地址命令或重置地址命令将PIC定位到相应地址位, 再通过上文中所述方式对配置字进行写入操作。在本方案中, 以PIC 12F1572芯片为例, 其用户ID位于8000 H-8004 H, 配置字位于8007 H-8008 H。用户ID及配置字写入流程如图 5所示。
3.3 退出编程模式
3.4 实验验证
本文利用STM32F407核心板,连接若干GPIO管脚到PIC相应的引脚进行实验。下载PIC程序的硬件电路如图 7所示。
分别实现407和PIC的应用程序后,将PIC应用程序作为407的数据单元,按照以上所述步骤进行程序烧录,结果完成后, PIC能够启动程序执行相应的功能。
4 结语
首先, 将事先编译好的HEX文件存入407中, 通过PIC内部的编程命令对PIC程序存储进行编程; 然后, 对用户ID和配置字进行了一系列改写, 实现程序的烧录下载并运行成功。虽然本方案只针对PIC12F1572进行了验证, 但由于PIC系列芯片内部存储结构的相似性, 因此本方案在其他PIC芯片案例中也可以大范围应用。事实证明, STM32F407能够在不依赖第三方工具和软件的前提下完成对PIC芯片的烧写, 同时扩展了多路芯片同时烧录功能, 大大提高了烧录效率。
参考文献
-
[1]张立丽, 王洪波. 基于PIC单片机的直流电机控制器的设计[J]. 计算机工程与设计, 2009, 30(11): 2681-2683.
-
[2]吴正民. PIC单片机特点及应用时的注意事项[J]. 实验室研究与探索, 2003(6): 79-82.
-
[3]Microchip 8位PIC单片机PIC16F15386系列[J]. 世界电子元器件, 2017(2): 19.
-
[4]张明, 刘岑俐. 基于PIC单片机和DS18B20的温度测量系统设计[J]. 电子测试, 2010(4): 54-57.