自制 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将被死锁, 再也读不出来。
图二、烧写器之系统流程 图四 烧写流程
符号 | 参数 | 分 | 最大 | 单位 | Trs | Vpp 到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 | | 100 | ns | Tph | 位址时钟pulse 宽度 | 25 | | ns | Tso | 资料(位组) 选择到输出延迟时间 | | 200 | ns | Tsh | 资料(位组) 选择到输出更改 | 50 | | ns | Toda | 输出取消到ACLK 设定时间 | 2 | | ms | Tadb | ACLK 到资料(位组) 选择延迟时间 | 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) | 0 | 0 | 0 | 选择(OPTION) | 0 | 1 | 0 | 保护(SECURITY) | 1 | 0 | 0 | 表二 烧写模式选择表 |
表二 烧写模式选择表
其实在当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烧写时之引脚设定
符号 | 引脚 | 型式 | 功能说明 | Vpp | 3 | 输入 | 烧写电压。 电压范围:10.5V到 12.5V。 | ACLK | 15 | 输入 | 产生时钟(Clock)给OTP内存地址增加之用。 | IO0~IO6 | 6 ~12 | I/O | 七位之数据总线。 | C0 ~C2 | 6 ~8 | 输入 | 烧写模式(Mode)之选择 。 | DS | 16 | 输入 | 字符(Word)选择。当DS为1时,选择第一组字符。当DS为0时,则选择第二组字符。 | BS | 4 | 输入 | Byte选择。 当BS为1时,选择前六个位。当BS为0时,则选择后七个位。 | /PGM | 2 | 输入 | 码烧写致能, 负逻辑。 | /OE | 1 | 输入 | 输出致能, 负逻辑。 | 表三 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之值者, 必须先键入预先设定之密码, 否则修改无效。
以上所列只是冰山一角,更多的功能等待有创意的您自己去开发!
源程序
e8-ice.txt
(24.08 KB, 下载次数: 46)
|