如何在ATE中集成对PIC单片机的编程烧写功能!

2019-04-15 12:27发布

做ATE,要对DUT内部的PIC单片机进行在线烧写,
在网上看到别人的一个说法(作者 Claud Zhang),内容如下: ---------------------------------------------------------- 一种简单高效低成本的Microchip MCU编程方法
                                   Claud Zhang
对于一些研发工程师来说,工厂的的MCU编程有时候是个比较头疼的问题.在研发过程中,大家都和习惯于用仿真器去编程,这个对工程师来说是个非常简单的过程,但是在工厂生产,工厂认为太复杂了。工厂希望是个傻瓜式的过程。最好的方法是通过ATE自动编程,不需人工参与。
在以往的通常有2种方法,

一种是用PM3, 先编程好,再去SMT, 这种方法对量非常大又不在意成本的话也不失为一种方法,当然这种编程的缺点也很多
1,        首先成本高,PM3, 插座都是一笔不小的开销
2,        失效率会比较高,在上SMT 之前就需要拆封,容易产生管脚损伤,ESD, 造成废料
3,        如果你在此基础上做一个完全自动化的话,相信先期投入的成本是相当惊人地。
4,        如果你不做自动化设备的话,那么你需要投入更多的人工
5,        不能在线更新

另外一种是在线烧录
Microchip的IC 烧录只需要5个pin, 其中是有2个是电源和地,在PCB 上只占用很小的空间。 或者你做几个焊盘,直接用探针接触。
在线烧录的优点:
1,        容易在线更新
2,        避免二次操作管脚
3,        任何器件都可以通过这5个PIN编程

缺点:
需要人工操作烧录过程,要通过MPLAB 的IDE 界面进行操作。
人工操作的缺点
1,        非常容易出错。
2,        占用一个工位人工,增加成本
3,        工厂工人流动比较大,工位经常变动,更容易出错,增加成本。

解决方法:
在MPLAB 中已经增加了命令行方式实现烧录,也就是说只要用文本写个简单的命令行或者批处理,用你的PK3或者ICD3 连接好你的芯片, 直接点击或者在ATE中调用批处理,就完成烧录。

过程如下:
1 安装MPLAB IDE(我用的是V8.85版本)
2 插入PK3 或者ICD3 , 找到驱动
3 这里先以ICD3 为例
在目录 ..MicrochipMPLAB IDEProgrammer UtilitiesICD3 找到ICD3CMD.exe
把着个文件copy 到你任意指定的一个目录。
假设就在C: ICD3CMD.exe
4, 和ICD3CMD.exe同一个目录下 新建一个文本 
   假设你用的器件是 DSPIC33EP64MC506, 烧录文件是claud.hex  这个文件也在假设的C盘根目录下,也可以是任意路径,注意不要用中文路径。
  在文本文件中写入
ICD3CMD -P33EP64MC506 -FC:claud.Hex -M -V3.3
注意蓝 {MOD}部分写法,不要DSPIC
如果是PIC16F1516 就写成
ICD3CMD –P16F1516 -FC:claud.Hex -M -V3.3
注意蓝 {MOD}部分写法,不要PIC
选项V3.3 是指ICD3 直接给芯片供电3.3V. 如果板上所需电流过大,请外加电源。
5 把这个文本另存为 ICD3PROMCU.bat, 同样保存在和你的 ICD3CMD.EXE 一个目录下
6, 如果你使用的是PK3, 在。。MicrochipMPLAB IDEProgrammer UtilitiesPICkit3 目录中找到 PK3CMD.exe ,把上面的ICD3CMD替换成PK3CMD.
7,双击ICD3PROMCU.bat
8, 如果你在command 窗口里看到如下画面, 恭喜你, 成功了
9, 在工厂里要做的只是双击一下或者集成到ATE中直接调用。
10, 谢谢你仔细读完。
-------------------------------------------------------------------------- 实际操作中,查询该DOS Console命令就可以发现其大体功能有哪些(估计还有一部分隐藏参数MCHP官方未公开,因为对比MPLAB的操作细节可以看出来): E:PROG>icd3cmd /?
Options              Description
---------------------------------------------------------------------------
B                    Batch Mode Operation
C                    Blank Check Device
E                    Erase Flash Device
PKOB                 To connect PKOB
F              Hex File Selection
G Read functions
                         region:
                         E = EEPROM
                         I = ID memory
                         C = Configuration memory
                         B = Boot Flash Memory
                         If no region is entered, the entire
                         device will be read.


                         Type F: = read into hex file,
                         Path = full file path,
H                    Hold In Reset
L                    Release from Reset
I                    Use High Voltage MCLR
M            Program Device
                         region:
                         P = Program memory
                         E = EEPROM
                         I = ID memory
                         C = Configuration memory
                         B = Boot Flash Memory
                         If no region is entered, the entire
                         device will be programmed.
N####,####           Program Memory Range
                         #### is a hexidecimal number representing
                         Start and End Address in sequence
P              Part Selection. Example: 18F67J50
R              Reporgram
S              SQTP File Selection
U##                  Program calibration memory,where:
                        ## is a hexidecimal number representing
                        the least significant byte of the
                        calibration value to be programmed
V           Power Target from ICD3
Y                    Verify Device
                         against selected HEX File
?                    Help Screen
?E                   Displays Exit Code


     Example:   ICD3CMD  /P18F67J50 /GFc:HexCode.hex
                               or
     Example:   ICD3CMD  -P18F67J50 -GFc:HexCode.hex




     Version 01.00.14


     Copyright (C) Microchip Technology Inc. 2009


E:PROG>
//-----------------------------------再看看MPLAB开发IDE中的连接ICD3过程:
MPLAB ICD 3 detected
Connecting to MPLAB ICD 3...
Firmware Suite Version...... 01.28.90
Firmware type......................Enhanced Midrange


MPLAB ICD 3 Connected.


Target Detected


Device ID Revision = 00000004
Programming...
Programming/Verify complete



//-----------------------------------其实这个icd3cmd命令自带支持连续操作模式,叫Batch Mode,试验如下:
E:PROG>icd3cmd -P16F1903 -FC:usr111.hex -M -B


Connecting...
MPLAB ICD 3 detected
Connecting to MPLAB ICD 3...
Firmware Suite Version...... 01.28.90
Firmware type......................Enhanced Midrange
MPLAB ICD 3 Connected.
Target Detected
Device ID Revision = 00000004


Programming Device ...
Programming/Verify complete
Batch Mode Count : 1


Batch Mode:  Press Enter to repeat the same operation !!!


Programming Device ...
Programming/Verify complete
Batch Mode Count : 2


Batch Mode:  Press Enter to repeat the same operation !!!


最后这个才是对批量烧些真正有用的指令!!