版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
非接触式IC卡技术电子与信息工程学院非接触式IC卡技术电子与信息工程学院提纲非接触式IC卡概述系统构成/分类/国际标准非接触式IC卡工作原理
能量传递/信息传递/防冲突非接触式IC卡芯片技术
MIFARE1非接触式IC卡接口技术MIFARE1提纲非接触式IC卡概述为什么要使用非接触式IC卡?在频繁操作的场合,如门禁、考勤、小额电子钱包(公交收费、食堂收费、高速公路收费、停车场收费)、身份认证等场合,接触式IC卡越来越明显的暴露出其弊端:容易磨损操作速度慢使用不方便为什么要使用非接触式IC卡?在频繁操作的场合,如门禁、考勤、什么是非接触式IC卡?
ContactlessICC非接触式IC卡是在卡中敷设天线,利用天线的接收发射,与读写器的天线交换信号,实现一种无线通讯,非接触式IC卡又被称为射频卡(RFC——RadioFrequencyCard),简称RF卡,非接触式IC卡系统被称为射频识别系统(RFID——RadioFrequencyIdentification)。什么是非接触式IC卡?
ContactlessICC非接触非接触式IC卡系统构成非接触式IC卡:数据载体,应答器非接触式IC卡读写器:卡接口设备,阅读器,寻呼器非接触式IC卡系统构成非接触式IC卡:数据载体,应答器
非接触式IC卡的基本构成
非接触式IC卡:芯片+天线+卡基非接触式IC卡的基本构成非接触式IC卡:芯片+天线+卡非接触式IC卡技术(最新版)课件非接触式IC卡读写器的构成高频模块(发送器和接收器)、控制单元耦合元件(天线)
非接触式IC卡读写器的构成高频模块(发送器和接收器)、非接触式IC卡的特点
可靠性高、寿命长。
非接触式IC卡与读写器之间无机械接触,避免了由于接触读写而产生的各种故障。非接触式ID卡表面无裸露的芯片,无须担心芯片脱落、静电击穿、弯曲、损坏等问题,既便于卡片的印刷,又提高了卡片使用的可靠性。
操作快捷便利。动态处理。成本较高。非接触式IC卡的特点可靠性高、寿命长。非接触式IC卡的分类按片内IC:存储卡、逻辑加密卡、CPU卡按工作距离:密耦合卡、近耦合和疏耦合卡
按工作频率的高低:125kHz的低频卡(30kHz~300kHz),13.56MHz的高频或射频卡(3MHz~30MHz),915MHz、2.45GHz的超高频卡(300MHz~3GHz)、5.8GHz的微波卡(>3GHz)。
按卡内芯片供电方式:卡内带电池的有源卡和卡内无电池、由读写器以无线感应方式供电的无源卡
按使用过程中的读写方式:只读卡(ID卡)和读写卡(带EEPROM)非接触式IC卡的分类按片内IC:存储卡、逻辑加密卡、CPU卡EMID厚卡EMID薄卡PHILIPSMIFARE1卡TI(德州仪器)Tag-it电子标签手表卡与钥匙扣卡EMID厚卡EMID薄卡PHILIPSMIFARE1特点频段工作频率数据传输速率读写距离读写区域低频125~134KHz慢适中(<1m)较为均匀高频13.56MHz较快适中(<1m)较为均匀超高频860~960MHz快远(<10m)很难定义不同频段射频卡的特点特点工作频率数据传输速率读写距离读写区域低非接触式IC卡的国际标准标准组织阵营频段技术规范EPCglobal全球产品电子代码管理中心
欧美企业沃尔玛、思科、敦豪快递、麦德龙和吉列等UHF(860-960MHz)电子产品代码(EPC)、电子标签规范和互操作性、识读器-电子标签通信协议、中间件软件系统接口等ISO/IEC国际标准组织/国际电工委员会
全球非盈利工业标准组织多个频段识别卡与身份识别ISO/IEC14443自动识别ISO/IEC15693ISO/IEC18000UID泛在技术核心组织日本电子厂商、IT企业2.45GHz和13.56MHz电子标签超微芯片部分规格
非接触式IC卡的国际标准标准组织阵营频段技术规范EPCglo注释:ICC——集成电路卡CICC——Close-CoupledICC,紧密(密耦合)卡;PICC——ProximityICC,称为接近(近耦合)卡;VICC——VicinityICC,称为邻近(疏耦合)卡。CD——CouplingDevice,是读写器中发射电磁波的部分
注释:ICC——集成电路卡ISO/IEC14443国际标准现阶段ISO/IEC14443(草案)主要有两个体系并存:ISO/IEC14443-TypeA、ISO/IEC14443-TypeB。
TypeA:以PHILIPS公司为代表,包括SIEMENS、HITACHI、GEMPLUS、G&D和Schlumberger等公司
TypeB:以ST(意法半导体)、MOTOROLA、ATMEL、韩国SAMSUNG和日本的NEC等公司为代表。
ISO/IEC14443国际标准ISO/IEC18000国际标准18000-1:物理层18000-2:低于135KHz通信的空中接口的参数;18000-3:在13.56MHz通信的空中接口的参数;18000-4:在2.45GHz通信的空中接口的参数;18000-5:5.8GHz通信的空中接口的参数;18000-6:860-960MHz通信的空中接口的参数;18000-7:433MHz通信的空中接口的参数;ISO/IEC18000国际标准MOVR0,#03HAUTHENTICATION4密码B在校验密码A或密码B正确后可读,可修改;MOVA,#0CH;并校验第一次由(B)环中读写器发出去的随机数RA是否与(D)环中接收到的TOKENBA中的RA’相一致;AntiCollision操作使MCM能在多张Mifare1卡中选择某一张卡。CJNEA,#0AH,T_ERR1 ;(A)环:Mifare1卡取随机数RB=1100,KEY1=1010,READ/WRITE均需整块操作。(2)将二张MIFARE1卡同时放置在读写器天线有效工作范围内,在RFDEMO软件中执行读操作,根据读出的SN找出被选中的卡(例如为1#卡)。4 ;通常数据块中的数据都是需要保密的数据,对这些数据的读/写/加值/减值均需:符合该块存取条件的要求+通过该扇区的密码认证。装载密码(LoadKey)操作:在RFDEMO软件界面中选择密码集0(KEYSET0),密码A(KEYA),将扇区0-14的密码A设置为全F,而将扇区15的密码A设置为全0。ANLA,#0BH ;MOVB,#00HMifare1卡出厂初始化时,所有扇区块3的初始化值均为MOVX@R0,AMOVA,#02H;7,ANTI_STACON ;目前13.56MHz的产品主要包括:ISO14443TypeA卡——Mifare1S50卡、UltraLight卡LEGICTypeA卡、上海公交卡即华虹IC卡、复旦微电子TypeA卡ISO14443TypeB卡——ATMELRF020ISO15693(电子标签)卡——PHILIPSI-Code2、TITag-it标签I-CODE(电子标签)卡——PHILIPSI-Code、上海贝岭BL75R02SONYFelica卡——香港八达通、深圳通中国二代身份证MOVR0,#03H目前13.56MHz的产品主要包括:目前125KHz的产品主要包括:
技术指标
EM4100/4102标准卡4001感应式ID厚卡
8803感应式ID厚卡芯片SwatchGroupEm4102Wafer台湾4001COB台湾8803Wafe工作频率125KHZ125KHZ125KHZ感应距离2-20cm2-20cm2-20cm
尺寸85.5x54x0.82mm85.5x54x2mm85.5x54x1.05mm封装材料PVC、ABSPVC,ABSPVC封装工艺层压封装手工粘贴手工层压号码可选连号喷码
典型应用考勤系统、门禁系统、企业一卡通系统等考勤系统、门禁系统、企业一卡通系统等考勤系统、门禁系统、企业一卡通系统等此外,还包括ATMEL的TEMIC卡系列、TI的低频标签、HITAG卡等。目前125KHz的产品主要包括:
技术指标
EM4100/非接触式IC卡工作原理
要解决的三大问题:(1)非接触卡如何取得工作电压。(2)读写器与IC卡之间如何交换信息。(3)防冲突问题:多张卡同时进入读写器发射的能量区域(即发生冲突)时如何对卡逐一进行处理。
非接触式IC卡工作原理要解决的三大问题:非接触式IC卡与读写器接口电路非接触式IC卡与读写器接口电路(1)读写器发射激励信号(一组固定频率的电磁波),数字信息调制在该射频信号上。(2)IC卡进入读写器工作区内,被读写器信号激励。在电磁波的激励下,卡内的LC串联谐振电路产生共振,从而使电容内有了电荷,当所积累的电荷达到2V时,此电容可以作为电源为其他电路提供工作电压,供卡内集成电路工作所需。(谐振、整流、滤波、稳压)。(3)同时卡内的电路对接收到的谐振信号进行解调,还原数字信息,对信息进行分析处理,判断发自读写器的命令,如需在EEPROM中写入或修改内容,还需将2V电压提升到15V左右,以满足写入EEPROM的电压要求。(4)IC卡对读写器的命令进行处理后,发射应答信息(将应答信息调制到射频信号上)给读写器。(5)读写器接收IC卡的射频信号并进行解调还原出应答信息。
(1)读写器发射激励信号(一组固定频率的电磁波),数字信息调初始化与防冲突
(AntiCollion)如果有2张或2张以上的IC卡进入读写器的工作范围,称之为冲突(或碰撞Collion),此时就需要解决如何对多张IC卡逐一处理的问题——防冲突AntiCollion。防冲突方案:位帧防冲突(BitAntiCollision)动态时隙-ALOHA法(Slotted-ALOHA法)初始化与防冲突(AntiCollion)如果有2张或2张以项目引入——IC卡公交收费机定额收费操作方便快捷可显示余额非法卡或余额不足报警可将当班收款额上传总站数据库总站可调整定额额度。卡遗失可挂失。项目引入——IC卡公交收费机定额收费项目设计之一——卡型选择接触式逻辑加密卡——SLE4406非接触式ID卡——EM的4001卡非接触式逻辑加密卡——PHILIPS的Mifare卡操作不方便没有加密逻辑,不安全容易实现定额收费,操作方便快捷,安全性高,通用性强项目设计之一——卡型选择接触式逻辑加密卡操作不方便没有加密逻Mifare1非接触式IC卡
基本性能指标:卡内器件:无线智能卡芯片MifareMF1ICS50+天线线圈标准:遵从ISO/IEC14443TypeA标准工作频率:13.56MHz数据传送速率:106kbit/s(9.4μs/bit)Mifare1非接触式IC卡基本性能指标:Mifare卡与读写器之间的信号
Mifare卡与读写器之间的信号注释:ICC——集成电路卡LCALLANTICOLLISION ;按标志连接非接触式IC卡读写器与PC机间的通信线,打开MIFARE系列非接触式IC卡演示软件MWRF,确认通信正常。入口:块地址addr,值value存放于D_BUFMOVA,#02H;发送块数据(16B)电子产品代码(EPC)、电子标签规范和互操作性、识读器-电子标签通信协议、中间件软件系统接口等W_addr EQu 05H ;AUTHENTICATIONRET发送命令码30H+块地址(0~63)MOVB,#03H按标志连接非接触式IC卡读写器与PC机间的通信线,打开MIFARE系列非接触式IC卡演示软件MWRF,确认通信正常。MOVX@R0,A修改内容并再次读出,记录修改后的内容。在电磁波的激励下,卡内的LC串联谐振电路产生共振,从而使电容内有了电荷,当所积累的电荷达到2V时,此电容可以作为电源为其他电路提供工作电压,供卡内集成电路工作所需。ANTICOLLISION命令(2)修改扇区14的存取控制字节,将扇区14块0设置为校验密码A/B正确可读,永不可修改。副载波:fc/16=847.ANLA,#0FHMifare卡的信号调制方式
TypeA与TypeB调制程度的比较
TYPEA:100%ASKTYPEB:10%ASK注释:ICC——集成电路卡Mifare卡的信号调制方式Ty从读写器到卡的调制与编码载波:fc=13.56MHz数据传输速率:13.56MHz/128=106kbit/s(9.4μs/bit)调制方式:TYPEA用100%ASK,TYPEB用10%ASK,编码方式:TYPEA用改进的MILLER编码,TYPEB用NRZ编码(不归零制数位编码)从读写器到卡的调制与编码载波:fc=13.56MHz从卡到读写器的调制与编码副载波:fc/16=847.5kHz数据传输速率:106kbit/s调制方式:副载波调制编码方式:TYPEA用MANCHESTER-ASK,TYPEB用BPSK-NRZ(二进制相移键控数位编码)从卡到读写器的调制与编码副载波:fc/16=847.5kHMifare1卡片的存储结构
存储容量:1024×8位字长(即1KB),存储介质:EEPROM分为16个扇区(扇区0~15)每个扇区有4个块(Block)块0、块1、块2和块3。每个块有16个字节。一个扇区共有16Byte×4=64Byte
Mifare1卡片的存储结构存储容量:1024×8位字长块功能详解1)厂商块地址:扇区0块0内容:IC卡厂商标志。其中:第0~4个字节为卡序列号SN,第5个字节为序列号的校验码;第6个字节为卡容量字节“SIZE”;第7,8个字节为卡类型号Tagtype;特性:基于保密性和系统的安全性,这一块在IC卡厂商编程之后被置为写保护,因此该块不能再复用为应用数据块。例:420A7E00368804004481740630373937H序列号SN:420A7E00H+校验码36H容量字节SIZE:88H卡类型号TagType:0400H
块功能详解1)厂商块块功能详解2)数据块每扇区3个数据块(扇区0只有2个),每块16字节。可由区尾块中的存取控制位(accessbits)配置为:
读写块:用作一般的数据保存,可用读/写命令直接读/写整个块值块:用作数值块,可以进行初始化值、加值、减值、读值的运算,相应配用的命令为INC/DEC/RESTORE/TRANSFER命令。通常数据块中的数据都是需要保密的数据,对这些数据的读/写/加值/减值均需:符合该块存取条件的要求+通过该扇区的密码认证。
块功能详解2)数据块块功能详解3)区尾块
每个扇区的块3为区尾(SectorTrailer)块:
KEYA(6B)+Accessbits(4B)+KEYB(6B)例:A0A1A2A3A4A5FF078069B0B1B2B3B4B5密钥A:A0A1A2A3A4A5H(缺省值)密钥B:B0B1B2B3B4B5H(缺省值)存取控制位:FF078069H(缺省值)
块功能详解3)区尾块Mifare1卡存取控制与数据区的关系
Accessbits(存取控制位):定义该扇区中4个块的访问条件,及定义数据块的类型(读写或值)Mifare1卡出厂初始化时,所有扇区块3的初始化值均为
A0A1A2A3A4A5FF078069B0B1B2B3B4B5
卡初始化后的存取控制条件为:密码A永不可读,校验密码A或密码B正确后可以修改;密码B在校验密码A或密码B正确后可读,可修改;数据块在校验密码A或密码B正确后可读,可修改。
Mifare1卡存取控制与数据区的关系Accessb小结:MIFARE1卡特点一EEPROM存储器结构提供多应用:1K字节EEPROM,16个扇区,4数据块/扇区,16字节/块。用户可以定义每一个存储器块的访问条件。每个扇区(每应用)拥有各自独立的密钥,支持带密钥层次的多应用。小结:MIFARE1卡特点一EEPROM存储器结构提供多应Mifare1卡的密码认证方式
Mifare1卡的密码的认证采用了三次相互认证的方法,具有很高的安全性。
Mifare1卡的密码认证方式Mifare1卡的密NOPDJNZR7,ANTI_LOOP18000-1:物理层Mifare1非接触式IC卡功能组成MOV22H,A ;LCALLREAD ;卡类型号TagType:0400HDV=1?(EEPROM写入结束否?)存取控制位保护,用户可以定义每一个存储器块的访问条件AntiCollision操作使MCM能在多张Mifare1卡中选择某一张卡。(5)取走(4)中的卡,重新读出并记录被选中的卡的扇区0块1的数据,并记录在报告上。Mifare1非接触式IC卡功能组成注意:严禁修改对块3的设置,否则容易错误将存取控制位设为永不可写,将无法恢复为默认值。MOVR0,#06H读取卡回送的UID(SN)可由区尾块中的存取控制位(accessbits)配置为:通常数据块中的数据都是需要保密的数据,对这些数据的读/写/加值/减值均需:符合该块存取条件的要求+通过该扇区的密码认证。MOVB,#01HSwatchGroupEm4102WaferMOVB,#00H ;(A)环:Mifare1卡向读写器发送一个随机数据RB;(B)环:读写器收到RB后向Mifare1卡片发送一个令牌数据TOKENAB=用读写器中存放的密码加密后的RB+读写器发出的一个随机数据RA;(C)环:Mifare1卡片收到TOKENAB后,用卡中的密码对TOKENAB的加密的部分进行解密得到RB’,并校验第一次由(A)环中Mifare1卡片发出去的随机数RB是否与(B)环中接收到的TOKENAB中的RB’相一致;若读写器与卡中的密码及加/解密算法一致,将会有RB=RB’,校验正确,否则将无法通过校验;(D)环:如果(C)环校验是正确的,则Mifare1卡片用卡中存放的密码对RA加密后发送令牌TOKENBA给读写器;(E)环:读写器收到令牌TOKENBA后,用读写器中存放的密码对令牌TOKENBA中的RA(随机数)进行解密得到RA’;并校验第一次由(B)环中读写器发出去的随机数RA是否与(D)环中接收到的TOKENBA中的RA’相一致;同样,若读写器与卡中的密码及加/解密算法一致,将会有RA=RA’,校验正确,否则将无法通过校验;NOP(A)环:Mifare1卡向读写器发送一个随机数据(A)环:Mifare1卡取随机数RB=1100,KEY1=1010,加密/解密算法:异或,发送RB给读写器(B)环:读写器取随机数RA=0011,KEY2=1010,加密/解密算法:异或,接收RB对RB加密:TOKENB=RB异或KEY2=0110,发送TOKENB+RA(C)环:Mifare1卡片对TOKENB解密:RB‘=TOKENB异或KEY1=1100=RB,校验正确;(D)环:Mifare1卡片对RA加密TOKENA=RA异或KEY1=1001;(E)环:读写器收对TOKENA解密:RA’=TOKENA异或KEY2=0011=RA,校验正确(A)环:Mifare1卡取随机数RB=1100,KEY小结:MIFARE1卡特点二高保密性:全球唯一SN;密钥及传输密码保护,各扇区密码独立且有三套(KEYSET0、1、2)二个(KEYA、KEYB)密码。密码认证采用三次相互认证;存取控制位保护,用户可以定义每一个存储器块的访问条件RF信道数据加密小结:MIFARE1卡特点二高保密性:Mifare1非接触式IC卡功能组成
Mifare1非接触式IC卡功能组成POWEROFF状态IDLE状态READY状态ACTIVE状态HALT状态RESETREQUEST命令ANTICOLLISION命令启动防冲突循环读取卡回送的UID(SN)HALT命令SELECTUID命令应用:AUTENTICATION/READ/WRITE/INC/DEC命令WAKEUP命令MIFARE卡防冲突流程POWEROFF状态IDLE状态READY状态ACTIVE小结:MIFARE1卡特点三真正的防冲突:卡芯片与读写芯片中都内嵌防冲突模块,可实现真正的(硬件)防冲突,可高速识别天线范围内的多张卡。小结:MIFARE1卡特点三真正的防冲突:小结:MIFARE1卡其他特点高可靠性:无线通讯链路使用各种校验机制确保数据可靠传输
用户更方便:卡芯片中内建有增值/减值的专项数学运算电路,非常适合公交/地铁等行业的定额收费系统小结:MIFARE1卡其他特点高可靠性:实训5
MIFARE1卡的读写操作与存储结构
按标志连接非接触式IC卡读写器的电源线,电源指示灯闪亮一下表示连接正确。注意电源+5V与地不可接反。按标志连接非接触式IC卡读写器与PC机间的通信线,打开MIFARE系列非接触式IC卡演示软件MWRF,确认通信正常。装载密码(LoadKey)操作:在RFDEMO软件界面中选择密码集0(KEYSET0),密码A(KEYA),将扇区0-14的密码A设置为全F,而将扇区15的密码A设置为全0。启动密码下载,下载过程中红色指示灯点亮;下载完毕后红色指示灯熄灭。
实训5MIFARE1卡的读写操作与存储结构按标志连接MIFARE1卡读写操作:将MIFARE1卡按任意方向置入MIFARE开发板天线有效工作范围内,对MIFARE1卡的扇区0、1和15的块0、1、2进行读/写操作。记录读取的卡数据,标明各块的类型及卡的类型号、序列号、容量及各扇区的密码和访问权限。
注意:不得随意修改各扇区块3的数据,特别是访问权限字节,以免造成扇区被锁死。
MIFARE1卡读写操作:防冲突测试(1)分别读出并记录二张MIFARE1卡(分别记为1#卡、2#卡)的序列号,及其扇区0块1的内容,记录在报告上。(2)将二张MIFARE1卡同时放置在读写器天线有效工作范围内,在RFDEMO软件中执行读操作,根据读出的SN找出被选中的卡(例如为1#卡)。(3)在RFDEMO软件中执行写操作,修改扇区0块1的内容并将数据记录在报告上。(4)将被选中的卡撤离读写器天线有效工作范围,读出另一张卡(例如2#卡)的扇区0块1的内容,并将数据记录在报告上。(5)取走(4)中的卡,重新读出并记录被选中的卡的扇区0块1的数据,并记录在报告上。(6)比较上述实验数据,说明MIFARE1卡是否具备防冲突功能。防冲突测试实训5MIFARE1卡的读写操作与存储结构如果有2张或2张以上的IC卡进入读写器的工作范围,称之为冲突(或碰撞Collion),此时就需要解决如何对多张IC卡逐一处理的问题——防冲突AntiCollion。MOVA,#80H ;SEL_CE_ERR:说明该块的存取控制条件。AntiCollision操作由一个AntiCollisionLoop(防冲突循环,内部处理)来实现。MOVA,#07H;MOVA,#00H ;56MHz的产品主要包括:MOVA,#10H ;断点①,查看TAGTYPE——(20H)(21H)SETBP3.3,SEL_BE_ERR(1)分别读出并记录二张MIFARE1卡(分别记为1#卡、2#卡)的序列号,及其扇区0块1的内容,记录在报告上。无线通讯链路使用各种校验机制确保数据可靠传输序列号SN:420A7E00H+校验码36H(2)修改扇区14的存取控制字节,将扇区14块0设置为校验密码A/B正确可读,永不可修改。设置片内RAM的SN暂存区首地址SENDBCNTS(16bits:命令码+块地址)4001感应式ID厚卡存取控制设置:(1)读出并记录扇区14块0的内容;修改内容并再次读出,记录修改后的内容。说明该块的存取控制条件。(2)修改扇区14的存取控制字节,将扇区14块0设置为校验密码A/B正确可读,永不可修改。其他各块条件不变。(3)重复(1),说明修改存取控制字节产生的结果。(4)将存取控制位恢复为默认值。注意:严禁修改对块3的设置,否则容易错误将存取控制位设为永不可写,将无法恢复为默认值。
实训5MIFARE1卡的读写操作与存储结构存取控制设置C2X3_bC2X2_bC2X1_bC2X0_bC1X3_bC1X2_bC1X1_bC1X0_bC1X3C1X2C1X1C1X0C3X3_bC3X2_bC3X1_bC3X0_bC3X3C3X2C3X1C3X0C2X3C2X2C2X1C2X0BX7BX6BX5BX4BX3BX2BX1BX0存取控制位的结构11111111000001111000000001101001C2X3_bC2X2_bC2X1_bC2X0_bC1X3_b存取控制位对块3的控制结构密码A密码A存取控制存取控制密码B密码BC1X3C2X3C3X3readwritereadwritereadwrite000neverKEYA|BKEYA|BneverKEYA|BKEYA|B010neverNeverKEYA|BneverKEYA|Bnever100neverKEYBKEYA|BneverneverKEYB110neverNeverKEYA|Bnevernevernever001neverKEYA|BKEYA|BKEYA|BKEYA|BKEYA|B011neverKEYBKEYA|BKEYBneverKEYB101neverNeverKEYA|BKEYBnevernever111neverNeverKEYA|Bnevernevernever存取控制位对块3的控制结构密码A密码A存取控制存取控制密码存取控制位对数据块的控制结构C1XYC2XYC3XYReadWriteIncrementDecr,Transfer,restore000KEYA|BKEYA|BKEYA|BKEYA|B010KEYA|Bnevernevernever100KEYA|BKEYBnevernever110KEYA|BKEYBKEYBKEYA|B001KEYA|BneverneverKEYA|B011KEYBKEYBnevernever101KEYBnevernevernever111Nevernevernevernever存取控制位对数据块的控制结构C1XYC2XYC3XYRead查表3:C1X0=0,C2X0=1,C3X0=0,其他位不变。对照表1:存取控制字节=EF078169H将扇区14块3的内容修改为FFFFFFFFFFFFEF078169FFFFFFFFFFFF查表3:C1X0=0,C2X0=1,C3X0=0,项目设计之二——硬件设计MCUMIFARE卡读写模块EEPROM存储器RS232接口显示报警天线卡项目设计之二——硬件设计MCUMIFARE卡EEPROMRSMifare核心读写模块MCM功能:读写器MCU与MIFARE卡之间的接口,负责读写卡,其基本功能包括产生发送/接收射频信号、调制/解调、防冲突处理和安全管理。工作频率:13.56MHz。通信速率:106Kbps
工作距离:MCM200——25mm,MCM500——100mm防冲突:真正的防冲突功能。安全性与可靠性:每个扇区设有3套密码及其认证和密码存储器,模块与卡片通信时,数据加密,多种通信校验机制接口:标准MIFARE并行接口Mifare核心读写模块MCM功能:读写器MCU与MIFAMCM与MCU接口电路
直接用数据总线传送地址和数据:MODE、USEALE接高电平,ALE对接;A0~A3悬空P3.3驱动-CS,即P3.3为低时选中(激活)MCM200模块MCM200的-IRQ接P3.2;可用查询或中断方式接收MCM发送的数据
MCM与MCU接口电路直接用数据总线传送地址和数据:MOD项目设计之三——软件设计读写器与M1卡交换数据的过程:1)由读写器MCU(微控制器)发送指令给MCM,2)MCM执行指令并将其转换为射频信号发送给卡;3)卡接收到来自MCM的指令后,按指令完成其内部的各种处理,并回送应答信号/数据给MCM;4)MCM接收卡回送的射频信号并将其转换为数字信号输出给MCU,读写器MCU读取MCM接收到的应答/数据,即可完成与M1卡的数据交换。项目设计之三——软件设计读写器与M1卡交换数据的过程:MCM基本通信指令集MSEL_TE_ERR: ;存取控制位对块3的控制结构断点①,查看TAGTYPE——(20H)(21H)SETBP3.MOVXA,@R0 ;SJMPRQT_EXIT入口:块地址T_addr8803感应式ID厚卡非接触式IC卡的特点MOVB,#03H ;其他错误应答(00000011),CODEER(5)取走(4)中的卡,重新读出并记录被选中的卡的扇区0块1的数据,并记录在报告上。读STACON,判断DV=1?JNBACC.SJMPNEXT_TRANSLCALLREAD ;断点①,查看TAGTYPE——(20H)(21H)MOVR0,#0EH高频模块(发送器和接收器)、按使用过程中的读写方式:只读卡(ID卡)和读写卡(带EEPROM)特点MCM内核特殊寄存器SEL_TE_ERR: ;MCMMIFARE卡的读写操作步骤
激活MCMMCM软复位向MCM下载密码(LOADKEY),校验传输密码正确后可向MCM的KEY-RAM写入用户自己设定的密码,以上操作与卡无关。请求应答(ANSWERTOREQUEST):寻卡防冲突(ANTICOLLISION):选择唯一一张卡选择标记(SELECT):激活所选择的卡
认证(AUTHENTICATION):安全性读写操作(读、写、加值、减值):交换数据
(READ/WRITE/INCREAMENT/DECREMENT)停止(HALT):置卡为停止模式,防止重复操作。MIFARE卡的读写操作步骤激活MCMSOR/LOADKEYREQUESTANTICOLLISIONREAD/WRITE/INC/DECHALTMIFARE卡操作步骤AUTHENTICATIONSELECT卡应答:TAGTYPE(2B)卡应答:SN(4B)+校验码(1B)卡应答:SIZE(1B)卡应答:AE位SOR/LOADKEYREQUESTANTICOLLISI指令时序
每个指令由7个基本步骤组成,必须按此时序编程才能完成该指令:(1)初始化,设置各寄存器,特别是BCNTS和BCNTR。(2)送指令码到DATA,由MCM发送指令。(3)
设置TOC,MCM准备接收来自卡的应答或数据。(4)检查DV标志,查询数据接收是否完成。DV标志为”1”表明MCM与MIFARE卡片之间的传输已经完成,并且主处理机可能已经从MCM中收到数据,可以进行下一步操作。而DV=0表示数据接收尚未完成或未能接收到数据,则程序循环检测DV标志直至DV=1。有一种情况例外,既当定时器溢出时,无论接收是否完成DV都将被设置为1,同样将进行下一步操作。(5)清零TOC。(6)
检查出错标志,若有标志被设置,则进行相应的出错处理,例如设置出错标志等,并返回主程序;若没有标志被设置,表示接收正确,将进行下一步操作(7)MCU从DATA读出MCM接收到的应答或数据。
指令时序每个指令由7个基本步骤组成,必须按此时序编程才能完AnswertoRequest(请求应答)指令
Request指令将通知MCM在天线有效的工作范围(距离)内寻找MIFARE1卡。命令码:26H或52H。卡收到该指令将回送卡类型号作为卡应答:TAGTYPE(2个字节)AnswertoRequest(请求应答)指令ReqWitha“requeststd”(26H)instructiononlycardswhicharenotsetintoa“HALT-mode”willrespondtothisrequest,oritmaybeexpandedtoallcardsinthefieldwitha“requestall”(52H)option.ThefirstoptionisneededtopreventtheMCMfromselectingonecardseveraltimes.Differencebetween
“requeststd”&“requestall”Witha“requeststd”(26H)instRequest:NOPNOPMOVA,#0CH;设置STACONMOVR0,#01HMOVX@R0,AMOVA,#0EH;设置BAUDRATEMOVR0,#05HMOVX@R0,AMOVA,#0C0H;设置ENABLEMOVR0,#02HMOVX@R0,AMOVA,#0C6H;设置MODEMOVR0,#07HMOVX@R0,AMOVA,#0CH;再次设置STACONMOVR0,#01HMOVX@R0,AMOVA,#02H;设置RCODEMOVR0,#0EHMOVX@R0,ARequest:MOVA,#07H;设置BCNTS=7bitsMOVR0,#03HMOVX@R0,AMOVA,#10H;设置BCNTR=2BytesMOVR0,#04HMOVX@R0,AJUDGE_COMMAND: ;选择REQSTD还是REQALLMOVA,R2XRLA,#01HJNZRQT_STDRQT_ALL:MOVA,#52HSJMPRQT_NEXTRQT_STD:MOVA,#26HRQT_NEXT:MOVR0,#00H ;发送命令码MOVX@R0,ANOPMOVA,#07H;设置BMOVA,#0AH ;设置TOC=1msMOVR0,#06HMOVX@R0,ARQT_STACON:MOVR0,#01H ;读STACONMOVXA,@R0JNBACC.7,RQT_STACON ;判断DV=1?MOVR7,A ;暂存STACONMOVA,#00H ;清零TOCMOVR0,#06HMOVX@R0,AMOVA,R7 ;判断是否出错JBACC.6,RQT_TE_ERRJBACC.3,RQT_BE_ERRMOVR0,#00H ;读TAGTYPEMOVXA,@R0MOV20H,AMOVR0,#00HMOVXA,@R0MOV21H,AMOVB,#00H ;设置OK标志SJMPRQT_EXITMOVA,#0AH ;设置RQT_BE_ERR: ;错误处理MOVB,#01HSJMPRQT_EXITRQT_TE_ERR:MOVB,#02HSJMPRQT_EXITRQT_EXIT:RETRQT_BE_ERR: ;错误处理AntiCollision防冲突如果有多于一张的Mifare1卡处在MCM天线的有效工作范围(距离)内,则发生了冲突。AntiCollision操作使MCM能在多张Mifare1卡中选择某一张卡。
AntiCollision操作由一个AntiCollisionLoop(防冲突循环,内部处理)来实现。设置STACON寄存器中的AC位启动AntiCollision循环。MCM发送AntiCollision命令(93H+20H),每张天线范围内的MIFARE1卡接收AntiCollision命令后,都将回送自己的SN作为应答。由于每张卡的SN各不相同,MCM接收到的信息(即SN)至少有1位即是0又是1(即该位的前、后半部都有负载波调制),防冲突循环找到第1个冲突位将其置1(排除该位为0的卡),然后查第2个,依次排除,最后不再有冲突的SN即为最后读取的SN。AntiCollision防冲突如果有多于一张的MifaAnticollision:NOPNOPMOVA,#0CHSETBACC.0 ;设置AC=1,启动防冲突MOVR0,#01HMOVX@R0,AACALLDELAY_500μs ;延迟1000μsACALLDELAY_500μsMOVA,#10H ;设置BCNTS为2BytesMOVR0,#03HMOVX@R0,AMOVA,#28H ;设置BCNTR为5BytesMOVR0,#04HMOVX@R0,AAnticollision:MOVA,#93H ;发送命令码MOVR0,#00HMOVX@R0,AMOVA,#20H ;发送NVBMOVR0,#00HMOVX@R0,AMOVA,#0AH ;设置TOC为1msMOVR0,#06HMOVX@R0,AANTI_STACON:MOVR0,#01H ;读STACONMOVXA,@R0JNBACC.7,ANTI_STACON ;判断DV=1?MOVR7,A ;暂存STACONMOVA,#00H ;清零TOCMOVR0,#06HMOVX@R0,AMOVA,R7 ;判断是否出错JBACC.6,ANTI_TE_ERRJBACC.3,ANTI_BE_ERRMOVA,#93HMOVR7,#04H MOVB,#00HMOVR1,#30H ;设置片内RAM的SN暂存区首地址MOVR0,#00HANTI_LOOP:MOVXA,@R0 ;读入4字节SN并逐一异或MOV@R1,AXRLB,AINCR1DJNZR7,ANTI_LOOPMOVXA,@R0 ;读入1字节校验码XRLA,B ;用校验码异或校验SNJNZANTI_CHK_ERR_EXIT ;校验出错MOVB,#00H ;设置OK标志AJMPANTI_BACKANTI_TE_ERR: ;错误处理MOVB,#01HAJMPANTI_BACKANTI_BE_ERR:MOVB,#0AHAJMPANTI_BACKANTI_CHK_ERR_EXIT:MOVB,#08HANTI_BACK:RETMOVR7,#04H SelectTag选择卡片操作
SelectTag操作将选中AntiCollision操作所读取的SN对应的卡,使该卡进入激活状态,只有该卡才能进行后续的认证及访问操作。
MCM发送Select命令(93H+70H+SN及校验码)卡接收该命令后将MCM发送的SN与自己的序列号比较,若一致则该卡被激活(ACTIVE),其他卡则仍留在READY状态。被选择(激活)的卡将回送其容量(SIZE)字节作为应答。SelectTag选择卡片操作SelectTag操作SELECT:MOVA,#0CH MOVR0,#01HMOVX@R0,AMOVA,#0F0H;设置ENABLEMOVR0,#02HMOVX@R0,AMOVA,#38H;设置BCNTS=7BytesMOVR0,#03HMOVX@R0,AMOVA,#08H;设置BCNTR=1ByteMOVR0,#04HMOVX@R0,AMOVA,#93H;发送命令码MOVR0,#00HMOVX@R0,AMOVA,#70H ;发送NVBMOVR0,#00HMOVX@R0,ASELECT:MOVR7,#04HMOVB,#00HMOVR0,#00HMOVR1,#40H ;SN暂存区首地址SELECT_WRT_LOOP:MOVA,@R1 ;取出ANTICOLLISION指令读取的SN字节MOVX@R0,A ;发送SN字节给卡XRLB,A ;SN字节相异或生成校验码INCR1DJNZR7,SELECT_WRT_LOOPMOVA,BMOVX@R0,A ;发送校验码MOVA,#0AH ;SETTOCMOVR0,#06HMOVX@R0,AMOVR7,#04HSEL_RD_STACON_AGAIN: ;READSTACONMOVR0,#01HMOVXA,@R0JNBACC.7,SEL_RD_STACON_AGAIN ;判断DV=1?MOVR6,A ;暂存STACONMOVA,#00H ;清零TOCMOVR0,#06HMOVX@R0,AMOVA,R6 ;判断是否出错JBACC.6,SEL_TE_ERRJBACC.5,SEL_PE_ERRJBACC.3,SEL_BE_ERRJBACC.4,SEL_CE_ERRMOVR0,#00H ;读取SIZE字节MOVXA,@R0MOV22H,A ;SIZE字节存入22HMOVB,#00H ;设置OK标志SJMPSEL_EXITSEL_RD_STACON_AGAIN: ;READSSEL_TE_ERR: ;错误处理MOVB,#01HLJMPSEL_EXITSEL_PE_ERR:MOVB,#05HLJMPSEL_EXITSEL_CE_ERR:MOVB,#02HLJMPSEL_EXITSEL_BE_ERR:MOVR7,#0AHLCALLD500USMOVB,#0BHSEL_EXIT:RETSEL_TE_ERR: ;错误处理Authentication认证操作
MCM中设有专用的密码存储器(KEY-RAM),用于存储3个密码集KEYSET0,KEYSET1,KEYSET2,每一个KEYSET又包含了各个扇区的KEYA及KEYB。Authentication操作就是将KEY-RAM中的密码与卡中对应的密码进行三次相互认证。Authentication操作的卡应答以AE位给出;AE=1,密码出错,未能通过认证;AE=0,密码正确,通过认证Authentication认证操作MCM中设有专用的密考勤系统、门禁系统、企业一卡通系统等按标志连接非接触式IC卡读写器与PC机间的通信线,打开MIFARE系列非接触式IC卡演示软件MWRF,确认通信正常。MOVB,#04HSJMPDEC_NEXTLCALLREAD ;(D)环:Mifare1卡片对RA加密3)写“命令”(60H或61H)和写“地址”(扇区号0~15)到DATA寄存器,启动Authetication操作。MOVX@R0,AMOVX@R0,A请求应答(ANSWERTOREQUEST):寻卡小结:MIFARE1卡特点一发送命令码A0H+块地址(0~63)Mifare1卡的密码的认证采用了三次相互认证的方法,具有很高的安全性。NOPNOPMCU采用查询方式与MCM通信。Witha“requeststd”(26H)instructiononlycardswhicharenotsetintoa“HALT-mode”willrespondtothisrequest,oritmaybeexpandedtoallcardsinthefieldwitha“requestall”(52H)option.MOVX@R0,AAntiCollision操作使MCM能在多张Mifare1卡中选择某一张卡。(4)检查DV标志,查询数据接收是否完成。Authetication操作包括3个步骤1)设置KEYSTACON寄存器,指定Authetication操作及KEYSET(0、1或2)2)设置KEYADDR寄存器,指定Authetication操作、KEYA或KEYB、待认证的扇区号3)写“命令”(60H或61H)和写“地址”(扇区号0~15)到DATA寄存器,启动Authetication操作。考勤系统、门禁系统、企业一卡通系统等AutheticatioREAD/WRITE操作READ/WRITE均需整块操作。READ:发送命令码30H+块地址(0~63)接收指定块的数据(16B)通常用2次读并比较是否一致来校验是否正确读WRITE:发送命令码A0H+块地址(0~63)接收ACK/NAK应答来校验是否正确接收命令发送块数据(16B)接收ACK/NAK应答来校验是否正确写入EEPROMREAD/WRITE操作READ/WRITE均需整块操作。ValueOperate值操作MIFARE卡专门为公交/地铁等行业的定额收费系统设有值操作命令,包括INCREAMENT/DECREAMENT/TRANSFER/RESTORE对某块进行值操作的前提是该块已被初始化为“值块”(ValueBlock)并且AccessBits允许值操作。ValueOperate值操作MIFARE卡专门为公交/值块的初始化方法:对某块按固定的格式进行写操作格式:
address——块地址(1B)value——值(4B,有符号)例如,对块地址为01H的块进行值块初始化,初始化值VALUE=00030000H,则数据格式为FE01FE0100030000FFFCFFFF00030000高低值块的初始化方法:对某块按固定的格式进行写操作例如,对块地址Increment/Decrement/TransferIncrement:addsthespecifiedvaluetothe
memoryvalueDecrement:
subtractsthespecifiedvaluefromthememotyvalueTransfer:
EachIncrementorDecrementinstructionmanipulatingastandardvalueblockhastobefollowedbyaTransferintructionwhichactuallystoresthecalculatedresultinthecardmemory.Untilthen,theresultiskeptinaninternalvaluebufferresgister.Increment/Decrement/TransferInDECREMENT:入口:块地址addr,值value存放于D_BUF出口:ACK/NAKNOPNOPMOVA,#10H ;SENDBCNTS(16bits:命令码+块地址)MOVR0,#03HMOVX@R0,AMOVA,#04H ;SENDBCNTR(4bits:ACK/NAK)MOVR0,#04HMOVX@R0,AMOVA,#0C0H ;SENDCODEMOVR0,#00HMOVX@R0,AMOVA,#addr ;SENDBLOCKADDRMOVR0,#00HMOVX@R0,ADECREMENT:MOVA,#0AH ;SETTOC=1msMOVR0,#06HMOVX@R0,AD_wait_value: ;读STACON,判断DV=1?MOVR0,#01HMOVXA,@R0JNBACC.7,D_wait_valueMOVR6,AMOVA,#00H ;清零TOCMOVR0,#06HMOVX@R0,AMOVA,R6 ;出错判断JBACC.6,DEC_TE_ERRJBACC.3,DEC_BE_ERRAJMPDEC_CONTIDEC_TE_ERR: ;NOTAGERRMOVB,#01HAJMPDEC_EXITDEC_BE_ERR:MOVB,#02HAJMPDEC_EXITMOVA,#0AH ;SETTOC=1msDEC_CONTI:MOVR0,#00H ;读入ACK/NAK,MOVXA,@R0ANLA,#0BH ;仅检查0,1,3位CJNEA,#00H,D_N1 MOVB,#07H;NOTAUTHERR(应答为00000000)SJMPDEC_NEXTD_N1:CJNEA,#0AH,D_N2 ;收到ACK应答(00000101),表示可以DECSJMPDEC_NEXTD_N2:MOVB,#03H ;其他错误应答(00000011),CODEERAJMPWRITE_EXITDEC_CONTI:WRITE_NEXT: ;开始写数据MOVA,#32 ;SENDBCNTS=32bits(4BVALUE)MOVR0,#03HMOVX@R0,AMOVA,#04H ;SENDBCNTR=4bits(ACK/NAK)MOVR0,#04HMOVX@R0,AMOVR5,#4 ;送4B值MOVR0,#00HMOVR1,#D_BUFDEC_VALUE:MOVA,@R1MOVX@R0,AINCR1DJNZR5,DEC_VALUEWRITE_NEXT: ;开始写数据MOVA,#0AH ;SETTOC=1msMOVR0,#06HMOVX@R0,ADEC_end: ;DV=1?MOVR0,#01HMOVXA,@R0JNBACC.7,DEC_endMOVA,#00H ;清零TOCMOVR0,#06HMOVX@R0,AJudge_answer:MOVR0,#01H ;出错判断MOVXA,@R0JNBACC.6,DEC_error_TEMOVB,#00HDEC_ANSWER: ;读入ACK/NAKMOVR0,#00HMOVXA,@R0ANLA,#0FHCJNEA,#04H,D_ERR1 ;(00000100为VALUEOVERFLOW)MOVB,#0FEHSJMPDEC_EXITD_ERR1:MOVB,#0FFH ;其他错误DEC_EXIT:RETMOVA,#0AH ;SETTOC=1msTRANSFER入口:块地址T_addr出口:ACK/NAKTRANS:NOPNOPMOVA,#10H ;SENDBCNTS(16bits:命令码+块地址)MOVR0,#03HMOVX@R0,AMOVA,#04H ;SENDBCNTR(4bits:ACK/NAK)MOVR0,#04HMOVX@R0,AMOVA,#0B0H ;SENDCODEMOVR0,#00HMOVX@R0,AMOVA,#T_addr ;SENDBLOCKADDRMOVR0,#00HMOVX@R0,ATRANSFERMOVA,#10H ;SETTOC=1.5msMOVR0,#06HMOVX@R0,AT_end: ;DV=1?MOVR0,#01HMOVXA,@R0JNBACC.7,T_endMOVA,#00H ;清零TOCMOVR0,#06HMOVX@R0,AJudge_answer: ;出错判断MOVR0,#01HMOVXA,@R0JBACC.3,T_error_BEJBACC.6,T_error_PEMOVB,#00HAJMPNEXT_TRANST_error_BE: ;出错处理MOVB,#03HSJMPNEXT_TRANST_error_PE:MOVB,#05HSJMPNEXT_TRANSMOVA,#10H ;SETTOC=1.5msNEXT_TRANS:MOVA,#95D ;SETTOC=9msMOVR0,#06HMOVX@R0,AT_Toc_end: ;DV=1?(EEPROM写入结束否?)MOVR0,#01HMOVXA,@R0JNBACC.7,T_Toc_endMOVR6,AMOVA,#00H ;CLEARTOCMOVR0,#06HMOVX@R0,AMOVA,R6 ;出错判断JBACC.6,T_TAG_ERRJBACC.3,T_BIT_ERRMOVB,00HSJMPNEXT_ANSWERT_TAG_ERR: ;出错处理MOVB,#09HAJMPT_EXITT_BIT_ERR:MOVB,#0BHAJMPT_EXITNEXT_TRANS:NEXT_ANSWER: ;读入ACK/NAKMOVR0,#00HMOVXA,@R0ANLA,#0FHCJNEA,#0AH,T_ERR1 ;(00000101为ACK,TRANSFEROK)MOVB,#00HSJMPT_EXITT_ERR1:CJNEA,#04H,T_ERR2 ;(00000100为NAK)MOVB,#02HSJMPT_EXITT_ERR2:CJNEA,#05H,WRITE_EXIT ;其他错误MOVB,#04HT_EXIT:RETNEXT_ANSWER: ;读入ACK/NAK实训6非接触式IC卡的读写控制
实训程序将读写器MCU片内RAM中的16个数据写入卡的一个数据块,然后将该数据块中的数据读出并存入读写器MCU的片内RAM中。MCU采用查询方式与MCM通信。实训程序说明:mode 选择密码集KEYSET0、1、2及密码A、Bsector_nr 认证扇区号(0~15)R_H_BUF 读入数据缓冲区首地址R_E_BUF 读入数据暂存区首地址W_H_BUF 写入数据区首地址R_addr 被读取的块地址(0~63)W_addr 被写入的块地址(0~63)
实训6非接触式IC卡的读写控制实训步骤用非接触式IC卡读写软件MWRF向MCM中下载密码,读出并记录MIFARE1卡的TAGTYPE、SN、SIZE,读出并记录卡中某数据块(如扇区1块0)的数据。用镊子取出非接触式IC卡开发板上的MCU芯片,将仿真头插入MCU的IC座。编译实训程序,设置断点。打开片内RAM及寄存器窗口,在写数据区(首地址为10H的16个单元)设置要写入卡中的数据。天线范围内无卡时运行程序,记录程序停在断点处的相关数据。说明是否能正确读/写卡,如不能,根据现象定位故障点。将卡置入天线范围内,运行程序,记录程序停在断点处的相关数据。说明是否能正确读/写卡,如不能,根据现象定位故障点。实训步骤用非接触式IC卡读写软件MWRF向MCM中下载密码,实训程序:mode EQU 00H ;设置KEYSET=KEYSET0,使用密码Asector_nr EQU 01H ;设置认证扇区为扇区1R_H_BUF EQU 40H ;读入数据缓冲区R_E_BUF EQU 50H ;读入数据暂存区W_H_BUF EQU 10H ;写入数据区R_addr EQU 04H ;被读取的块地址(扇区1的块0)W_addr EQu 05H ;被写入的块地址
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度安徽公司二零二五氨水集中采购合同3篇
- 2024年版公司股东权益保障协议版B版
- 2025年度林地生态环境治理合同范本3篇
- 2024年酒店整体出租协议文本
- 2024年高速铁路隧道工程合同
- 2024年美甲师雇佣协议
- 2024年高级木材门购销协议XXX一
- 2024年饮用水安全知识普及与工程实施二零二四年度合同3篇
- 2024年特许经营合同与劳动合同3篇
- 2024年采购合同产品质量验收及售后服务协议
- 重点专科建设实施方案(四篇)
- 工程合同违约协议书范本
- 排列 教学PPT课件 高中数学
- 公益性岗位开发申请审批表
- 1,2-二氯丙烷安全标签
- 阳离子络合主体
- 儿科课件过敏性紫癜
- 直肠癌临床路径
- 绿化养护工作计划表
- 汉字拼写游戏
- GB/T 12310-2012感官分析方法成对比较检验
评论
0/150
提交评论