相關數(shù)據(jù)手冊和參考文獻復旦微電子fm1715編程指南_第1頁
相關數(shù)據(jù)手冊和參考文獻復旦微電子fm1715編程指南_第2頁
相關數(shù)據(jù)手冊和參考文獻復旦微電子fm1715編程指南_第3頁
相關數(shù)據(jù)手冊和參考文獻復旦微電子fm1715編程指南_第4頁
相關數(shù)據(jù)手冊和參考文獻復旦微電子fm1715編程指南_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

—概 二、ISO14443A基 三、FM1715簡 FM1715寄存 四、典型應用電 五、底層函數(shù) 頭文 接收到的卡片UID號的判 保存卡片的UID FM1715基本函 FM1715初始 讀FM1715中的EEPROM數(shù) 向FM1715的EEPROM中寫入數(shù) 清除FM1715的FIFO中的數(shù) 向FM1715的FIFO中寫入x字節(jié)數(shù) 從FM1715的FIFO中讀出x字節(jié)數(shù) 六、例 讀 寫 方便地使用FM1715模塊MIFARE卡和標準卡.并在KEILC51V6.0編譯環(huán)境下通過。二、ISO14443A卡片返回的代碼說0x00:對指定地址的被:溢出錯0x0A:基本命控制單射頻Command:0x26or: 射頻控制單 Data[0]:_TagType(低字節(jié)Data[1]:_TagType(高字節(jié)控制單射頻 射頻控制單Len: Data[4]:控制單射頻 射頻控制單Len:Data[0]:_Size(卡片容量值:0x08控制單射頻Command:0x60or Data[0]:0x60or0x61(0x60KEYA,0x61KEYB 射頻控制單Len:控制單射頻 射頻控制單Len:將操作后的卡片置于halt控制單射頻 塊地址射頻控制單Len:Data[0]:Data[15控制單射頻 _Adr要寫入數(shù)據(jù)的塊地址射頻控制單DATA[0]: 射頻控制單Len:DATA[0]:控制單射頻 _Adr射頻控制單Len:DATA[0]: 射頻控制單 控制單射頻 _Adr射頻控制單Len:DATA[0]: 射頻控制單Len:控制單射頻 _Adr射頻控制單Len:DATA[0]:Data[1]:Data[2]:Data[3]:Data[4]:射頻控制單 控制單射頻 Adr射頻控制單Len:DATA[0]:三、FM1715自動偵測微處理器接口類在每一次上電或硬件復位后,F(xiàn)M1712/1714/1715會復位并行微處理器接口模式,并不同類型微處理器接口連接關獨立的地址獨立的地址復用的地址/線FM1715寄存FIFO,TimerIRQ控制寄存器組001264byteFIFO3 FIFO4FIFObyte56中斷使能 7189AB CTimerDCRC8ECRC8Fbit2TX1TX2ISO14443-B3 選擇bit的閾BPSK控制寄存4CRC8CRC85FIFOTimerTimer啟動/IRQPinConfigIRQ67四、典型應五、底層函頭文mainmain編制時間修改時間:20039#ifndef_MAIN_INCLUDED_#define #define #define //FM1715EEPROM命#define //FM1715EEPROM命#define #define #define #define //將密鑰從FIFO緩 到KEY緩 #defineReq#define

#defineucharunsignedchar#defineuintunsignedint#define #define #define #define #define #define 120101卡類型定義0123 //*******************函數(shù)錯誤代碼定義0123456//通訊錯誤(BCC校驗錯8//卡片序列號錯誤(anti-collision錯誤9//卡片數(shù)據(jù)長度字節(jié)錯誤(SELECT錯誤//transfer//調用decrement//當前FIFO內(nèi)字節(jié)數(shù)寄//定義ISO14443B幀格//RF通道檢驗模式設置寄存//mfOUTsbitMFRSTP1^ ucharidata_at_ucharidataucharidata_at__at_ucharidata_at_//16ucharidata_at_//16ucharidata_at_uchar _at_uchar _at_常用函/*名稱: /*功能:該函數(shù)實現(xiàn)對卡片復位應答信號的判 /*輸入:*buff,指向應答數(shù)據(jù)的指 TRUE,卡片應答信號正 FALSE,卡片應答信號錯 ucharJudge_Req(ucharidata*buff){uchartemp1=*buff;temp2=*(buff+1);if(((temp1==0x03)||(temp1==0x04)||(temp1==0x05)||(temp1==0x53))&&(temp2=={}return}注:temp1= ;標準TOKENtemp1 MIFAREtemp1 ;MIFARETOKENtemp1= ;標準8KUID號的/*名稱: /*功能:該函數(shù)實現(xiàn)對收到的卡片的序列號的判 /*輸入: TRUE:序列號正 FALSE:序列號錯 ucharCheck_UID(void){uchartemp;uchari;temp=for(i=0;i<5;{temp=temp^}if(temp=={}return}UID/*名稱: row:產(chǎn)生的 col:產(chǎn)生的 voidSave_UID(ucharrow,ucharcol,ucharlength){uchari;uchartemp;uchartemp1;if((row==0x00)&&(col=={for(i=0;i<length;{UID[i]=}}{temp=buffer[0];temp1=UID[row-1];switch(col){casetemp1=0x00;row=row+1;casetemp=temp&0xFE;temp1=temp1&0x01;casetemp=temp&0xFC;temp1=temp1&0x03;casetemp=temp&0xF8;temp1=temp1&0x07;casetemp=temp&0xF0;temp1=temp1&0x0F;casetemp=temp&0xE0;temp1=temp1&0x1F;casetemp=temp&0xC0;temp1=temp1&0x3F;casetemp=temp&0x80;temp1=temp1&0x7F;}buffer[0]=UID[row-1]=temp1|temp;for(i=1;i<length;i++){UID[row-1+i]=}}}/*名稱: row:產(chǎn)生的 col:產(chǎn)生的 voidSet_BitFraming(ucharrow,ucharcol){switch{casebuffer[1]=0x20;casebuffer[1]=0x30;casebuffer[1]=0x40;casebuffer[1]=0x50;casebuffer[1]=0x60;}{caseBit_Frame=0x00;caseBit_Frame=buffer[1]=(buffer[1]|0x01);caseBit_Frame=buffer[1]=(buffer[1]|0x02);caseBit_Frame=buffer[1]=(buffer[1]|0x03);caseBit_Frame=buffer[1]=(buffer[1]|0x04);caseBit_Frame=buffer[1]=(buffer[1]|0x05);caseBit_Frame=buffer[1]=(buffer[1]|0x06);caseBit_Frame=buffer[1]=(buffer[1]|0x07);}}FM1715基本函/*名稱: /*功能:該函數(shù)實現(xiàn)對FM1715操作的總線方式(并行總線,SPI)選 /*輸入: FALSE,總線選擇失 ucharFM1715_Bus_Sel(void){ucharPage_Sel= //表示PageSelect的值做為寄存器地址 和A3,//三位寄存器地址A2-A0由//外部地址線A2-A0for(i0;iRF_TimeOut; //{if(Command //讀命令執(zhí)行結果,bit7為0表示接口檢測結{Page_Sel=0x00;returnTRUE;}}return}FM1715初始/*名稱: /*功能:該函數(shù)實現(xiàn)對FM1715初始化操 /*輸入:mode:工作模式 0:TYPEA模 2:模 voidInit_FM1715(ucharmode){ucharidata MFRST for(i=0;i<0x1fff;{}MFRST=for(i=0;i<0x1fff;{}while(Command!= //Command=0,FM1715復位成{} TimerClock= TimerControl TimerReload //10msInterruptEn=0x7f; temp=InterruptEn;Int_Req=MFOUTSelect= //TxControl //TX1、if(mode== {TypeSH=}{TypeSH=}if(mode== {CoderControl=0x20;TypeBFraming=0x05;DecoderControl=0x19;ChannelRedundancy=0x24;TxControl=0x4b;CWConductance=0x3f;ModConductance=af;}}/*名稱: /*功能:該函數(shù)實現(xiàn)向FM1715發(fā)送命令集的功 /*輸入:count,待發(fā)送命令集的長 buff,指向待發(fā)送數(shù)據(jù)的指 Comm_Set,命令 /*輸出:TRUE,命令被正確執(zhí) FALSE,命令執(zhí)行錯 ucharCommand_Send(ucharcount,ucharidata*buff,ucharComm_Set){ ucharidataCommand=0x00;Write_FIFO(count,temp=Command for(j0;j<RF_TimeOut; //檢查命令執(zhí){temp=MFOUTSelect;temp=Command;temp1=Int_Req&0x80;if((temp==0x00)||(temp1=={returnTRUE;}}returnFALSE;}FM1715EEPROM/*名稱: /*功能:該函數(shù)實現(xiàn)從FM1715的EE中讀出數(shù) lsb,EE地址(低字節(jié) msb,EE地址(高字節(jié) count,待讀出數(shù)據(jù)EE的字節(jié)個 buff,指向待讀出數(shù)據(jù)的指 TRUE,EE數(shù)據(jù)正確讀 FALSE,EE數(shù)據(jù)讀出有 Read_E2(ucharlsb,ucharmsb,ucharcount,ucharidata*buff){ucharif(temp==FALSE)}FM1715EEPROM/*名稱: /*功能:該函數(shù)實現(xiàn)向FM1715的EE中寫入數(shù) lsb,EE地址(低字節(jié) msb,EE地址(高字節(jié) count,待寫入數(shù)據(jù)EE的字節(jié)個 buff,指向待寫入數(shù)據(jù)的指 TRUE,EE數(shù)據(jù)正確寫 FALSE,EE數(shù)據(jù)寫入有 Write_E2(ucharlsb,ucharmsb,ucharcount,ucharidata*buff){ucharidatafor(i=0;i<count;{*(buff+count-i+2)=*(buff-i+}*buff=*(buff+1)=temp=Command_Send(count+2,buff,WriteE2);temp=SecondaryStatus;temp=temp&0x40;if(temp==0x40){}return}FM1715FIFO/*名稱: /*功能:該函數(shù)實現(xiàn)清空FM1715中FIFO的數(shù) /*輸入: /*輸出:TRUE,FIFO被清 FALSE,FIFO未被清 ucharClear_FIFO(void){uchartemp; temp temp=(temp|0x01);Control=temp;for(i0;iRF_TimeOut; {temp=FIFO_Length;if(temp==0){}}return}FM1715FIFO中寫x字節(jié)/*名稱: /*功能:該函數(shù)實現(xiàn)向FM1715的FIFO中寫入xbytes數(shù) /*輸入:count,待寫入字節(jié)的長 buff,指向待寫入數(shù)據(jù)的指 /*輸出: voidWrite_FIFO(ucharcount,ucharidata*buff){ucharfor(i=0;i<count;{FIFO=*(buff+}}FM1715FIFO中讀x字節(jié)/*名稱: /*功能:該函數(shù)實現(xiàn)從FM1715的FIFO中讀出xbytes數(shù) buff,指向讀出數(shù)據(jù)的指 ucharRead_FIFO(ucharidata*buff){uchartemp;uchari;temp=FIFO_Length;if(temp==0){return}if(temp //temp=255時,會進入死循 temp= //yanshouli,2003-12-}for(i=0;i<temp;{*(buff+i)=}return} 卡片操作基本函/*名稱: /*功能:該函數(shù)實現(xiàn)暫停MIFARE /*輸入: /*輸出:FM1715_OK:應答正 FM1715_CRCERR:CRC校驗 ucharMIF_Halt(void){uchartemp; CRCPresetLSB=0x63;CWConductance=0x3f;*buffer=*(buffer+1)=temp=Command_Send(2,buffer,Transmit);if(temp==TRUE){for(i=0;i<0x50;{}return}{temp=if((temp&{}if((temp&{}}}/*名稱: /*功能:該函數(shù)實現(xiàn)把E2中存入FM1715的keybuffer /*輸入 r:EE起始地 /*輸出:True:密鑰裝載成 False:密鑰裝載失 r,ucharMode){uchartemp;ucharmsb=0;ucharlsb=0;temp= r*12;if(Mode==0){if(temp>= //計算存放地{lsb=temp-0x80;msb=0x01;}{msb=lsb=temp+}}{msb=lsb=temp+}buffer[0]=lsb;buffer[1]=msb;temp=Command_Send(2,buffer,LoadKeyE2);temp=ErrorFlag&0x40;if(temp=={return}}/*名稱: /*功能:FM1715Request操作 FM1715_OK:應答正 FM1715_REQERR:應答錯 ucharRequest(ucharmode){ idataCRCPresetLSB=0x63;buffer[0] //Request模式選Bit_Frame //ChannelRedundancy=0x03; temp=Control;temp=temp&Control= //CRYPTO1temp=Command_Send(1,buffer,Transceive);if(temp==FALSE){return} //從FIFO中應答信temp=Judge_Req(buffer); if(temp==TRUE){tagtype[0]=buffer[0];tagtype[1]=buffer[1];returnFM1715_OK;}return}/*名稱: /*功能:該函數(shù)實現(xiàn)對放入FM1715操作范圍之內(nèi)的卡片的防檢 FM1715_BYTECOUNTERR:接收字節(jié)錯 FM1715_SERNRERR:卡片序列號應答錯 FM1715_OK:卡片應答正 uchar{uchartemp;uchari;ucharrow,col;ucharrow=col=pre_row=CRCPresetLSB=0x63;CWConductance=0x3f;ModConductance=0X3f;buffer[0]=RF_CMD_ANTICOL;buffer[1]=0x20;ChannelRedundancy=0x03; mand_Send(2,buffer,Transceive);{{}temp= if((temp& if((temp& if(temp==0){return} //將收到的UIDUID數(shù)組 //temp=ErrorFlag; temp=temp&0x01;if(temp=={temp=Check_UID(); if(temp==FALSE){}}{

temp= row=temp/8;col=temp%buffer[0]=Set_BitFraming(row+pre_row,col); pre_row=pre_row+row;for(i=0;i<pre_row+1;{buffer[i+2]=}if(col!={}{}

row=pre_row+row=temp=Command_Send(row+2,buffer,}}}/*名稱: /*功能:該函數(shù)實現(xiàn)對放入FM1715操作范圍之內(nèi)的某張卡片進行選 ::FM1715_CRCERR:CRCFM1715_BYTECOUNTERR:接收字節(jié)錯FM1715_OK:FM1715_SELERR:選卡ucharSelect_Card(void){ucharCRCPresetLSB=0x63;CWConductance=0x3f;buffer[0]=RF_CMD_SELECT;buffer[1]=0x70;for(i=0;i<5;{} {}{if((temp&0x02)==0x02)if((temp&0x04)==0x04)if((temp&0x08)==0x08)if(temp!=1) //從FIFO中應答信temp=iftemp==0x08||temp==0x88||temp==0x53))判斷應答信號是否正確}}

/*名稱: /*功能:該函數(shù)實現(xiàn)認證的過 /*輸入:UID:卡片序列號地 R:扇區(qū) mode:模 /*輸出:FM1715_NOTAGERR:無 FM1715_CRCERR:CRC校驗 FM1715_OK:應答正 FM1715_AUTHERR:認證有 Authentication(ucharidata*UID,uchar R,ucharmode){ucharidataucharidataCRCPresetLSB=0x63;CWConductance=0x3f;ModConductance=0X3f;temp1=Control;temp1=temp1&0xf7;Control=temp1;if(mode== buffer[0]=buffer[0]=buffer[1]= R*4+3;for(i=0;i<4;i++){buffer[2+i]=}ChannelRedundancy=0x0f; temp=Command_Send(6,buffer,Authent1);if(temp=={return}temp=if((temp&0x02)==if((temp&0x04)==0x04)returnif((temp&0x08)==0x08)returnFM1715_CRCERR;temp=Command_Send(0,buffer,Authent2); if(temp==FALSE){return}temp=if((temp&0x02)==if((temp&0x04)==0x04)returnif((temp&0x08)==0x08)returnFM1715_CRCERR;temp1=temp1=temp1&0x08; if(temp1==0x08){return}return}/*/*MIFARE/*buff: Block_Adr:/*FM1715_NOTAGERR: FM1715_PARITYERR: FM1715_CRCERR:CRC FM1715_BYTECOUNTERR: FM1715_OK:ucharMIF_READ(ucharidata*buff,ucharBlock_Adr){ucharidataCRCPresetLSB=0x63;CWConductance=0x3f;ModConductance=0X3f;ChannelRedundancy=0x0f;buff[0]=RF_CMD_READ;buff[1]=Block_Adr;temp=Command_Send(2,buff,Transceive);if(temp==0){return}temp=if((temp&0x02)==0x02)returnFM1715_PARITYERR;if((temp&0x04)==0x04) returnFM1715_FRAMINGERR;if((temp&0x08)==0x08)returnFM1715_CRCERR;temp=FIFO_Length;iftemp {return}elseiftemp {}{}}

returnreturnbuff:Block_Adr:FM1715_NOTAGERR: FM1715_EMPTY:FM1715_PARITYERR:FM1715_WRITEERR: FM1715_OK:應答正 ucharMIF_Write(ucharidata*buff,ucharBlock_Adr){ucharidatatemp;ucharidataCRCPresetLSB=0x63;CWConductance=0x3f;F_buff=buff+0x10;ChannelRedundancy=0x07;*F_buff=*(F_buff+1)=temp=Command_Send(2,F_buff,Transceive);if(temp==FALSE){}temp=FIFO_Length;if(temp==0){}temp=*F_buff;switch(temp){case0x00 casecase0x0a:casecase0x05:}temp=Command_Send(16,buff,if(temp=={}{

temp=if((temp&0x02)==0x02)elseif((temp&0x04)==0x04)elseif((temp&0x08)==0x08)}}

/*/*MIFARE/*輸入:buff:節(jié)數(shù)值起始地 Block_Adr:/*FM1715_NOTAGERR: FM1715_BYTECOUNTERR: 認 FM1715_EMPTY: FM1715_CRCERR:CRC FM1715_PARITYERR: FM1715_INCRERR: FM1715_OK:ucharMIF_Increment(ucharidata*buff,ucharBlock_Adr){ucharucharidataCRCPresetLSB=0x63;CWConductance=0x3f;F_buff=buff+4;*F_buff=*(F_buff+1)=Block_Adr;ChannelRedundancy=0x07;temp=Command_Send(2,F_buff,Transceive);if(temp==FALSE){return}temp=FIFO_Length;if(temp==0){return}temp=*F_buff;{case0x00 casecase0x0a:casecase0x05:}temp=Command_Send(4,buff,Transmit);if(temp==FALSE){return}return}/*/*MIFARE/*輸入:buff:節(jié)數(shù)值起始地 Block_Adr:/*FM1715_NOTAGERR: FM1715_BYTECOUNTERR: 認 FM1715_EMPTY: FM1715_CRCERR:CRC FM1715_PARITYERR: FM1715_DECRERR: FM1715_OK:ucharMIF_Decrement(ucharidata*buff,ucharBlock_Adr){ucharucharidataCRCPresetLSB=0x63;CWConductance=0x3f;F_buff=buff+4;*F_buff=*(F_buff+1)=Block_Adr;ChannelRedundancy=0x07;temp=Command_Send(2,F_buff,Transceive);if(temp==FALSE){return}temp=FIFO_Length;if(temp==0){return}temp=*F_buff;switch(temp){case0x00 casecase0x0a:casecase0x05:}temp=Command_Send(4,buff,Transmit);if(temp==FALSE){}return}/*/*MIFARE/*Block_Adr:/*FM1715_NOTAGERR: FM1715_BYTECOUNTERR: 認 FM1715_EMPTY:FM1715_PARITYERR:FM1715_OK:ucharMIF_Restore(ucharBlock_Adr){ucharCRCPresetLSB=0x63;CWConductance=0x3f;ChannelRedundancy=*buffer=*(buffer+1)=temp=Command_Send(2,buffer,Transceive);if(temp==FALSE){return}temp=FIFO_Length;if(temp==0){return}temp=*buffer;switch(temp){case0x00 casecase0x0a:casecase0x05:}for(i=0;i<4;i++)buffer[i]=0x00;temp=Command_Send(4,buffer,Transmit);if(temp==FALSE){return}return}/*/*MIFARE/*Block_Adr:/*FM1715_NOTAGERR: FM1715_BYTECOUNTERR: 認 FM1715_EMPTY: FM1715_CRCERR:CRC FM1715_PARITYERR: FM1715_TRANSERR: FM1715_OK:ucharMIF_Transfer(ucharBlock_Adr){ucharCRCPresetLSB=0x63;CWConductance=0x3f;ChannelRedundancy=0x07;buffer[0]=RF_CMD_TRANSFER;buffer[1]=Block_Adr;temp=Co

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論