|
the Design and Implement of 1-Wire Bus Chip Programmer Abstract: This paper simply introduces the design principle of the programmer and the serial programming algorithm of DS2502, and mainly discusses the design and implementation of DS2502 special programmer. The programmer work on offline status, and program ten DS2502 chips at most at one time, meet the batch programming requirement. Keywords: DS2502, programmer, offline program 摘 要 本文简要介绍了编程器设计原理和DS2502芯片编程算法,重点讨论了DS2502量产型专用编程器的软硬件设计与实现方法。该编程器采用脱机编程工作方式,可单次编程最大10片DS2502,满足批量编程的设计需求。 关键词 DS2502 编程器 脱机编程 随着电子技术的飞速发展,可编程芯片在电子产品中的应用越来越广泛。在实际生产中,经常需要批量编程某特定类可编程芯片,这就对芯片编程速度提出了较高的要求。虽然市场上出现了多种类型的量产编程器,但由于价格、芯片封装等因素不一定完全满足各种应用需求。为此,根据实际需求设计专用量产编程器,在提高编程速度的同时,也可有效地降低芯片编程成本。 DS2502是Dallas公司生产的基于单总线通信协议的1k位只添加存储器,具有工厂激光刻写的、唯一经过测试的64 位注册码。由于在实际生产中需要批量编程DS2502,特设计了DS2502量产专用编程器。该编程器采用脱机编程工作方式,单次最大可编程10片DS2502。编程数据存放于EEPROM中,可根据实际需要通过串口与计算机通信进行,完成数据更新。编程电路严格按照DS2502的编程访问时序设计,保证了被编程芯片的安全性和可靠性。 1 编程器设计原理 为了能对芯片编程,可编程芯片都定义有自己的编程算法。虽然不同芯片编程算法存在差异,但编程器设计思路基本相同,大都通过微控制器对编程芯片引脚施加激励来实现。通过在芯片编程引脚上产生符合编程算法的工作时序,完成对芯片的编程、读取、擦除等操作。根据数据和控制信息的来源不同,编程器工作方式可分为联机编程和脱机编程两种。联机编程是指编程器与计算机连接,由计算机提供编程数据和控制信息。脱机编程通常把编程数据预先存放在编程电路的存储芯片中,控制信息由微控制器程序产生。 2 DS2502编程算法 DS2502芯片将控制线、地址线、数据线、电源和可编程信号减少至一条线,采用单总线协议与微控制器进行数据通信。设备通过一个漏极开路或三态端口连接该总线,以允许设备在不发送数据时能够释放总线。主设备和从设备之间的通信可通过3个步骤完成,分别为初始化单总线器件、识别单总线器件和交换数据。由于它们是主从结构,只有主设备呼叫从设备时,从设备才能应答,因此主设备访问单总线器件都必须严格遵循单总线命令序列,即初始化、ROM、命令功能命令。如果出现序列混乱,单总线器件将不响应主设备。DS2502支持的命令主要有读ROM、读存储器、写存储器、读状态、写状态等。 所有的单总线器件都要遵循严格的通信协议,以保证数据的完整性。单总线协议定义了复位脉冲、应答脉冲、写0、读0和读1时序等几种信号类型。所有的单总线命令序列(初始化,ROM命令,功能命令)都是由这些基本的信号类型组成的。在这些信号中,除了应答脉冲外,其它均由主机发出同步信号,并且发送的所有命令和数据都是字节的低位在前。 初始化时序包括主设备发出的复位脉冲和从设备发出的应答脉冲。主设备通过拉低单总线至少480μs产生Tx复位脉冲;然后由主设备释放总线,并进入Rx接收模式。主设备释放总线时,会产生一个由低电平跳变为高电平的上升沿,单总线器件检测到该上升沿后,延时15~60μs,接着单总线器件通过拉低总线60~240μs来产生应答脉冲。主设备接收到从设备的以应答脉冲后,说明有单总线器件在线,然后主设备就可以开始对从设备进行ROM命令和功能命令操作。 在每一个读、写时序中,总线只能传输一位数据。所有的读、写时序至少需要60μs,且每两个独立的时序之间至少需要1μs的恢复时间。读、写时序均始于主设备拉低总线。在写时序中,主设备将在拉低总线15μs之内释放总线,并向单总线器件写1;若主设备拉低总线后能保持至少60μs的低电平,则向单总线器件写0。单总线器件仅在主设备发出读时序时才向主设备传输数据,所以,当主设备向单总线器件发出读数据命令后,必须马上产生读时序,以便单总线器件能传输数据。在主设备发出读时序之后,单总线器件才开始在总线上发送0或1。若单总线器件发送1,则总线保持高电平,若发送0,则拉低总线。由于单总线器件发送数据后可保持15μs有效时间,因此,主设备在读时序期间必须释放总线,且须在15μs时刻采样总线状态,以便接收从设备发送的数据。如图1所示为读数据时序,实线为读到数据“1”,虚线为读到数据“0”。  与部分单总线芯片不同,DS2502在编程期间需要提供一个480μs的 +12V编程脉冲。主设备控制数据线从上拉电阻所置的空闲高电平状态,转换到数据线被有源驱动至+12V编程电压的状态,为DS2502提供至少10mA的电路,在480μs之后,主设备将数据线返回到上拉电阻所控制的空闲电平状态,完成芯片编程。 3 硬件结构与原理 由于每个DS2502芯片都对应有其唯一的64位光刻码,因此该芯片除了可以作为普通的存储芯片使用外,还可以用于产品认证及数据加密领域,如在某些型号的打印机采用该芯片用作硒鼓身份认证。如作为普通存储芯片,每个待编程芯片需编程数据完全相同。但如作为加密存储芯片,每个芯片中的数据需要根据原始数据与64位光刻码经过一定的加密算法运算获得,每个待编程芯片需要编程不同数据。加密算法的复杂度将使设备对微控制器的运算能力有不同程度的需求。 DS2502量产型专用编程器由微控制器、RS-232通信接口、串并转换电路、编程电压控制电路等组成。编程器硬件总体框图如图2所示。  DS2502量产型专用编程器采用AT89C51微控制器作为主控制器,Max232实现编程器和计算机之间的串口通信,具有线路连接简单、成本低等优点。AT24C16 EEPROM能提供16K字节存储空间,可用来存储脱机编程时的多组编程数据。串并转换电路采用两片GAL22V10可编程逻辑器件实现,以便用最少的编程引脚来驱动10个发光二极管来反映芯片编程状态。以+12V直流电源作为输入,选用LM7805进行+12V到+5V的电压转换,可实现电路的单电源供电。采用SN74L49七段显示译码器驱动数据管显示数字,在功能键的作用下,完成多组编程数据的选择。 编程电压控制电路主要由三只2N7000场效应管和一只VP0300L场效应管组成,在微控制器的作用下,DS2502芯片Data引脚可分别获得+12V、+5V、0V三种电平,满足芯片编程要求,具体电路如图3所示。当EN_12V为低电平时,Data_Cout为+12V;当EN_12V引脚为高电平时,Data_Cout等于Data_Cin电压。  为了实现DS2502的多芯片编程,根据DS2502芯片的编程特性,每片DS2502的数据引脚分别占用一个微控制器I/O引脚。由于每个芯片都对应有自己的编程电压控制线EN_12V,为减少对微控制器I/O引脚的占用,采用了一片GAL22V10来实现4-10译码,产生全选中、单个芯片选中、无芯片选中共12个状态。 通过上述电路连接实现DS2502的多芯片编程,在提高编程速度的同时,优化了电路设计,增加了芯片编程器的灵活性。此外,由于电路完全遵循单总线协议进行设计,无需修改电路即可对其它单总线芯片进行编程,如DS2430。 4 软件系统设计 编程器软件系统由微控制器程序和计算机应用程序两部分组成。微控制器程序作为编程器的核心部分,完成编程数据转换、产生编程时序等工作,实现对芯片的脱机编程,此外还需要支持EEPROM中编程数据的更新。应用程序主要完成提供用户界面和下载脱机数据功能。应用程序和微控制器程序之间通过串口进行数据传输,共同完成对DS2502芯片的编程。 在对DS2502芯片编程之间,通过串口把编程数据先下载到EEPROM。EEPROM可存放多组编程数据,并可通过功能键和数码管对编程数据的选择。如果DS2502作为普通存储器芯片,则微控制器从EEPROM中读出编程数据后,无需根据待编程芯片中的64位ROM码进行数据转换,即可直接对10片DS2502并行编程。如果DS2502作为加密型存储芯片,则需要对微控制器从EEPROM中读出编程数据根据DS2502中读取到的芯片ROM码进行运算,产生新的编程数据对DS2502编程,由于每个芯片ROM码不同,因此每个芯片需要写入的数据也不同,因此只能对10片DS2502依次编程。在芯片编程完成后,再依次对编程芯片进行校验,如数据出错,则驱动发光二极管进行报错处理。由于DS2502是只添加存储器,所以在驱动+12V编程脉冲之前,应通过读取DS2502根据命令、地址和数据字节所计算出的8位CRC校验码来判定数据传输的正确性。微控制器程序流程如图4所示。  5 结束语 DS2502量产型专用编程器采用脱机编程工作方式,每次可编程最大多达10片DS2502。采用EEPROM存放多组编程数据,通过功能键及数码管选择编程数据,并通过串口与计算机进行通信,实现对EEPROM中所存放的编程数据更新,增强了编程器的灵活性。电路依照DS2502编程算法设计,保证了芯片编程的正确性和可靠性。经实际生产测试,工作状况良好,满足批量生产DS2502芯片的需求。 参考文献 1 Dallas Corporation ,DS2502 Data Sheet 2 Dallas semiconductor,Book of DS19xx iButton Standards 3 吴金戌 沈庆阳 郭庭吉 8051单片机实践与应用 清华大学出版社 作者简介:谢建江(1982-),男,江西万安人,解放军信息工程大学信息工程学院计算机科学与技术系计算机应用专业硕士研究生。 李清宝,男,解放军信息工程大学信息工程学院副教授,硕士研究生导师,博士。 通信地址:(450002)河南省郑州市1001信箱715号 E-mail:xiexie198328@hotmail.com |