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

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

?? rf.c

?? 使用RC531讀卡芯片讀取二代身份證的模塊軟件設計部分
?? C
?? 第 1 頁 / 共 2 頁
字號:
//------------------------------------------------------------------------*
//文件名:RF.C                                                            *
//功  能:與射頻讀卡芯片通信相關程序。                                    *
//包  含:                                                                 *
//    (1)RC531的驅動函數                                                  *
//    (2)RC531的復位及初始化                                              *
//    (3)RC531的讀卡操作                                                  *
//------------------------------------------------------------------------*
#include  "RF.h"

//------------------------------------------------------------------------*
//1.RC531的驅動函數                                                       *
//------------------------------------------------------------------------*

//RFRegRead---------------------------------------------------------------*
//功  能: 讀出給定地址的寄存器的值并返回                                  *
//參  數: adder 被訪問寄存器的地址                                        *
//返  回: 讀出的數據                                                      *
//------------------------------------------------------------------------*
INT8U RFRegRead(INT8U addr)
{
    INT8U ReData1,ReData2;        //接收數據變量
    INT8U SndData;                //發送數據變量
    
    //處理第一個字節,bit7:MSB=1,bit6~1:addr,bit0:RFU=0
    SndData  = (addr << 1);
    SndData |= (1 << 7);
    SndData &= ~(1 << 0);
    
    //SPI1_SS引腳拉低,選中從機 
    SPI1_P &= ~(1 << SPI1_SS);
       
    //讀取過程
    ReData1 = SPI1MASTERCOM(SndData);  //發送讀取目的寄存器地址
    ReData2 = SPI1MASTERCOM(0x00);     //讀取結束,取回寄存器內容

    //SPI1_SS引腳拉高,取消選中
    SPI1_P |= (1 << SPI1_SS);
    
    return ReData2;               //返回接收數據
}

//RFRegWrite--------------------------------------------------------------*
//功  能: 向給定地址的寄存器寫一個值                                      *
//參  數: adder 被訪問寄存器的地址; Data 寫入的數據                       *
//返  回: 無                                                              *
//------------------------------------------------------------------------*
void RFRegWrite(INT8U addr, INT8U Data)
{
    INT8U ReData1,ReData2;
    INT8U SndAddr;
    
    //處理第一個字節,bit7:MSB=0,bit6~1:addr,bit0:RFU=0
    SndAddr = (addr << 1);
    SndAddr &= 0x7E;	
    
    //SPI1_SS引腳拉低,選中從機    
    SPI1_P &= ~(1 << SPI1_SS);

    //寫入過程
    ReData1 = SPI1MASTERCOM(SndAddr);  //寫入目標地址
    ReData2 = SPI1MASTERCOM(Data);     //寫入內容

    //SPI1_SS引腳拉高,取消選中
    SPI1_P |= (1 << SPI1_SS);
}

//Command_Send------------------------------------------------------------*
//功  能: 向MF RC531發送命令                                              *
//參  數: Length:	要寫入的字節數                                        *
//		  Send_Buf:	待發送數據應放在Send_Buf緩沖區中                      *
//		  comm_set: 命令操作碼                                            *
//返  回: 1 - 命令執行失敗; 0 - 命令執行成功                              *
//------------------------------------------------------------------------*
INT8U Command_Send(INT8U *Send_Buf, INT8U Length, INT8U comm_set)
{
	INT8U  Data; 
	INT8U  time;
	INT8U  i,j;
	 
	//清空FIFO緩沖區
	Clear_FIFO();
				           
	//寫命令參數
	Write_FIFO(Send_Buf, Length);      
	
	//設置延時時間
	time = 0xff;
	
	//向command寄存器寫控制命令碼
	RFRegWrite(RegCommand, comm_set);  
	
	//檢測命令是否被執行
	for(i = 0; i < time; i++)          
	{                                  
	  Data = RFRegRead(RegCommand);    //讀取Command_Reg寄存器
	  if(Data == 0)                    //判斷Command_Reg寄存器是否已為0
	     return 0; //成功
	  for(j = 0; j < 250; j++);        //延時
	}
	return 1; //失敗
}

//Clear_FIFO--------------------------------------------------------------*
//功  能: 清空RC531的FIFO寄存器                                           *
//參  數: 無                                                              *
//返  回: 1 - 命令執行失敗; 0 - 命令執行成功                              *
//------------------------------------------------------------------------*
INT8U Clear_FIFO(void)
{
	INT8U  Data; 
	INT8U  i,j;
	
	//清空FIFO緩沖區
	Data  = RFRegRead(RegControl);           //讀取Control寄存器
	Data |= 0x01;                            //Bit0置1清FIFO
	RFRegWrite(RegControl, Data);            //設置Control寄存器
	
    //判斷FIFO緩沖區是否被清空
	for(i = 0; i < 0x10; i++)
	{
		Data = RFRegRead(RegFIFOLength);     //讀取FIFOLength寄存器
		if(Data == 0)                        //判斷FIFOLength寄存器是否已為0
		    return 0; //成功
		for(j = 0; j < 100; j++);            //延時
	}
	return 1; //失敗
}

//Read_FIFO---------------------------------------------------------------*
//功  能: 讀RC531的FIFO寄存器                                             *
//參  數: *Send_Buf                                                       *
//返  回: Length           讀得數據長度                                   *
//		  Send_Buf[Length] 讀出的數據置于發送,接收緩沖區中                *
//------------------------------------------------------------------------*
INT8U Read_FIFO(INT8U *Send_Buf)
{
	INT8U Length;
	INT8U i;
		
	//獲得FIFOLength緩沖區內數據長度
	Length = RFRegRead(RegFIFOLength);	
	
	//根據緩沖區長度依次讀取數據
	for (i = 0; i < Length; i++)
		Send_Buf[i] = RFRegRead(RegFIFOData);
	return Length;   
}

//Write_FIFO--------------------------------------------------------------*
//功  能: 讀RC531的FIFO寄存器                                             *
//參  數: Length:	要寫入的字節數                                        *
//		  Send_Buf: 待發送數據應放在Send_Buf緩沖區中                      *
//返  回: 無                                                              *
//------------------------------------------------------------------------*
void Write_FIFO(INT8U *Send_Buf, INT8U Length)
{
	INT8U i;
	
    //寫入	
	for (i = 0; i < Length; i++)
		RFRegWrite(RegFIFOData, Send_Buf[i]);
}

//------------------------------------------------------------------------*
//2.RC531的復位及初始化                                                   *
//------------------------------------------------------------------------*

//RFReset-----------------------------------------------------------------*
//功  能: 端口設置和射頻芯片復位                                          *
//參  數: 無                                                              *
//返  回: 0 - 初始化成功  ;1 - 初始化失敗                                *
//------------------------------------------------------------------------*
INT8U RFReset(void)
{
	INT8U	i;
	INT8U	data;
		
    //控制端口設置
    RF_CTL_D |=  (1 << RF_RST);   //設置RF_RST為輸出   
    RF_CTL_D &= ~(1 << RF_IRQ);   //設置RF_IRQ為輸入   
    SPI1Init();                   //SPI1初始化(與RC531通信)模擬主機

   	//RF復位,下降沿復位     	   	
   	RF_CTL_D |= 1 << RF_RST;      //高電平復位  	
	for(i = 0; i < 200; i++);     //延時,等待高電平穩定	
   	RF_CTL_D &= ~(1 << RF_RST);   //初始化RF_RST為低   	
	for(i = 0; i < 5000; i++);    //復位后等待一定的時間,必須!
   
   	//驗證初始化是否成功	
	RFRegWrite(RegPage, 0);       //線性地址模式	
	RFRegWrite(0x29, 0x20);       //寫$20到寄存器FIFOLevel($29)			
	data = RFRegRead(0x29);       //讀寄存器FIFOLevel($29),驗證寫入是否正確
	if (data == 0x20)
		return 0;                 //初始化成功
	else
		return 1;                 //初始化失敗	
}

//RC531_Init--------------------------------------------------------------*
//功  能: 禁止中斷及清除中斷標志                                          *
//參  數: 無                                                              *
//返  回: 無                                                              *
//------------------------------------------------------------------------*
void RC531_Init(void)
{
	RFRegWrite(RegPage, 0x00);                    //線性地址模式
	RFRegWrite(RegInterruptEn, 0x7f);             //禁止所有中斷
	RFRegWrite(RegInterruptRq, 0x7f);             //中斷標識清零
}

//------------------------------------------------------------------------*
//3.RC531的讀卡操作                                                       *
//------------------------------------------------------------------------*

//RC531_14443ABInit-------------------------------------------------------*
//功  能: 初始化RC531各相關寄存器                                         *
//參  數: Tagtype - 電子標簽類型                                          *
//        0 - ISO14443B; 1 - ISO14443A                                    *
//返  回: 無                                                              *
//------------------------------------------------------------------------*
void RC531_14443ABInit(INT8U Tagtype)
{
	INT16U i;
	
	//設置線性地址模式
	RFRegWrite(RegPage, 0x00);
	
	//根據電子標簽類型進行相應的RC531寄存器初始化
	if(Tagtype)
	{
		//ISO14443A電子標簽
		//第2頁 傳送器與編碼器控制
		RFRegWrite(RegTxControl, 0x5b);       		//0x5b, 幅移鍵控ASk 100%
		RFRegWrite(RegCwConductance, 0x3f);		 	//0x3f, 設置輸出驅動的電導系數
		RFRegWrite(RegModConductance, 0x3f);		//0x3f, 調制比 100%
		RFRegWrite(RegCoderControl, 0x19);          //0x19, TypeA模式,波特率106kbps,米勒編碼
		RFRegWrite(RegTypeBFraming, 0x00);          //0x00, EGT=0
		
		//第3頁 接收器與解碼器控制
		RFRegWrite(RegDecoderControl, 0x08);        //0x08, ISO14443A幀,曼徹斯特編碼
		RFRegWrite(RegRxThreshold, 0xff);           //0xff, 可接收的最小信號強度
		RFRegWrite(RegBPSKDemControl, 0x1e);        //0x00, 忽略EOF,打開高通濾波
		RFRegWrite(RegClockQControl, 0x00);       	//0x3f, Q時鐘控制
		
		//第4頁 射頻時間和通道冗余
		RFRegWrite(RegRxWait, 0x06);                //0x06, 設置接收延時
		RFRegWrite(RegChannelRedundancy, 0x03);     //0x03, TypeA接收冗余校驗
		RFRegWrite(RegCRCPresetLSB, 0x63);          //0x63, CRC預設值
		RFRegWrite(RegCRCPresetMSB, 0x63);          //0x63, CRC預設值
	}
	else
	{
		//ISO14443B電子標簽
		//第2頁 傳送器與編碼器控制
		RFRegWrite(RegTxControl, 0x4b);       		//0x4b, 13.56MHz
		RFRegWrite(RegCwConductance, 0x3f);		 	//0x3f, 設置輸出驅動的電導系數
		RFRegWrite(RegModConductance, 0x06);	 	//0x06, 幅移鍵控ASk 12%
		RFRegWrite(RegCoderControl, 0x20);          //0x20, TypeB,波特率106kbps, NRZ編碼
		RFRegWrite(RegTypeBFraming, 0x23);          //0x23, 定義ISO14443B幀格式
		
		//第3頁 接收器與解碼器控制
		RFRegWrite(RegDecoderControl, 0x19);        //0x19, ISO14443B幀,BPSK編碼
		RFRegWrite(RegRxThreshold, 0x44);           //0x44, 可接收的最小信號強度
		RFRegWrite(RegBPSKDemControl, 0x3e);        //0x3e, 忽略EOF,打開高通濾波
		RFRegWrite(RegClockQControl, 0x07);       	//0x3f, Q時鐘控制
		
		//第4頁 射頻時間和通道冗余
		RFRegWrite(RegRxWait, 0x06);                //0x06, 設置接收延時
		RFRegWrite(RegChannelRedundancy, 0x2c);     //0x2c, TypeB接收冗余校驗
		RFRegWrite(RegCRCPresetLSB, 0xff);          //0xff, CRC預設值
		RFRegWrite(RegCRCPresetMSB, 0xff);          //0xff, CRC預設值
	}
	
	//延時
	for(i = 0; i < 1000; i++);    
}

//ReadTag-----------------------------------------------------------------*
//功  能: 讀卡函數                                                        *
//參  數: Tagtype - 電子標簽類型(0 - ISO14443B; 1 - ISO14443A)            *
//出  口: UIDLen - UID數據長度,  UID_Buf[] - UID數據數組                  *
//返  回: 1,2,3 - 操作失敗;0 - 操作成功                                  *

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩中文字幕91| 日本成人在线看| 日韩成人一级片| 成人国产电影网| 日韩欧美美女一区二区三区| 中文字幕日本不卡| 国产在线视频一区二区| 欧洲精品在线观看| 国产精品网曝门| 久久66热偷产精品| 欧美一区二区三区系列电影| 一级女性全黄久久生活片免费| 国产成人av影院| 精品久久久久久久久久久久久久久久久| 中文字幕色av一区二区三区| 从欧美一区二区三区| 久久亚洲精品小早川怜子| 青青国产91久久久久久| 欧美日韩午夜在线| 亚洲国产精品一区二区尤物区| 成人高清视频在线观看| 国产精品婷婷午夜在线观看| 国产伦精品一区二区三区视频青涩 | 亚洲国产成人私人影院tom | 精品sm捆绑视频| 免费av成人在线| 日韩三级在线观看| 国产在线精品视频| 日韩久久久久久| 久久99精品久久只有精品| 欧美大胆人体bbbb| 精品一区二区三区在线播放视频| 欧美一级高清大全免费观看| 免费观看一级欧美片| 精品99一区二区三区| 国产99一区视频免费| 国产午夜精品久久久久久免费视| 国产福利不卡视频| 国产精品久久久久久久久果冻传媒 | 风间由美中文字幕在线看视频国产欧美 | 亚洲免费在线电影| 欧美午夜影院一区| 日日噜噜夜夜狠狠视频欧美人| 欧美日韩小视频| 强制捆绑调教一区二区| 欧美成人女星排行榜| 国产成人无遮挡在线视频| 国产精品久久久久9999吃药| 在线影视一区二区三区| 丝袜亚洲另类丝袜在线| 日韩欧美国产高清| www.日韩大片| 午夜成人在线视频| 久久久久久久久一| 色狠狠色狠狠综合| 久久福利视频一区二区| 亚洲欧洲成人自拍| 91麻豆精品国产91久久久久久| 国产在线视视频有精品| 亚洲欧美精品午睡沙发| 欧美成人国产一区二区| 99免费精品在线观看| 首页欧美精品中文字幕| 国产精品视频第一区| 在线不卡一区二区| 成人av资源在线观看| 日韩中文字幕麻豆| 欧美国产精品久久| 91 com成人网| 91丨九色丨国产丨porny| 日本不卡1234视频| 最新高清无码专区| 精品少妇一区二区三区视频免付费| 99久久99久久免费精品蜜臀| 日本va欧美va欧美va精品| 亚洲婷婷国产精品电影人久久| 欧美一区二区三区在线看| 99久久精品国产导航| 国产一区二区在线视频| 午夜国产精品影院在线观看| 中文字幕一区视频| 精品成人一区二区三区| 欧美日韩成人综合天天影院 | 日韩美女啊v在线免费观看| 欧美日韩国产综合草草| 成人av网址在线| 国内不卡的二区三区中文字幕| 亚洲国产另类av| 国产精品大尺度| 久久精品在线观看| 欧美精品一区二区三区蜜桃 | 国产精品色噜噜| 久久久亚洲高清| 精品国产一区二区三区不卡| 欧美日本在线播放| 欧美影视一区在线| 91女人视频在线观看| 高清国产午夜精品久久久久久| 精品中文字幕一区二区| 午夜精品视频在线观看| 亚洲精品五月天| 中文字幕一区二区视频| 国产精品久久影院| 中文字幕av一区二区三区免费看| 久久综合九色综合97婷婷女人| 欧美一区二区福利在线| 日韩一区和二区| 欧美一区二区精品久久911| 91麻豆精品国产| 日韩一区二区在线看| 91精品视频网| 欧美一级欧美一级在线播放| 91精品国产91综合久久蜜臀| 91麻豆精品国产91| 日韩欧美国产一区在线观看| 日韩精品在线网站| 日韩欧美一区二区三区在线| 欧美tickle裸体挠脚心vk| 欧美成人a∨高清免费观看| 欧美白人最猛性xxxxx69交| 精品国产区一区| 国产欧美视频一区二区三区| 国产精品丝袜一区| 亚洲美女偷拍久久| 午夜av一区二区三区| 麻豆精品在线播放| 国内精品在线播放| 成人黄色小视频| 欧美亚洲国产一区二区三区| 7777精品伊人久久久大香线蕉的 | 一本高清dvd不卡在线观看| 欧美影院一区二区三区| 欧美一级免费观看| 久久久久九九视频| 亚洲欧美日韩国产成人精品影院| 亚洲成人动漫精品| 国产精品一区二区在线观看不卡 | 成人视屏免费看| 在线观看亚洲专区| 欧美成人高清电影在线| 中文字幕av一区 二区| 亚洲午夜久久久久| 韩国一区二区在线观看| 色婷婷久久99综合精品jk白丝 | 美国av一区二区| av网站免费线看精品| 欧美日韩成人综合天天影院 | 九色|91porny| 色综合久久99| 欧美tickle裸体挠脚心vk| 亚洲女爱视频在线| 另类小说图片综合网| 91丨porny丨户外露出| 欧美mv日韩mv国产| 国产精品福利影院| 日av在线不卡| 色婷婷综合久久久| 久久尤物电影视频在线观看| 一区二区三区在线免费视频| 国产精品综合久久| 欧美三级一区二区| 国产精品免费丝袜| 久久精品国产**网站演员| 91国模大尺度私拍在线视频| 337p日本欧洲亚洲大胆色噜噜| 亚洲男同性恋视频| 国产成人av福利| 日韩欧美一区电影| 亚洲成人动漫在线免费观看| av亚洲精华国产精华精华| 久久综合九色综合久久久精品综合| 亚洲国产一二三| 日本精品视频一区二区三区| 欧美国产一区在线| 精品一区二区三区不卡| 欧美日韩一级黄| 亚洲精品国产成人久久av盗摄| 国产精品一区二区免费不卡| 日韩欧美国产精品一区| 日韩国产精品大片| 91久久精品网| 亚洲日本va午夜在线影院| 国产91丝袜在线播放| 久久综合999| 精品在线一区二区| 91精品免费在线| 午夜伊人狠狠久久| 欧美日韩免费一区二区三区视频| 亚洲精选视频在线| 一本大道久久a久久精二百| 中文字幕亚洲在| 91欧美一区二区| 亚洲另类春色国产| 在线日韩av片| 亚洲综合图片区| 欧美视频一区二区三区在线观看 | 亚洲青青青在线视频| 91尤物视频在线观看| 亚洲日本成人在线观看| 97久久超碰精品国产|