基于STC15W204S单片机模拟单总线EEPROM芯片DS2431
张杰1,杨笔锋1,2,严学阳1,刘语嫣1
(1.成都信息工程大学 电子工程学院,四川 成都 610225;2.中国气象局大气探测重点开放实验室,四川 成都 610225)
:基于STC15W204S单片机研究模拟了单总线EEPROM芯片DS2431。SOP8封装的STC15W204S单片机具有引脚少、价格便宜、不需要外部晶振、内部时钟从5 MHz~35 MHz可设置的优点。DS2431是一款具有1 024 bit的1 Wire EEPROM芯片,它具有4页×256 bit的存储空间,64位唯一不可更改的光刻。64位光刻的唯一性使DS2431广泛应用于硬件电路的加密、硬件电路唯一的ID序列号以及密钥信息的存储等。主要介绍了1Wire通信协议、单片机模拟芯片硬件电路、单片机模拟DS2431的程序设计流程、单片机模拟DS2431的64位光刻以及EEPROM。
:TP368.1文献标识码:ADOI: 10.19358/j.issn.1674-7720.2017.08.011
引用格式 :张杰,杨笔锋,严学阳,等.基于STC15W204S单片机模拟单总线EEPROM芯片DS2431[J].微型机与应用,2017,36(8):31-33,38.
0引言
*基金项目:国家重大科学仪器设备开发专项(2012YQ110205)DS2431是一款具有64位唯一光刻的1 024 bit EEPROM芯片。模拟DS2431就是要模拟DS2431的64位光刻和数据的存储,从而实现用单片机模拟的DS2431和原来的DS2431具有相同的64位光刻和数据存储功能。利用64位光刻的不可更改的特性,DS2431广泛应用于硬件电路加密、设备唯一ID序列号、关键信息存储、知识产权保护、安全功能控制等。单总线设备具有简单的线路、较少的硬件开销和低廉的成本等优点,便于总线扩展和维护[12]。作为一种简单的信号传输电路,1Wire总线用一根数据线来实现一个或者一个以上的从器件和主控制器之间的半双工通信。单总线通信可以通过初始化1Wire器件、识别1Wire器件和主机与从机之间数据交换三个步骤来实现[34]。它是主从结构,主机呼叫从器件的时候,从器件才进行应答[5]。所以,主机只有通过严格的单总线命令序列来访问1Wire器件,即初始化从器件、ROM、功能命令[67]。如果出现序列混乱,1Wire器件将不会相应主机的命令[89]。模拟1Wire器件要求单片机严格应对单总线命令序列和命令时隙,要求单片机对主机发出的命令进行应答[10]。通过对DS2431应答模拟从而达到用单片机模拟DS2431的目的,用这种方法也可以对其他的1Wire器件进行模拟。
1单总线协议
1.11-Wire单总线时序
1Wire器件在数据传输过程中都会遵循严格的通信协议,单总线通信协议有复位脉冲、应答脉冲、写1、写0、读1、读0几种类型[11]。
单总线的初始化步骤如图1所示。
(1)主机拉低总线480 μs~960 μs,然后主机释放总线进入接收状态[12]。
(2)从机监测到主机不少于480 μs的复位信号后等待15 μs~60 μs,然后产生一个应答信号(拉低总线60 μs~240 μs)[13]。
(3)从机释放总线至少一个2 μs的恢复时间。
写1和写0时序步骤如图2所示。
(1)主机拉低总线5 μs~15 μs,然后主机将总线拉高或者拉低45 μs。
(2)从机在15 μs后开始采样。
(3)主机释放总线并且有至少一个2 μs的恢复时间(标准是5 μs)。
(4)整个写1时隙至少60 μs。
读数据时序步骤如图3所示。
(1)主机将总线拉低至少1 μs。
(2)从机从下降沿到来之后将总线拉低或者拉高并保持15 μs。
(3)在主机拉低总线后15 μs内主机释放总线并采样。
(4)15 μs后由电阻将总线拉高。
(5)整个时间不少于60 s,每个时间片之后有一个至少2 μs的恢复时间。
1.2单总线接口
图4单总线接口单总线接口电路是非常简单的,DS2431的读和写的电压范围是2.8 V~5.25 V。在I/O口接一个上拉电阻,根据DS2431数据手册,上拉电阻电阻的范围是0.3 kΩ~2.2 kΩ。单总线接口如图4所示。
2模拟单总线器件时序及接口
2.1模拟单总线器件时序
模拟单总线器件的时序最重要的是在符合单总线通信协议的规定时间内对主机发起的信号进行应答,其中需要对延时把握精确,错过了时序主机有可能视从机没有应答从而通信失败。在模拟时序的时候可以借助逻辑分析仪来对时序进行分析并通过分析结果对模拟时序进行微调。
模拟单总线初始化步骤如图5所示。
(1)单片机等待主机复位信号,监测主机拉低总线并在480 μs内再次确认主机拉低了总线。
(2)单片机在确认了复位信号后延时等待总线拉高。
(3)单片机监测到主机将总线释放拉高后拉低总线(从机应答)60~240 μs。
(4)单片机释放总线(拉高总线表示应答完成)。
模拟主机写1和写0时序步骤:
(1)单片机等待主机拉低总线发起通信。
(2)在监测到主机拉低总线后,单片机延时几微秒后开始采样。
(3)单片机采样后开始延时,主机写完数据后恢复总线。
(4)整个时间持续60 μs。
时序图如图5所示,其中采样时间可以微调,可以借助逻辑分析仪分析时序。主机写命令55h并匹配。
ROM的模拟时序如图6所示。
模拟主机读数据时序步骤:
(1)主机将总线拉低至少1 μs。
(2)单片机监测到主机拉低总线1 μs后立即对总线拉高或者拉低,要确保主机能够进行采样。
(3)主机采样后,单片机恢复总线。
(4)整个时间不少于60 μs,每个时间片之后有一个至少2 μs的恢复时间。
时序图如图3所示,其中单片机对总线操作的时间可以微调,可以借助逻辑分析仪分析时序。主机写命令FOh并搜索ROM的模拟时序如图7所示。
2.2模拟单总线器件硬件电路接口设计
STC15W204S单片机工作电压范围为2.5 V~5.5 V,在ISP编程时内部时钟在5 MHz~35 MHz范围内可调,±1%温飘(-40℃~+85℃)常温下温飘±0.6%(-20℃~+65℃),可以满足硬件指标要求。STC15W204S有8个引脚6个I/O口。调试时P3.0和P3.1做串行接口用于烧写程序,P3.3、P5.4、P5.5可以接一个LED灯用于调试观测单片机状态。烧写好程序的单片机只需要3个引脚便可以工作。电路接口设计如图8所示。
3模拟DS2431的程序设计
3.1程序设计的流程
图9程序设计流程主机会在一开始发出复位信号,一旦检测到有从器件存在就可以发出ROM操作命令[14]。ROM命令有“读”ROM【33h】、“匹配”ROM【55h】、“跳过”ROM【CCh】、“搜索”ROM【F0h】等。如果主机发出了ROM命令,那么单片机接收到了ROM命令就要做出相应的回应。同样接下来主机会发出读写操作,单片机也进行相应的回应。程序设计流程如图9所示。
3.2模拟64位光刻和EEPROM
因为每一片单总线芯片的64位光刻都是唯一且不可更改的,所以DS2431的光刻可以用来做硬件ID序列号,也可以用来加密硬件,EEPROM可以用来存储关键信息。
为模拟光刻,首先读出一块DS2431的光刻,然后用单片机开一个8 B的数组存储这些光刻。当主机发出33h命令时单片机就按字节给它吐光刻,当主机发出F0h命令时单片机就按位吐出光刻。当主机发出55h命令时单片机默认接收相应的数据即可[15]。需要注意的是主机发出的命令是先写高位再写低位,在接收命令的时候也是先接收高位再接收低位。
模拟EEPROM可以用单片机开一块数组用来存储数据,可以一开始就给这些数组写一些固定的值,主机来读的时候就吐数给它。也可以开一片内存来存储主机写的数,单片机可以将这些数据存到片内EEPROM。在设计这个数组的时候要参照模拟目标的EEPROM结构,单片机在接到地址命令和页码命令时用相应的数组结构来对应。
4结论
利用STC15W204S单片机模拟DS2431有很好的发展前景和利用价值,STC15W204S单片机具有引脚少、功耗低、不需外部晶振、价格低廉等优点。本研究实现了用单片机模拟DS2431,破解了DS2431光刻不可以复制的难题。本研究实现了用单片机模拟单总线从机的应答时序,利用这种方法还可以模拟其他的单总线设备。DS2431广泛应用于打印设备、医疗设备、硬件电路的加密。利用STC15W204S单片机模拟DS2431的部分功能就可以破解某些加密设备、复制硬件电路等。STC15W204S单片机具有温度漂移,在复制的时候应考虑温度漂移范围。单片机的工作范围应设置不同的频率多次下载程序测试,并结合延时函数的修改来确定,下载程序时应取其正常工作范围的中间值来克服温度漂移问题。可以利用高低温实验来验证程序及模拟单片机的可靠性。
参考文献
[1] 陈浩. 基于智能传感器和单片机的温度监测系统[D]. 北京:华北电力大学,2005.
[2] 陈志英,李光辉. 单总线技术及其应用[J]. 电气时代,2015(8):74-75.
[3] 杨张利. IC卡燃气表智能控制及检测系统研究[D]. 重庆:重庆大学,2007
[4] 胡皓,雷金莉,周妮娜. 1-Wire总线技术及其在火灾监测中的应用[J]. 机电工程技术,2006,35(6):68-71.
[5] 张扬清. 基于双机通信的电压和温度监控系统[J]. 科技风,2013(23):104-105.
[6] 张东. 基于双CPU的温室温度远距离测控系统研究[D]. 重庆:重庆大学,2007
[7] 张华峰. One-Wire Bus检测网从站管理及可靠传输研究[D]. 南昌:南昌大学,2007
[8] 高罗卿. 1-wire系统中TM卡的单片机等效替换[J]. 单片机与嵌入式系统应用, 2008(8):62-65.
[9] 李颖. 车用动力电池SOC估算方法的研究及其管理系统设计[D]. 沈阳:东北大学, 2012.
单片机实例分享,温度记忆杯垫
“记忆杯垫”是我利用身边的材料制作的,杯垫材料是一张光盘,导热材料是硬币,用502胶水和加厚双面胶粘合,制作起来十分简单。
这个作品的设计初衷是源自个人的生活经验,希望和我有着一样烦恼的“技术宅”们会喜欢这个设计。笔者作为“职业码农”,常常遇到这样的困扰:早上冲好的咖啡,放着放着就凉了;同事胃不好,需要喝温水,可一忙就忘记了……想必每个人都有这样的经历,这次的设计,就是给大家解决这一问题——可以及时提醒人们饮用热饮。喜欢喝热饮的朋友,以后不必再因为冷却的热饮而苦皱眉头了!
功能描述
“记忆杯垫”能实现以下功能:当我们把装有温度较高液体的杯子放到杯垫上时,杯垫上安装的温度传感器开始测量杯子的底部温度,只要杯子不是隔热材料的,那么杯子的表层温度就会和里面的液体温度成正比,当杯子内的液体降到了适合人的饮用习惯时,此时按下“记忆键”,杯垫就将永久记录下此时的杯子底层温度;当使用者再次将装有热饮的杯子放在杯垫上时,液体在降温过程中,只要杯子的底层温度与之前记忆的温度接近,杯垫就可以根据设计者的要求提示主人饮用,比如通过闪烁灯提示或者通过音乐提示。
工作原理
这次设计的核心就是围绕温度传感器DS18B20和单片机EEPROM的应用。
DS18B20采集温度,单片机负责数据的处理,当有温度需要记录时,单片机将待记录温度存储到单片机EEPROM中;当EEPROM中有了温度记录后,单片机将采集到的数据与EEPROM中数据随时进行比较,当数据接近时,就会做出相应输出,开启提示功能。
当下次冲好了一杯咖啡,就可以把杯子放到杯垫上面了,温度传感器会将采集到的温度T值与EEPROM里的数值A做比较,当A-1 < T < A+1 时,杯垫侧面的8个发光二极管就会闪烁,以此来提示主人喝咖啡或水。
温度的差值也可以根据设计者的需要自行改变,比如在比较寒冷的地区,T与A的差值可以通过改变程序来实现。笔者在南方,实际测试的时候发现T与A的值在±1之间就可以了。
记忆键在向单片机记录温度数据的时候,也会擦除之前的数据,这样一个按钮就可以完成需要的操作。
国产的STC单片机大多数都自带了一定大小的EEPROM,这就给设计者带来了极大的方便。为了让电路更加简洁,这次选用的是STC11F04E的1T单片机,其具备4KB的程序存储空间和1KB的EEPROM空间,20引脚的封装设计大大减小了PCB面积。图15.1为电路原理图,制作说明见图15.2、图15.3。
图15.1 电路原理图
图15.2
图15.2 光盘中间的圆孔用来放置温度传感器,上面用金属片导热材料固定,并涂上硅脂,增加导热效果,因为大多数杯子底部是凹进去的,也可以用硬币这种有一定厚度的材料导热。
图15.3
图15.3 杯垫的背面,用双面胶(电工固定线盒那种)粘住电池盒、电路板、流水灯,温度传感器已经粘在电路板下面了
程序设计
这里要作出说明的是,大多数DS18B20程序代码都是为12T单片机设计的,而1T单片机指令速度要比12T单片机快很多,这就导致了通常的DS18B20程序不能直接拿来调用。笔者根据STC的官方资料,通过计算指令外加逻辑分析仪测试的方式,得出的结论是,11系列的1T单片机指令要比12T单片机快6.5倍左右,根据这个数据来修改原始DS18B20程序的延时程序和EEPROM程序,就能保证系统的稳定性。
STC绝大多数芯片都集成了EEPROM,不同型号的擦写程序也是大同小异,使用起来十分方便,无需额外EEPROM的IC,更不需要IC通信程序。因为是内部集成的,程序代码简单,很好理解,节约了设计成本的同时,也给应用者节约了程序设计时间。
STC的官方资料很明确地给出了EEPROM的原始程序,笔者根据自己的理解,为使程序更加简洁,对官方程序作了一些改动,应用了C语言的宏定义,自己也做了对应的库文件,方便实用。本程序是在Keil环境下编译的,使用时要添加我自己写的basic.h、STC11Fxx_IAP.h文件,同时要下载官方的单片机库文件,这样方可保证程序的正确编译。
■ 本制作的相关源文件可以到qq群657864614进行下载。
■介绍一个与众不同的淘宝店铺:首页-数码达人小二-淘宝网,不信你试试?
相关问答
单片机 中程序已经下到flash中了,请问 eeprom 的作用是什么?确实现在单片机eeprom和flash都差不多,象STC的单片机eeprom就是flash的一部分,只不过有的是单独作为一个存储空间,有的是和程序存储器共用的,程序存储器用不...
MSP430, stc单片机 的优缺点是什么?MSP430,stc单片机的优缺点:MSP430优点:电压低,功耗低,3.3V供电,16位,运行速度快,内置硬件乘法器,乘除法运算都为单周期指令,片内集成资源丰富,...MSP430,st...
谁用过 STC 15W415S(IRC15W415S)的 EEPROM ?你用到了就有用,不用的话就无视吧,还有STC的EEPROM正确的来说应该叫FLASH,能在进行位读写(不用擦除)的才算EEPROM,STC的我记得需要进行擦除。不管是EEPROM...
stc 12c5a60s2 单片机 DAC?STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度...
stc 15系列 单片机 哪个型号的最流行?比较流行的有很多种,下面我例举几种。1.STC15W4K32S4系列1T8051单片机,4K字节SRAM,超高速四串口,6路15位PWM主要性能:大容量4096字节片内RAM数据存储器......
老铁们,有没有人能告诉我:如何自制 单片机 烧录器?[回答]拿来了这么简单嘛……只要给定一个带串口的51单片机实验板,你就把STC单片机装上就行了。STC单片机烧录器却是忽悠人的。8031不带程序存储器,它的程...
一半存储在 EEPROM 中? - 156****4340 的回答 - 懂得一般来说应该是存放在FLASH里的吧,如果CODE区域用完了才会去找EEPROM写代码。我觉得就好像STC说他们的芯片有ISP系统升级功能一样,其实没有,ISP区是...
的 单片机 和 stc 的51 单片机 相比有什么优势?STC单片机属于51系列的单片机,内核是8051。STC单片机是1T的单片机,比传统的51单片机要快很多,而且也增加了很多新的功能,增加了内部EEPROM存储器,更方便保...
MCS-51系列 单片机 的典型芯片有哪些,各有什么特点及不同?-ZOL问答现在的51单片机种类繁多,比如以一个机器周期=几个时钟周期分为:1、普通的12T单片机,8051,8031,AT89C5?8032等都是2、6T模式,如STC89系列等3、4T模式,如80C3...
stc 89c52有什么区别吗和 stc 90c51?STC90C51单片机是STC89C52的改进型,除了封装上增加了lqfp44和plcc44以外,在内部功能上也做了很大的改进,主要有以下几点:第一,增加了3V型号。第二,片内...