コード例 #1
0
ファイル: rfid.c プロジェクト: dllgxhy/electrismell
/*******************************************************************************
* 描  述  :  初始化RC522,开启天线并设置RC522的工作方式为 ISO14443_A
* 输  入  :  无
* 输  出  :  无
* 返  回  :  无
*******************************************************************************/
static void InitRc522(void)
{
  PcdReset();
  PcdAntennaOff();  
  PcdAntennaOn();
  M500PcdConfigISOType( 'A' );
}
コード例 #2
0
void RC522_Init(void)
{
    RC522_GPIO_Config();        //引脚初始化
    SPI2_Init();      //SPI初始化
    PcdReset();                 //复位模块   
    PcdAntennaOff();            //关闭天线
    PcdAntennaOn();             //打开天线
    M500PcdConfigISOType( 'A' );//设置工作方式
}
コード例 #3
0
ファイル: MFRC522.cpp プロジェクト: lissettecarlr/RFID-_MAIN
void MFRC522::PCDInit()
{
	WriteRawRC(MFRC522_CommandReg,MFRC522_PCD_RESETPHASE); //想启动寄存器写入复位命令
	tskmgr.DelayMs(1);
	WriteRawRC(MFRC522_ModeReg,0x3D);   //定义发送和接收的模式,和Mifare卡通讯,CRC初始值0x6363
    WriteRawRC(MFRC522_TReloadRegL,30); //定时器重装值
    WriteRawRC(MFRC522_TReloadRegH,0);  //定时器重装值
    WriteRawRC(MFRC522_TModeReg,0x8D);  //定时器模式设置
    WriteRawRC(MFRC522_TPrescalerReg,0x3E);//预分频设置
    WriteRawRC(MFRC522_TxAskReg,0x40);     //传输调制设置:强制100%ASK调制独立的ModGsPReg的寄存器设置
	
	PcdAntennaOff();//关载波
	tskmgr.DelayMs(1);
	PcdAntennaOn();//开载波
	tskmgr.DelayMs(1);
}
コード例 #4
0
ファイル: Blinky.c プロジェクト: izzitech/mg-exam
/****************************************************************************************
** 函数原型:    void ComPcdAntenna(void)
** 函数功能:    响应天线命令
** 入口参数:    -
** 出口参数:    -
** 返 回 值:    -
** 描   述:    
****************************************************************************************/
void compcd_antenna(void)
{
	char status = status;

	if (!PcdAntena)
	{
		printf("Antenna Off\r\n");
		status = PcdAntennaOff();
	}
	else
	{  
		printf("Antenna On\r\n");
		DelayMs(10); 
		status = PcdAntennaOn();
		DelayMs(10);
	}
}
コード例 #5
0
/****************************************************************************************************
*函数名称:    rc522_ioctl
*函数参数:    filp:		文件指针
*			  cmd:		控制命令
*			  arg:		传递的参数
*函数返回值:  成功返回0 错误返回-1
*函数描述:    spi控制函数
****************************************************************************************************/
static int rc522_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
{
	int ret = 0;
	
#if 0
	read_block_num = 0;		/* 初始化为0 */
	g_read_cmd = -1;		/* 初始化为-1 */
	g_write_cmd = -1;

	printk("cmd is %x\r\n", cmd);
	
	switch(cmd)
	{
		case RC522_RESET_CMD:	/* 复位 */
			PcdReset();
			break;
			
		case RC522_AntennaOff_CMD:	/* 关闭天线 */
			PcdAntennaOff();
			break;
			
		case RC522_AntennaON_CMD:	/* 开启天线 */
			PcdAntennaOn(); 
			break;
			
		case RC522_Request_CMD:		/* 寻卡 */
			g_read_cmd  = RC522_Request_CMD;	/* 寻卡标志 */
			break;
			
		case RC522_Anticoll_CMD:
			g_read_cmd  = RC522_Anticoll_CMD;	/* 防冲撞 */

			break;
		
		case RC522_Select_CMD:
			g_write_cmd = RC522_Select_CMD;	/* 选定卡片 */
			break;
		
		case RC522_AuthState_CMD:
			g_write_cmd = RC522_AuthState_CMD;	/* 验证卡片密码 */
			break;
			
		case RC522_Write_CMD: 
			g_write_cmd = RC522_Write_CMD;	/* 写块 */
			break;
			
		case RC522_Read_CMD: /* 读块 */
			g_read_cmd = RC522_Read_CMD;
			read_block_num = arg;	/* 需要读取的块 */
			break;
			
		case RC522_BakValue_CMD:	/* 块备份 */
			g_write_cmd = RC522_BakValue_CMD;
			break;
			
		default:
			printk(KERN_ERR "cmd is Invalid!\r\n");
			ret = -1;
	}
#endif
	
	return ret;
}
コード例 #6
0
ファイル: MAIN.C プロジェクト: buzai/MFRC522----
void main( )
{    
     unsigned char status,i;
	 unsigned int str[4]={0xD5,0x5E,0x2A,0xD9};
	 unsigned int temp,j;
	  
     InitializeSystem( );
     PcdReset();
     PcdAntennaOff(); 
     PcdAntennaOn(); 

     while ( 1 )
     {   


//		if(RI == 1) {  //如果收到.
//	
//	      RI = 0;      //清除标志.
//	
//	      UART_buff = SBUF;  //接收.
//	
//		  printf("rec id %x",UART_buff);
//	
//	    }
			

	 		


         status = PcdRequest(PICC_REQALL, g_ucTempbuf);//寻卡
         if (status != MI_OK)
         {    
             InitializeSystem( );
		     PcdReset();
		     PcdAntennaOff(); 
		     PcdAntennaOn(); 
		     continue;
         }
			     
			
         status = PcdAnticoll(g_ucTempbuf);//防冲撞
         if (status != MI_OK)
         {    continue;    }


        //D55E2AD9
		
//		printf("开始: %d \n",array_cmp(g_ucTempbuf,str));


		////////以下为超级终端打印出的内容////////////////////////
		if(array_cmp(g_ucTempbuf,str)==0){

	   		LED_GREEN = 0;
			delay1(100);
			LED_GREEN = 1;
			delay1(100);
			LED_GREEN = 0;
			delay1(200);
			LED_GREEN = 1;

			printf("卡号是 :");
				for(i=0;i<4;i++)
				{
					temp=g_ucTempbuf[i];
					printf("%X",temp);
					
	        	}
			printf("\n");
		}
		else{
			printf("卡号错误 错误的卡号是 :");
				for(i=0;i<4;i++)
				{
					temp=g_ucTempbuf[i];
					printf("%X",temp);
					
	        	}
			printf("\n");
		}

		////////////////////////////////////////////////////////


	    for(i=0;i<250;i++)//先输出一种频率的声音
        {
         for(j=0;j<80;j++);
         Speaker=~Speaker;
        }

		
						 		         
		PcdHalt();

    }
}