亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rc500.c

?? ARM7 SPI RC531驅動程序,數據手冊
?? C
?? 第 1 頁 / 共 5 頁
字號:
/****************************************Copyright (c)**************************************************
**                                   
**                                    
**                                        
**
**                                 
**
**--------------文件信息--------------------------------------------------------------------------------
**文   件   名: RC500.c
**創   建   人: 李功周
**最后修改日期: 2008年12月18日
**描        述: RC500 驅動與API 函數 
**              
**--------------歷史版本信息----------------------------------------------------------------------------
** 創建人: 李功周
** 版  本: v1.0
** 日 期: 2008年12月18日
** 描 述: 原始版本
**
**------------------------------------------------------------------------------------------------------
*/
#include <LPC2103.H>
#include "../INT0/INT0.H"
//#include "../Uart1/Uart1.h"
#include "../SPI0/SPI0.h"
//#include "../SPK/SPK.h"
#include "RC500.h"

#include <string.h>
#include <stdio.h>
#include <absacc.h>


#ifndef MFERRNO_H
#define MFERRNO_H

#define READER_ERR_BASE_START           0
#define MI_OK                           0
#define MI_CHK_OK                       0
#define MI_CRC_ZERO                     0

#define MI_CRC_NOTZERO                  1

#define MI_NOTAGERR                     1
#define MI_CHK_FAILED                   1
#define MI_CRCERR                       2
#define MI_CHK_COMPERR                  2
#define MI_EMPTY                        3
#define MI_AUTHERR                      4
#define MI_PARITYERR                    5
#define MI_CODEERR                      6

#define MI_SERNRERR                     8
#define MI_KEYERR                       9
#define MI_NOTAUTHERR                   10
#define MI_BITCOUNTERR                  11
#define MI_BYTECOUNTERR                 12
#define MI_IDLE                         13
#define MI_TRANSERR                     14
#define MI_WRITEERR                     15
#define MI_INCRERR                      16
#define MI_DECRERR                      17
#define MI_READERR                      18
#define MI_OVFLERR                      19
#define MI_POLLING                      20
#define MI_FRAMINGERR                   21
#define MI_ACCESSERR                    22
#define MI_UNKNOWN_COMMAND              23
#define MI_COLLERR                      24
#define MI_RESETERR                     25
#define MI_INITERR                      25
#define MI_INTERFACEERR                 26
#define MI_ACCESSTIMEOUT                27
#define MI_NOBITWISEANTICOLL            28
#define MI_QUIT                         30
#define MI_RECBUF_OVERFLOW              50 
#define MI_SENDBYTENR                   51
	
#define MI_SENDBUF_OVERFLOW             53
#define MI_BAUDRATE_NOT_SUPPORTED       54
#define MI_SAME_BAUDRATE_REQUIRED       55

#define MI_WRONG_PARAMETER_VALUE        60

#define MI_BREAK                        99
#define MI_NY_IMPLEMENTED               100
#define MI_NO_MFRC                      101
#define MI_MFRC_NOTAUTH                 102
#define MI_WRONG_DES_MODE               103
#define MI_HOST_AUTH_FAILED             104

#define MI_WRONG_LOAD_MODE              106
#define MI_WRONG_DESKEY                 107
#define MI_MKLOAD_FAILED                108
#define MI_FIFOERR                      109
#define MI_WRONG_ADDR                   110
#define MI_DESKEYLOAD_FAILED            111

#define MI_WRONG_SEL_CNT                114

#define MI_WRONG_TEST_MODE              117
#define MI_TEST_FAILED                  118
#define MI_TOC_ERROR                    119
#define MI_COMM_ABORT                   120
#define MI_INVALID_BASE                 121
#define MI_MFRC_RESET                   122
#define MI_WRONG_VALUE                  123
#define MI_VALERR                       124
#define MI_SAKERR                       0x46	//added by robbie

#endif // COMMON_H

#define     RegPage               0x00
#define     RegCommand            0x01
#define     RegFIFOData           0x02
#define     RegPrimaryStatus      0x03
#define     RegFIFOLength         0x04  
#define     RegSecondaryStatus    0x05  
#define     RegInterruptEn        0x06  
#define     RegInterruptRq        0x07  
#define     RegControl            0x09  
#define     RegErrorFlag          0x0A  
#define     RegCollPos            0x0B  
#define     RegTimerValue         0x0C  
#define     RegCRCResultLSB       0x0D  
#define     RegCRCResultMSB       0x0E  
#define     RegBitFraming         0x0F  
#define     RegTxControl          0x11  
#define     RegCwConductance      0x12
#define     RFU13                 0x13
#define     RegModConductance     0x13   //驅動電導系數寄存器
#define     RegCoderControl       0x14
#define     RegModWidth           0x15
#define     RFU16                 0x16
#define     RFU17                 0x17
#define     RegTypeBFraming       0x17   //TypeB幀設置寄存器
#define     RegRxControl1         0x19 
#define     RegDecoderControl     0x1A 
#define     RegBitPhase           0x1B 
#define     RegRxThreshold        0x1C 
#define     RFU1D                 0x1D  
#define     RegBPSKDemControl     0x1D   //BPSK解調控制寄存器
#define     RegRxControl2         0x1E  
#define     RegClockQControl      0x1F  
#define     RegRxWait             0x21   
#define     RegChannelRedundancy  0x22   
#define     RegCRCPresetLSB       0x23   
#define     RegCRCPresetMSB       0x24   
#define     RFU25                 0x25  
#define     RegMfOutSelect        0x26  
#define     RFU27                 0x27  
#define     RegFIFOLevel          0x29  
#define     RegTimerClock         0x2A  
#define     RegTimerControl       0x2B  
#define     RegTimerReload        0x2C  
#define     RegIRqPinConfig       0x2D  
#define     RFU2E                 0x2E   
#define     RFU2F                 0x2F   
#define     RFU31                 0x31  
#define     RFU32                 0x32  
#define     RFU33                 0x33
#define     RFU34                 0x34
#define     RFU35                 0x35
#define     RFU36                 0x36
#define     RFU37                 0x37
#define     RFU39                 0x39
#define     RegTestAnaSelect      0x3A  
#define     RFU3B                 0x3B  
#define     RFU3C                 0x3C  
#define     RegTestDigiSelect     0x3D  
#define     RFU3E                 0x3E  
#define     RegTestDigiAccess     0x3F
#define     DEF_FIFO_LENGTH       64  
#define     PCD_IDLE              0x00 
#define     PCD_WRITEE2           0x01 
#define     PCD_READE2            0x03 
#define     PCD_LOADCONFIG        0x07
#define     PCD_LOADKEYE2         0x0B 
#define     PCD_AUTHENT1          0x0C 
#define     PCD_CALCCRC           0x12 
#define     PCD_AUTHENT2          0x14 
#define     PCD_RECEIVE           0x16 
#define     PCD_LOADKEY           0x19 
#define     PCD_TRANSMIT          0x1A
#define     PCD_TRANSCEIVE        0x1E 
#define     PCD_RESETPHASE        0x3F
#define     PICC_REQIDL           0x26         
#define     PICC_REQALL           0x52         
#define     PICC_ANTICOLL1        0x93         
#define     PICC_ANTICOLL2        0x95        
#define     PICC_ANTICOLL3        0x97         
#define     PICC_AUTHENT1A        0x60        
#define     PICC_AUTHENT1B        0x61         
#define     PICC_READ             0x30      
#define     PICC_WRITE            0xA0     
#define     PICC_DECREMENT        0xC0     
#define     PICC_INCREMENT        0xC1       
#define     PICC_RESTORE          0xC2        
#define     PICC_TRANSFER         0xB0       
#define     PICC_HALT             0x50      

#define mifare1			1
#define mifarepro		2
#define mifarelight		3
#define unkowncard		4

#define GetRegPage(addr)    (0x80 | (addr>>3))




typedef struct 
         {
            unsigned char  cmd;           
            char           status;        
            unsigned char  nBytesSent;   
            unsigned char  nBytesToSend; 
            unsigned char  nBytesReceived;
            unsigned short nBitsReceived; 
            unsigned char  irqSource;     
            unsigned char  collPos;       
                                          
         } MfCmdInfo;
		 
		 
		 
#define 	ResetInfo(info)    \
            info.cmd            = 0;\
            info.status         = MI_OK;\
            info.irqSource      = 0;\
            info.nBytesSent     = 0;\
            info.nBytesToSend   = 0;\
            info.nBytesReceived = 0;\
            info.nBitsReceived  = 0;\
            info.collPos        = 0;
			



/* RC531RST 引腳 */		
#define  RC531RST      			0x00008000              	 	
#define  RC531RST_GPIO()		PINSEL0 &= ~((unsigned int)0x03 << 30)			/* 設置 RC500RST 口為GPIO口 */
#define  RC531RST_OUT()			IODIR |= RC531RST			 					/* 設置 RC500RST 口為輸出口 */
#define	 RC531RST_SET()			IOSET |= RC531RST								/* 置 RC500RST 為高電平 */
#define	 RC531RST_CLR()			IOCLR |= RC531RST								/* 置 RC500RST 為低電平 */

/* RC531NSS 引腳 */		
#define  RC531NSS      			0x00000400              	 	
#define  RC531NSS_GPIO()		PINSEL0 &= ~((unsigned int)0x03 << 20)			/* 設置 RC500RST 口為GPIO口 */
#define  RC531NSS_OUT()			IODIR |= RC531NSS			 					/* 設置 RC500RST 口為輸出口 */
#define	 RC531NSS_SET()			IOSET |= RC531NSS								/* 置 RC500RST 為高電平 */
#define	 RC531NSS_CLR()			IOCLR |= RC531NSS								/* 置 RC500RST 為低電平 */




//全局變量			
static   volatile MfCmdInfo   MInfo; 			


volatile unsigned char SerBuffer[40]; 

static   volatile MfCmdInfo      *MpIsrInfo; 
static   volatile unsigned char  *MpIsrOut;
volatile unsigned char MLastSelectedSnr[4];



/****************************************************************************
* 名    稱:DelayNS()
* 功    能:長軟件延時。
* 入口參數:dly		延時參數,值越大,延時越久
* 出口參數:無
****************************************************************************/
void  delay_1ms(unsigned long  dly)
{  
    unsigned long  i;
	while(dly--)
	{
		i = 8000;
		while(i--);
	}
}




/****************************************************************************
* 名    稱:delay_50us()
* 功    能:長軟件延時。
* 入口參數:dly		延時參數,值越大,延時越久
* 出口參數:無
****************************************************************************/
void delay_50us(unsigned char _50us)
{
	unsigned long  i;
	while(_50us--)
	{
		i = 400;
		while(i--);
	}		
}



/****************************************************************************
* 名    稱:ReadRawIO()
* 功    能:從一個地址讀出一個數據(EEPROM)。
* 入口參數:Address  地址
* 出口參數:數據
****************************************************************************/
unsigned char ReadRawIO(unsigned char Address)
{
	unsigned char a;
	RC531NSS_CLR();
   	SPI_SendByte((Address<<1)|0x80);
   	a = SPI_RecByte(); 
   	SPI_SendByte(0x00);   
   	RC531NSS_SET();
   	return a;      
}




/****************************************************************************
* 名    稱:WriteRawIO()
* 功    能:往一個地址寫一個數據(EEPROM)。
* 入口參數:Address  地址
			value    數據
* 出口參數:無
****************************************************************************/
void WriteRawIO(unsigned char Address, unsigned char value)
{
	RC531NSS_CLR();
	SPI_SendByte((Address<<1)&0x7f);
    SPI_SendByte(value);
	RC531NSS_SET();
}




/****************************************************************************
* 名    稱:WriteIO()
* 功    能:往一個地址寫一個數據(EEPROM)。
* 入口參數:Address  地址
			value    數據
* 出口參數:無
****************************************************************************/
void WriteIO(unsigned char Address, unsigned char value)
{
	RC531NSS_CLR();
    SPI_SendByte(0x00);
    SPI_SendByte(GetRegPage(Address));
	RC531NSS_SET();
    
	RC531NSS_CLR();
	SPI_SendByte((Address<<1)&0x7f);
    SPI_SendByte(value);
	RC531NSS_SET();             
}



/****************************************************************************
* 名    稱:ReadIO()
* 功    能:從一個地址讀出一個數據(EEPROM)。
* 入口參數:Address  地址
* 出口參數:數據
****************************************************************************/
unsigned char ReadIO(unsigned char Address)
{
   unsigned char a;
   RC531NSS_CLR();
   SPI_SendByte(0x00);
   SPI_SendByte(GetRegPage(Address));
   RC531NSS_SET();
   
   RC531NSS_CLR();
   SPI_SendByte((Address<<1)|0x80);
   a = SPI_RecByte(); 
   SPI_SendByte(0x00);   
   RC531NSS_SET();
   return a;             
} 





/****************************************************************************
* 名    稱:RFRegWrite()
* 功    能:往一個地址寫一個數據(EEPROM)。
* 入口參數:Address  地址
			value    數據
* 出口參數:無
****************************************************************************/
void RFRegWrite(unsigned char Address, unsigned char value)
{
	RC531NSS_CLR();
    SPI_SendByte(0x00);
    SPI_SendByte(GetRegPage(Address));
	RC531NSS_SET();
    
	RC531NSS_CLR();
	SPI_SendByte((Address<<1)&0x7f);
    SPI_SendByte(value);
	RC531NSS_SET();             
}



/****************************************************************************
* 名    稱:ReadIO()
* 功    能:從一個地址讀出一個數據(EEPROM)。
* 入口參數:Address  地址
* 出口參數:數據
****************************************************************************/
unsigned char RFRegRead(unsigned char Address)
{
   unsigned char a;
   RC531NSS_CLR();
   SPI_SendByte(0x00);
   SPI_SendByte(GetRegPage(Address));
   RC531NSS_SET();
   
   RC531NSS_CLR();
   SPI_SendByte((Address<<1)|0x80);
   a = SPI_RecByte(); 
   SPI_SendByte(0x00);   
   RC531NSS_SET();
   return a;             
}





/****************************************************************************
* 名    稱:SetBitMask()
* 功    能:清一個bit
* 入口參數:reg		內存
			mask俺碼
* 出口參數:無
****************************************************************************/
char SetBitMask(unsigned char reg,unsigned char mask)  
{
    char tmp = 0x00;

    tmp = ReadIO(reg);
    WriteIO(reg,tmp | mask);  // set bit mask
    return 0x00;
}



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本不卡在线视频| 91麻豆精品在线观看| 91亚洲资源网| 精品国产伦理网| 亚洲激情综合网| 国产剧情一区在线| 91精品一区二区三区在线观看| 国产精品视频第一区| 日本亚洲三级在线| 在线观看91精品国产入口| 久久香蕉国产线看观看99| 日韩成人精品视频| 91福利在线看| 亚洲女女做受ⅹxx高潮| 国产一区 二区| 精品国精品自拍自在线| 天天做天天摸天天爽国产一区| 色域天天综合网| 亚洲欧美在线高清| 不卡av电影在线播放| 国产亚洲精品免费| 国产精品91xxx| 久久在线观看免费| 久久99久久久欧美国产| 日韩免费观看高清完整版| 日日骚欧美日韩| 欧美久久一区二区| 日韩黄色一级片| 欧美一区二区三区视频在线观看 | 91蜜桃婷婷狠狠久久综合9色| 国产日韩欧美在线一区| 国产精品一区二区在线看| 久久天天做天天爱综合色| 国产一区二区在线视频| 久久久久久夜精品精品免费| 国产激情91久久精品导航| 国产欧美va欧美不卡在线| 国产精品66部| 亚洲欧美一区二区视频| 欧美性猛交xxxx黑人交| 日韩成人av影视| 国产亚洲精品7777| 99国产精品久久久久久久久久| 亚洲精品国产高清久久伦理二区| 欧美日韩一区二区三区不卡| 捆绑紧缚一区二区三区视频| 久久久久久免费网| 99re66热这里只有精品3直播| 一区二区三区欧美久久| 精品视频1区2区| 国产一区二区三区黄视频| 国产精品无圣光一区二区| 色哟哟一区二区三区| 肉丝袜脚交视频一区二区| 精品电影一区二区| 99久久伊人久久99| 视频一区视频二区中文字幕| 亚洲精品一区二区三区蜜桃下载 | 国产精品一区久久久久| 国产精品久久久久久久久久久免费看| 91理论电影在线观看| 午夜国产精品一区| 国产日韩欧美亚洲| 欧美在线综合视频| 国模无码大尺度一区二区三区| 国产精品不卡视频| 日韩欧美在线一区二区三区| 成人在线视频首页| 日本亚洲视频在线| 亚洲三级免费电影| 精品国产乱码久久久久久蜜臀| 99久久精品久久久久久清纯| 免费欧美在线视频| 亚洲人妖av一区二区| 精品国产一区二区三区不卡| 色琪琪一区二区三区亚洲区| 国产美女在线精品| 亚洲不卡av一区二区三区| 欧美国产激情一区二区三区蜜月| 欧美巨大另类极品videosbest| 成人av在线资源网| 开心九九激情九九欧美日韩精美视频电影 | 欧美亚洲一区三区| 国产丶欧美丶日本不卡视频| 日韩精品一级中文字幕精品视频免费观看| 国产农村妇女毛片精品久久麻豆| 欧美精品在欧美一区二区少妇| 成人深夜在线观看| 狠狠狠色丁香婷婷综合久久五月| 亚洲午夜在线视频| 亚洲人被黑人高潮完整版| 久久久99精品免费观看不卡| 正在播放亚洲一区| 欧美综合视频在线观看| 9人人澡人人爽人人精品| 国内精品久久久久影院薰衣草| 日韩精品午夜视频| 亚洲电影你懂得| 一区二区三区国产精华| 国产精品大尺度| 国产欧美精品一区| 久久久高清一区二区三区| 精品国精品国产尤物美女| 日韩午夜激情免费电影| 欧美情侣在线播放| 欧美日韩国产综合草草| 欧美在线观看一区| 欧美综合一区二区| 欧美日韩三级在线| 欧美日韩不卡一区二区| 欧美美女bb生活片| 欧美日韩视频在线观看一区二区三区| 色中色一区二区| 欧美午夜免费电影| 欧美日韩第一区日日骚| 欧美日韩成人在线一区| 欧美日韩久久一区二区| 制服丝袜中文字幕一区| 91精品国产综合久久精品| 欧美一级艳片视频免费观看| 91精品国产综合久久蜜臀| 欧美一区二区三区免费观看视频| 欧美精品电影在线播放| 欧美一二三在线| 亚洲精品一区二区三区影院| 中文字幕不卡三区| 亚洲人成小说网站色在线| 亚洲国产欧美另类丝袜| 首页国产欧美久久| 激情综合色综合久久| 国产成人在线免费| 色哟哟一区二区| 日韩一区二区视频在线观看| 欧美精品一区男女天堂| 国产精品美女视频| 亚洲一级二级三级| 蜜桃视频一区二区三区| 国产二区国产一区在线观看| 91蜜桃免费观看视频| 88在线观看91蜜桃国自产| 久久综合999| 亚洲国产成人porn| 国产在线国偷精品产拍免费yy| 不卡大黄网站免费看| 欧美日韩日日摸| 久久一区二区三区四区| 亚洲视频免费观看| 欧美aaa在线| 91亚洲大成网污www| 欧美一卡在线观看| 亚洲色图视频网| 精品一区二区三区视频在线观看| 99久久精品国产导航| 欧美一级欧美三级在线观看| 国产精品福利av| 久久精品国产免费| 色爱区综合激月婷婷| 精品动漫一区二区三区在线观看 | 欧美高清在线一区| 日韩精品色哟哟| 色婷婷一区二区| 久久久久一区二区三区四区| 亚洲一区欧美一区| 成人午夜电影网站| 日韩精品一区在线| 亚洲午夜精品网| www.性欧美| 久久人人爽爽爽人久久久| 亚洲成a天堂v人片| 99在线热播精品免费| 欧美xxxx在线观看| 午夜免费欧美电影| 一本色道亚洲精品aⅴ| 久久久不卡网国产精品一区| 天天色 色综合| 在线视频一区二区免费| 亚洲欧美在线aaa| 大胆欧美人体老妇| 久久久久久久久久看片| 美女视频免费一区| 69成人精品免费视频| 亚洲一卡二卡三卡四卡无卡久久| 成人aa视频在线观看| 国产亚洲欧美在线| 国产精品1024久久| 精品久久99ma| 麻豆成人91精品二区三区| 欧美人与禽zozo性伦| 亚洲国产裸拍裸体视频在线观看乱了 | 欧美v日韩v国产v| 蜜桃91丨九色丨蝌蚪91桃色| 欧美伦理电影网| 亚洲444eee在线观看| 欧美日韩在线三级| 婷婷成人综合网| 欧美不卡一区二区| 国产一区二区三区精品欧美日韩一区二区三区| 日韩一区二区三区视频| 老司机午夜精品| 精品国产伦理网|