查看完整版本: 自制 EM78P156 烧写器(含源程序)

liyf 发表于 2011-12-13 18:50:56

自制 EM78P156 烧写器(含源程序)

自制 EM78P156 烧写器(含源程序) 微处理器或微控制器在今日已经深入每一个家庭中, 其应用范围从家电、 汽车、 防盗、 电视游乐器、 玩具、 健康器材、计算机外设、通讯产品…等等。许多产品因应用微处理器来控制, 取代了传统的机械式控制, 不但降低成本, 且增加其附加价值。其应用领域不断的扩大, 不再是工业控制或昂贵仪器的专利。 这一切都要拜其发展工具普遍化及IC价格日趋低廉所赐。然而整个产品从研发到量产过程中, 具有EPROM功能的微控制器, 实扮演着关键性角色。 单次烧写(One_Time Programming)微控制器, 不管是功能验证, 或是初期小量生产, 均是不错的选择。 如果说OTP微控制器是子弹, 那么烧写器便是枪了。经常卡弹的枪(即烧写品质不良, 或是成功率过低), 在战场经常丧失制敌先机, 甚而对自己生命造成威胁。 故烧写器之制作, 不可不谨慎为之。
      多功能烧写器(Writer)普遍存在的问题:目前市面上有不少可抹式只读存储器(EPROM)烧写器, 亦提供”单次烧写” IC(简称:OTP)之功能。 其功能亦有不错的表现, 烧写之成功率也不差。 但大多数的多功能烧写器仍免不了下列几项缺点:
      操作步骤复杂: 由于必须同时提供多种品质烧写使用,且每一品牌又有多种系列产品。 无可避免的, 操作上势必多出许多步骤。 如果再对该产品不熟, 要对号入座, 还真得费一番功夫。
   会挑个人计算机(PC): 在软件方面、 时序(Timing)必须由个人计算机(PC)产生,然而新旧计算机之执行速度相差数倍甚至百倍,至使太新或太旧PC的没法使用。 在硬件方面、由于阻抗的匹配和I/O端口设定的问题,使得传输工作就跟得了癌症一样, 回天乏术。
   不能独立作业(stand-alone), 携带不方便: 一般多功能烧写器都与PC搭配使用, 本身不具储存程序代码的功能。 一位有经验的工程师,在从是客户服务时, 多半会自备一台PC及烧写器, 以免白跑一趟。 故要干这一行的客户服务工程师, 不是重装步兵出身的, 还真干不来。烧写时间过长, 不利大量生产: 如前项所述, 新旧计算机速度相差甚多。 故设计者在设计时序时, 必须抓的很宽, 以便符合所有计算机。内存小的须耗十数秒, 内存大的可能要以分钟为单位了。 要小量生产还可以忍受, 可是遇到赶货或大量生产时, 真有急惊疯遇到了慢郎中之叹。
具有导向功能的高速烧写器

其实我们对多功能型的烧写器亦无需多加以苛责, 就好比一位十项全能的选手, 其百米能跑个十秒四或十秒三, 巳是个翘楚, 但如果与百米选手
相比,可能初赛便被淘汰了。 义隆电子发展的这一型烧写器, 便是针对了多功能型的烧写器, 天生无法克服之缺陷, 巧思改良而成, 虽然不具多功能的能力, 但多功能烧写器的缺失, 都巳不复存在。.如图a所示, 其特性说明如下:
个人计算机 : 以前的烧写器, 个人计算机扮演着主动的角色, 完全由计算机发号司令, 烧写器只能唯命是从, 其过程几乎是单向沟通, ,而今天我们将整个沟通方式扭转过来, PC角色变的比较被动, 其间与微控制器采一问一答的方式, 亦即PC只送同步信号,而要不要做资料的传递则完全由微制器决定。 个人计算机的另一个功能是将CODE丢到程序代码储存区去。
EM78247微控制器: 该一MC(MicroController)除了与PC沟通外, 更控制了整个烧写过程。 这是为什幺本烧写器能够独自工作不需依赖PC的主因之一。
程序代码储存区:该一buffer使用24c16之EEPROM, 一旦写入便永久储存, 资料不会因电源的消失而消失, 在该储存区的码经由微处理器烧写到OTP ROM中。
该一结构可以说完全避开了多功能型的缺点,为什么?请往下看:
简易的操作:只要将code及option写入程序代码储存区, 按下烧写器的按钮,即可执烧写的工作。
不挑食: PC对烧写器采双向沟通, 而EM78P247微控制器之传输速度(16MHz), 又远大于印表端口之速度(SPP)模式而言。故处PC只送同步信号及指令, 而OTP ROM的数据则由微制器负责传送。 在硬件上, 印表端口原始设定之output pin永远只做输出,而input pin永远只做输入, 即最传统的方式, 只因为目前仍有许多印表埠之I/O是非双向设计的。
可与个人计算机分开独立操作: 由于所有的资料都放在程序代码储存区, 故当download 结束时, 即可将印表埠联机拆除,在烧写器上的LED会告诉您烧写成功或失败。 如前所述整个烧写过程完全由EM78247微控制器所掌控, 与PC毫无瓜葛, 顶多在烧写结束时,告诉PC烧写的结果。
快速烧写:量再大也不担心: EM78P156/154内部OTP烧写结构采一次烧2个words(26 bits), 故1K ROM只需512次即可完成, 根据标准规格做的烧写器可达0.3秒烧1颗, 但实在太快了, 恐烧写者没有注意, 故目前市面上看到的时间,是有意放大了5倍烧写时间约1.5秒左右。
烧写成功率高:由于时序完全由EM78P247所控制, 无需考虑PC的快慢。故烧写之时序乃精心所调试的最佳化结果,其过程稳定而安全。有记录证明连续烧写5千芯片(排除人为失误),结果全数及格通过。
线路简单,维修容易:参阅图三乃烧写器之电路图,只有几只晶体管、电容和电阻,且无高深之电路理论。所有零件取得容易,且价格便宜,如有爱好,不妨自己 DIY。
综合以上的优点,不知是否为有意做类似产品之同好,提供一个另类思考方向。

烧写的流程:
图一、 系统结构
首先看看图一, 为系统之结构。 图二则为整个系统之烧写流程, 详细说明PC如何将程序代码及option code加载储存区中,并将之读回与原始码比较, 以确保加载之值无误。 为防止噪声改变EEPROM之值, 以24C16为例, 可将第七脚拉至Vcc,将之变成只读模式。 以上动作完成后, 可以用PC下命令方式或直接按下烧写器上之按键, 当EM78P247接收到烧写指令时,会先烧写原始码再烧写选择码(option code)最后烧写保护码。 该三个烧写的副流程, 容后再详细讨论。 顺带一提的是,一但保护码被烧low, 其OTP ROM将被死锁, 再也读不出来。

图二、烧写器之系统流程
图四 烧写流程

符号参数分最大单位
TrsVpp 到VDD 层次设定时间2 ms
Tcsu模式代号设定时间2 ms
Tchd模式代号持有时间2 ms
Tdsu资料设定时间2 ms
Tdhd资料持有时间2 ms
Tip程式启动设定时间4 ms
Tdb资料到位组选择更改20 ns
Tpwd程式pulse 宽度100 ns
Toes输出启动设定时间2 ns
Tod资料选择更改由输出启动20 ns
Thz输出取消到资料在High-Z 100ns
Tph位址时钟pulse 宽度25 ns
Tso资料(位组) 选择到输出延迟时间 200ns
Tsh资料(位组) 选择到输出更改50 ns
Toda输出取消到ACLK 设定时间2 ms
TadbACLK 到资料(位组) 选择延迟时间2 ms
Tsa资料(位组) 选择到ACLK 设定时间2 ms
表一 烧写时序转换之AC电气特性

表一 烧写时序转换之AC电气特性
图三搭配图四则详尽的描述了EM78247如何达成烧写的任务, 让读者更易解读该二图, 再提以下几点说明:
Vpp的范围从10.5V~12.5V均可, 一但Vpp大于10.5V,即进入烧写模式。
利用C0~C2来设定烧写模式, 实际上有七种模式, 但只有三种是使用者可能用到的, 即一般模式、 选择(option)模式、与保护模式,请参阅表一。


模式(MODE)C2(IO2)C1(IO1)C0(O0)
一般(REGULAR)000
选择(OPTION)010
保护(SECURITY)100
表二 烧写模式选择表

表二 烧写模式选择表
其实在当TCC引脚电压由Vcc进入Vpp时, 程序计数器即自动归零, ACLK引脚产生4个脤冲时,地址即加2。
请注意预载的顺序D7~D12(6bits)、 D0~D6(7bits)、D20~D25(1bit) 和D13~D19。 也就是说, 当启始时或地址加2后, 低地址码的前(高)6位(bit)先加载,然后再将后(低)7位加载。 同理、 高地址码亦按此要领。
当加载码就序后, 进入烧写阶段。 按照设计人员给的规格, 至少烧写100微秒, 如果连续烧写16次均没有成功, 表示该OTP ROM为不良品。个人经验建议, 在烧写成功后,重复烧写步骤5次以上, 或可增加OTP ROM之电位稳定性,请注意、验证时读取的动作顺序与写入时相同。
当烧写动作完成后, 为保险起见, 将OTP ROM之内含值与原始码,从头到尾再比较一次, 完全一样则等大功告成。
图三为烧写时序图, 而表一则标示了每一关键时间的时间需求, 按图索骥,保证结果令人满意。
烧写器之电路图解译:

图五为本烧写器之详细电路图, 吾人将其拆解成部分, 并一一加以说明:
1、电源部分(右上角): 7805提供了系统所需的5V电源, 7808加7805则提 供了烧写时所需的12.5V电压,何时输5V出或12.5V则由EM78P247之第10.11脚来控制, 平时整个系统耗电为25mA左右,烧写时瞬间耗电为75mA左右,请注意7805(右下角)的散热问题。 
2、OTP ROM之烧写脚座:请参阅图五之引脚安排, 其与EM78247经由一限流电阻(1K)连接。

图五 EM78P156/4烧写时之引脚设定

符号引脚型式功能说明
Vpp3输入烧写电压。 电压范围:10.5V到 12.5V。
ACLK15输入产生时钟(Clock)给OTP内存地址增加之用。
IO0~IO66 ~12I/O七位之数据总线。
C0 ~C26 ~8输入烧写模式(Mode)之选择 。
DS16输入字符(Word)选择。当DS为1时,选择第一组字符。当DS为0时,则选择第二组字符。
BS4输入Byte选择。 当BS为1时,选择前六个位。当BS为0时,则选择后七个位。
/PGM2输入码烧写致能, 负逻辑。
/OE1输入输出致能, 负逻辑。
表三 EM78P156/4之OTP引脚说明

表三 EM78P156/4之OTP引脚说明
EM78247之微控制器(中间部分): 为该一烧写系统的心脏, 其功能在下一章节将有更详细的说明, 请注意该一微控制器使用16MHz为其操作频率。
   程序储存区/EEPROM(左上角): 本实施列采用24C16之EEPROM, PC将程序代码加载其中, 而EM78247则将其内含值读出,并写入OTP ROM中,至于如何将资料写入或读出之时序图, 坊间许多标准范例, 本文不再赘述。
I/O 埠(左中): 当初设计时,根据PRINT PORT的规格, CONTROL PORT,应可双向沟通,可是实际上却仍有为数不少的I/O卡,仍采单向, 给打印机时,不会有任何问题。 故为减少使用者的困扰, 吾人决定输出永远输出, 输入则永远输入。 3个IN3904则纯做开关, 如此可避开PC与EM78247和EEPROM之阻抗匹配问题。
电源重置(POWER ON RESET)(左下角): CMOS体质的微处理器, 普遍存在的一个问题: 就是残存电压(Brown-out),因为微处理器无法自身很快的消化这些电压, 故常要靠外部电路的协助, 来保证POWER ON RESET的成功来。实施例利用一个2.7V极纳二极管, 一旦电位低于2.7V, 则系统会被重置。
烧写结果显示装置: EM78247之第25引脚扮演两个角色, 第一、 显示烧写结果, 如成功时恒亮, 失败时则闪烁; 第二、 侦测按键是否被按下。
EM78247微控制器到底做了些什幺?
如图六所示, 为本微控制器的工作流程。 吾人一共只用了约500个byte, 尚有四分之三的ROM没有使用, 足见该种微控制指令效率之高。 吾人一开始即强调它的角色很重要, 它是烧写器的心脏, 它到底做了什么! 使它如此重要,请看:
开始时:自我测试,其目的将系统之不稳态先行消除。  
检测烧写指令,来自按键或来自PC:如果指令来自PC,则烧写方式根据PC告诉的需求来决定烧写的方式。
读取程序代码区的资料, 将EEPROM之程序代码及设定码option分别读出。
控制整个烧写流程,即产生如图之时序。  
将OTP ROM之值与EEPROM值比较或将之传回PC中与原始码连接比对.
将烧写结果告诉PC或用绿色的LED来显示。
图七为EM78247之引脚图, 其每一引脚说明表四。

图六 EM78247之工作流程

图七 EM78247之引脚

表五 EM78247之引脚功能

符号
类型
功能

OSCI
I
XTAL 类型: Crystal 输入终端机或外在时钟输入引脚. RC类型: RC oscillator 输入引脚.

OSCO
I/O
XTAL 类型: 输出终端机给crystal oscillator 或外在时钟 输入引脚. RC 类型: 时钟输出与一段时间之一instruction循环是穿戴上这引脚.

TCC
I
真正的打卡钟/计数器, Schmitt 启动输入引脚. 必须是tied 到 VDD 或VSS 如果不在用.

/RESET
I
Schmitt 启动输入引脚. 如果这引脚. 保持逻辑低的, 这控制器是重置.

P70~P77
I/O
端口7 是一个8-位bi-directional I/O 端口. P74~P75 能是 pulled-high 在内经由软体控制. P76~P77 能有 open-drain 输出经由软体控制. P70 和P71 也是这 R-option 引脚

P60~P67
I/O
端口6 是一个8-位bi-directional I/O 端口. 他们能是pulled-high在内经由软体控制.

P50~P53
I/O
低的命令4 引脚之端口5. 假如EM78P267/467a, 只是低的命令 4 引脚是用在端口5.

P54~P57
I/O
高的命令4 引脚之端口5. 假如EM78P267/467B, 端口5 是一个 8-位bi-directional I/O 端口.

/INT
I
Falling 边缘triggered 中断输入引脚指示一个中断如果中断是能够.它有内部pull-up (50kW ).

NC
-
没有连接.

VDD
-
电源引脚

VSS
-
接地引脚

表五 EM78247之引脚功能

更多的功能待您去开发!
目前该烧写器所具有的功能,以这种结构而言,真的非常的阳春,仍有许多的功能待您自己去开发,就举几个参考例子:
规定某几个字符(word) 为加1之用:其目的在于如遥控器密码的设定,每烧写一次其值自动加1,无需整个程序重新编译, 浪费许多时间。  
”假乱码”的格式:在将程序加载程序代码区之前,将码打乱成某一种格式而可利用微控制器将之反组译回来,如此可用来保护程序不为外界所盗用,对自己程序多一层保障。
设定烧写个数:利用EM78247与EEPROM之读写动作,事先设定烧写个数,每烧一个设定个数便减一,直到减为零,即停止, 不再烧写。
设定EEPROM之读写密码: 凡企图修改EEPROM之值者, 必须先键入预先设定之密码, 否则修改无效。
以上所列只是冰山一角,更多的功能等待有创意的您自己去开发!

源程序


szsxmys 发表于 2011-12-13 19:56:52

这个编程器的说明非常详细。好东西,支持一下。

liyf 发表于 2011-12-13 20:39:48

有em78247的话可以实践一下,用的是e8-ice的程序

ason.jens 发表于 2011-12-16 11:53:20

支持,对未来写程序有参考意义

zhengdb 发表于 2011-12-23 22:54:20

这说明比较详细,,

hdzl 发表于 2011-12-26 08:09:36

太强大了。唯一的就是芯片不好找。搜罗点儿旧家电寻摸寻摸.

yangou 发表于 2012-4-30 12:04:56

这说明比较详细!!!

hcli0 发表于 2012-8-10 11:49:59

非常好的资料,学习一下,支持

Smile 发表于 2013-8-24 15:55:08

hdzl 发表于 2011-12-26 08:09 static/image/common/back.gif
太强大了。唯一的就是芯片不好找。搜罗点儿旧家电寻摸寻摸.

如果只是测试用,其实好多家用电器在不用后卖废品的时候你可以拆一下自己能用,我就这么做,比如电脑的主板,电源,打印机的主板,电机

GAWI0831 发表于 2013-8-30 21:03:24

太詳細了 這一定要頂一下才行啊!!
页: [1] 2 3
查看完整版本: 自制 EM78P156 烧写器(含源程序)