1wire系统中TM卡的单片机等效替换

发布者:hfy13567003617最新更新时间:2014-03-13 来源: elecfans关键字:1wire系统  TM卡  单片机  等效替换 手机看文章 扫描二维码
随时随地手机看文章

  TM(Touch Memory)卡是美国Dallas公司的专利产品。它采用单线协议通信,通过瞬间碰触完成数据读写,既具有非接触式IC卡的易操作性,又具有接触式IC卡的廉价性,是当前性价比最优秀的IC卡之一。它的外形类似于一个钮扣(button)电池,可镶嵌于卡片、钥匙扣等物体上。

  TM卡通过一个多功能器将数据线、地址线、控制线和电源线合并为1根线,实现单线通信。当主机加电时,TM卡通过500 kΩ和50 Ω阻抗之间的切换来响应主机,用信号被拉低的时长(长或短)来表示数字逻辑(长为1,短为0)。由于阻抗切换的幅度为10 000∶1,因此,触点的接触电阻不会影响数字信号的辨识。

  2 1wire通信协议

  单总线即只有1根数据线, 系统中的数据交换、控制都由这根线完成。设备(主机或从机)通过一个漏极开路或三态端口连至该数据线, 以允许设备在不发送数据时能够释放总线, 而让其他设备使用总线。单总线通常要求外接一个约为4.7 kΩ 的上拉电阻, 这样, 当总线闲置时, 其状态为高电平。主机和从机之间的通信可通过3个步骤完成: 初始化1wire 器件;识别1wire 器件;交换数据。由于它们是主从结构,只有主机呼叫从机时, 从机才能应答, 因此主机访问1wire 器件都必须严格遵循单总线命令序列, 即初始化、ROM 命令、功能命令。如果出现序列混乱,1wire 器件将不响应主机(搜索ROM 命令,报警搜索命令除外)。

  SMC1990A1是具有工厂激光刻度的64位ROM ID码,其中包括48位的序列号、1个8位的CRC编码和1个8位的产品系列号。数据遵循单总线协议传输,用于读和写的电源由数据线本身提供,而不需要提供外部电源。

  3 SMC1990A1的等效替换

  单总线技术具有节省I/O口线资源,线路简单,硬件开支少,成本低,便于总线扩展和维护等优点。在分布式测控系统中有着广泛的应用。在实际应用过程中,可能会出现TM卡丢失和损坏的情况,如果发生此类情况,往往需要根据一个新TM卡来设置多个采集点的权限。如果采集点设置得很多,将浪费大量的人力。此时,利用单片机来替换已丢失或损坏的TM卡就显得很有必要。

  3.1 系统硬件组成

  系统采用AT89C51作为控制器,并采用24 MHz晶振。为了能尽量适应标准的单总线通信协议,晶振频率应尽量高。考虑到单总线通信协议所有的传输都是由主机发起的,因此为了尽快地响应主机,采用中断处理。选择AT89C51的INT0(即P3.2)作为SMC1990A1等效替换的正极。图1为TM卡的等效替换示意图。

按此在新窗口浏览图片

图1 TM卡的等效替换

  3.2 系统软件设计

  对于SMC1990A1的等效替换,主要是对其时序的分析。对于SMC1990A1子设备,主要的编程是针对主机而言的,传输都是由主机发起的。现在改为单片机模拟SMC1990A1子设备(现称为“从机”)。

按此在新窗口浏览图片

图2 初始化时序

  首先,初始化时序,如图2所示。主机首先发送一个复位脉冲,历时tRETL(最短为480 μs的低电平信号),然后释放总线并进入接收状态。从机在检测到总线的上升沿后,等待tPDH时间后,从机拉低总线发出存在脉冲,历时tPDL(低电平,持续60~240 μs),然后释放总线。释放总线通过拉高总线实现。

  对应于从机,初始化时序的中断服务程序流程如图3所示。

按此在新窗口浏览图片

图3 初始化时序的中断服务程序流程

  下面是主机写0和写1时序。在初始化时序后,当主机总线从高电平拉至低电平时,就产生写时间隙。在开始15 μs之内,应将所需写的位送到总线上,从机在开始后15 ~60 μs间对总线采样。若为低电平,写入的位是0,如图4所示;若为高电平,写入的位是1,如图5所示。连续写多位间的间隙tREC应大于1 μs。[page]

按此在新窗口浏览图片

图4 主机写0时序

按此在新窗口浏览图片

图5 主机写1时序

  对应于从机,是等待主机命令。从机等待主机命令的中断服务程序流程如图6所示。

按此在新窗口浏览图片

图6 从机等待主机命令的中断服务程序流程

  最后是主机读数据时序,如图7所示。主机总线在开始时刻从高电平拉至低电平时,总线只需保持低电平1~7 μs。之后在tLOWR时刻释放总线,一般在tRDV时刻采样总线(15 μs处),读时间隙在tLOWR与tRDV之间有效。从机必须在tRDV时刻前拉高或拉低总线,主机在tRDV时刻采样,并在60~120 μs内释放总线。

按此在新窗口浏览图片
 
图7 主机读数据时序

  对从机来说,则为发送64位ID处理。程序处理的难点在于从机必须在15 μs之前拉高或拉低总线,以供主机在15 μs处采样总线。程序通过判断位地址00H处的状态来实现此功能。通过判断位地址01H处的状态来确定发送位0或发送位1。从机发送64位ID处理的中断服务程序流程如图8所示。

按此在新窗口浏览图片

  图8 从机发送64位ID处理的中断服务程序流程

  在完整地实现一次ROM功能的过程中,从机首先等待主机发送的复位脉冲,待检测到后发图9实现ROM功能的流程送存在脉冲应答。随后,从机开始接收主机发送的ROM命令,并将其保存,以判断随后的操作。最后,从机发送TM卡的64位标识码,完成一次ROM命令的执行。实现ROM功能的流程如图9所示。[page]

  单片机的汇编程序如下:

  ORG0000H

  AJMPInit//跳到Init段

  ORG0003H

  AJMPJudge//跳到中断服务程序

  Init: //初始化

  MOVDPTR,#ID//ID表地址

  MOVR5,#001H

  MOVR7,#000H

  CLR00H

  SETB01H

  SETBP3.2

  LCALLDelay10s

  CLRP3.2//拉低总线叫醒主机

  LCALLDelay100us

  SETBP3.2

  SETBEA

  SETBIT0

  SETBEX0

  MAIN: AJMPMAIN//主循环

  Judge:CLREX0//判断执行动作,关中断

  JNB00H,SecondJ//跳到二次判断

  ID_IN:JB01H,SEND1//从机发送TM卡64位标识码

  CLRP3.2//发送位0

  SEND1:SETBP3.2 //发送位1

  LCALLDelay30us

  MOVA,R5//R5循环左移

  RLA

  MOVR5,A

  MOVA,#00H

  MOVCA,@A+DPTR

  ANLA,R5

  CLR01H//设置01H状态

  JZRelease1

  SETB01H

  Release1:SETBP3.2

  MOVA,R5

  ANLA,#080H//判断字节发送完否

  JZINTEND

  INCDPTR

  AJMPINTEND//跳到中断结束

  SecondJ:MOVA,R7//二次判断

  JZWaitReply//跳到执行应答判断是否命令接收结束

  ANLA,#008H

  JZWaitOrder//跳到执行接收命令

  SETB00H

  WaitOrder: LCALLDelay15us//接收命令

  NOP

  NOP

  MOVA,P3//采样P3.2

  ANLA,#004H

  JZSAVE_R6

  MOVA,#001H

  SAVE_R6:

  ORLA,R6 //保存命令到R6

  RRA

  MOVR6,A

  RLOOP1:

  MOVA,P3//判断主机的发送状态,是否返回

  ANLA,#004H

  JZRLOOP1

  AJMPINTEND//跳到中断结束

  WaitReply://执行应答

  RLOOP:MOVA,P3//判断主机的复位信号

  ANLA,#004H

  JZRLOOP

  LCALLDelay30us

  CLRP3.2//从机拉低电平应答

  LCALLDelay150us

  SETBP3.2//释放总线

  NOP

  NOP

  NOP

  NOP

  INTEND:

  INCR7

  CLRIE0

  SETBEX0//开中断

  RETI//中断返回

  ID:DB001H//ID表

  DB0C3H

  DB04DH

  DB057H

  DB033H

  DB022H

  DB000H

  DB0D2H

  本文代码在实际运用中得到了很好的验证,能够稳定地替代SMC1990A1实现TM卡的ROM功能,极大地方便了权限管理人员用于丢失或损坏的TM卡的权限管理。

关键字:1wire系统  TM卡  单片机  等效替换 引用地址:1wire系统中TM卡的单片机等效替换

上一篇:基于uC/OS-II的智能窗系统设计
下一篇:智能给水控制器的软硬件设计

推荐阅读最新更新时间:2024-03-16 13:38

51单片机教程:单片机数据传送类指令
单片机的累加器A与片外RAM之间的数据传递类指令 MOVX A,@Ri MOVX @Ri,A MOVX A,@DPTR MOVX @DPTR,A 说明: 1)在51系列单片机中,与外部存储器RAM打交道的只能是A累加器。所有需要传送入外部RAM的数据必需要通过A送去,而所有要读入的外部RAM中的数据也必需通过A读入。在此我们能看出内外部RAM的区别了,内部RAM间能直接进行数据的传递,而外部则不行,比如,要将外部RAM中某一单元(设为0100H单元的数据)送入另一个单元(设为0200H单元),也必须先将0100H单元中的内容读入A,然后再传送到0200H单元中去。 要读或写外部的RAM,当然也必须要知道RAM的地址,
[单片机]
ROHM开发出适用于搭载自动启停系统车辆的车载微控制器用通用系统电源
全球知名半导体制造商ROHM株式会社(总部位于日本京都)开发出系统电源“BD39001EKV-C”,该产品非常适用于以HEV和EV等的汽车电动助力转向、燃油喷射装置等设备使用的各种高性能微控制器。 本产品采用ROHM独有的全新升降压自动切换控制方式,使电池电压下降自动启停后也可实现稳定的电压供给,同时,还使功率转换效率与以往产品相比最高可提升5%。不仅如此,针对越来越强调标准化的汽车行业,还搭载了启动时序设定功能以适应各种微控制器。 产品已于2014年3月份开始出售样品(500日元/个:不含税),计划从2014年12月份开始暂以月产10万个的规模投入量产。前期工序的生产基地为ROHM滨松株式会社(滨松市),后
[汽车电子]
ROHM开发出适用于搭载自动启停<font color='red'>系统</font>车辆的车载<font color='red'>微控制器</font>用通用<font color='red'>系统</font>电源
想要低功耗高效能车用MCU,不妨先看看这一款
在车用MCU领域,RENESAS公司无疑是世 界领先的厂商。其推出的RL78/F12系列微控制器(MCU)是一款具备业界领先的低耗电量及高效能MCU产品。作为瑞萨RL78新系列中的第1款F系 列产品,RL78/F12专为车载电子而设计,其有助于降低系统耗电量并提供更高效能,适合Keyless感应式遥控门锁、电动窗控制、电动后视镜控制及 其他汽车控制的应用。 图1:RL78/F12微控制器 随 着汽车智能化的不断发展,车内使用的微控制器数量持续上升,使用功能也不断丰富和完善。对于可提供更低耗电量、能缩小印刷电路板安装面积,以及提供技术以 降低整体系统元件数量的MCU的市场需求逐渐明显。为了更好的适应市场新变化,RENESA
[汽车电子]
想要低功耗高效能车用<font color='red'>MCU</font>,不妨先看看这一款
AT89C51单片机在无线数据传输中的应用
摘要:介绍无线数据传输系统的组成、AT89C51单片机串行口的工作方式及其与无线数字电台接口的软硬件设计与实现方法。 关键词:AT89C51 串行口 无线数字电台 串行通信 一般的数字采集系统,是通过传感器将捕捉的现场信号转换为电信号,经模/数转换器ADC采样、量化、编码后,为成数字信号,存入数据存储器,或送给微处理器,或通过无线方式将数据发送给接收端进行处理。无线数据传输系统就是 样一套利用无线手段,将采集的数据由测量站发送到主控站的设备。 1 系统组成 系统组成如图1、图2所示。 系统由测量站和主控站两部分组成。测量站主要完成对现场信号的采集、存储,接收遥控指令并发送数据。主控站的主要工作是发送遥控指令、
[应用]
STM32单片机(3) 串口中断通信
注:使用普中科技开发板测试时,需要拔掉Boot1短接帽 两根下载线也要拿掉,重启 /******************************************************************************* * * 软件功能: 串口实验(软件延时方式) * *******************************************************************************/ #include stm32f10x.h #include string.h #include delay.h u8 uart1_buf ; int count=0
[单片机]
51单片机四大误区怎么破?小白只需看本文就能进阶
51单片机 的辉煌过去 51单片机指MCS-51系列单片机,CICS指令集。由Intel公司开发,其结构增加了如乘( MUL )、除( DIV )、减(SUBB)、比较(CMP)、16位数据指针、布尔代数运算等指令,以及串行通信能力和5个中断源,内有128个RAM单元及4K的ROM。其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。目前国内的51单片机市场主要为国产宏晶的产品STC系列其号称低功耗,稳定与廉价的特点。    学习51单片机的误区 误区1:51单片机是学习的基础 “51单片机是学习的基础”这句话本身并没有错。在我读本科的时候,当时它无疑是学习的基础——毕竟那时没有更高级的单片机可以供使用,国内更
[单片机]
如何提高血糖仪系统的设计效率
  血糖仪是一种用于测量血液中葡萄糖浓度的医疗设备,根据具体的血糖浓度,可能还需要提供低血糖药物管理功能。血糖仪要使用测试条以便与病人的血滴发生作用。在经过化学反应后,就能从血糖仪上读出用mg/dl或mmol/l单位表示的血糖值。血糖仪应具有便携、低功耗、易用和增强体验等特性,这些要求将直接影响血糖仪产品的技术和利基市场。 传感器和电流分析法   测量血糖的第一步是将血糖浓度转换成电压或电流信号,使用专门的传感器测试条进行电流分析可以实现这一步。传感器使用铂银电极组成过氧化氢被电解电路的一部分。过氧化氢是葡萄糖在葡萄糖氧化膜上氧化的产物。流经电路的电流可以用来度量过氧化氢的浓度,进而得出血糖浓度。 需要指出的是,公式(图1)中
[医疗电子]
如何提高血糖仪<font color='red'>系统</font>的设计效率
PSD813器件在单片机系统中应用
    摘要: 可编程外围器件PSD813应用于单片机系统后,可大幅度地简化CPU外围电路的设计,减小系统体积,降低功耗,增强系统可靠性。介绍了PSD813系列产品的特点,并结合实例介绍了系统硬件设计以及使用流程。     关键词: 可编程外围芯片(PSD)  在线编程(ISP)  PSDSOFT开发软件     随着单片机系统的广泛应用,其功能不断加强,集成度日益增高。但是,由于在传统的单片机系统设计中必须使用许多分立器件组成单片机的外围电路,诸如地址锁存器、PLD、RAM、EPROM等,因此使得整个系统变得十分复杂、可靠性降低、功耗费用增高。由于各个系统的要求不尽一致,这样在开发每一个单片机系统时都必须
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved