在好例子网,分享、交流、成长!
您当前所在位置:首页C/C++ 开发实例嵌入式开发 → FM17550开发例程

FM17550开发例程

嵌入式开发

下载此实例
  • 开发语言:C/C++
  • 实例大小:0.21M
  • 下载次数:48
  • 浏览次数:1164
  • 发布时间:2021-01-18
  • 实例类别:嵌入式开发
  • 发 布 人:yqh20210118
  • 文件格式:.rar
  • 所需积分:2
 相关标签: 例程 开发

实例介绍

【实例简介】FM17550 SPI读卡器模块的开发,Keil C语言 

【实例截图】


【文件目录】

FM17550_READER_MCU_SPI

├── 175xx.plg
├── 17XX.uvgui.IM23
├── 17XX.uvgui.songyaohai
├── 17XX.uvgui.ykz
├── 17XX.uvopt
├── 17XX.uvproj
├── 17XX_uvopt.bak
├── 17XX_uvproj.bak
├── Inc
│   ├── INTRINS.H
│   ├── STC15F2K60S2.h
│   ├── cpu_card.h
│   ├── des.h
│   ├── fm175xx.h
│   ├── main.h
│   ├── mifare_card.h
│   ├── pin.h
│   ├── spi.h
│   ├── type_a.h
│   ├── type_b.h
│   ├── type_f.h
│   ├── uart.h
│   ├── uart_app.h
│   └── ultralight.h
├── List
│   ├── 175xx.m51
│   ├── FM175XX_MCU.m51
│   ├── STARTUP.lst
│   ├── cpu_card.lst
│   ├── fm175xx.lst
│   ├── main.lst
│   ├── mifare_card.lst
│   ├── spi.lst
│   ├── type_a.lst
│   ├── type_b.lst
│   ├── type_f.lst
│   ├── uart.lst
│   ├── uart_app.lst
│   └── ultralight.lst
├── Output
│   ├── FM175XX_MCU
│   ├── FM175XX_MCU.build_log.htm
│   ├── FM175XX_MCU.hex
│   ├── FM175XX_MCU.lnp
│   ├── FM175XX_MCU.plg
│   ├── STARTUP.obj
│   ├── cpu_card.obj
│   ├── fm175xx.obj
│   ├── main.obj
│   ├── mifare_card.obj
│   ├── spi.obj
│   ├── type_a.obj
│   ├── type_b.obj
│   ├── type_f.obj
│   ├── uart.obj
│   ├── uart_app.obj
│   └── ultralight.obj
├── cpu_card.c
├── des.c
├── fm175xx.c
├── main.c
├── mifare_card.c
├── spi.c
├── type_a.c
├── type_b.c
├── type_f.c
├── uart.c
├── uart_app.c
└── ultralight.c

3 directories, 66 files



【核心代码】


void Uart_App(void)
{
	LED_3=0;
   if((uart_status.rece_finish==True)&&(uart_status.rece_error==False))
	{
	LED_3=1;
	uart_status.rece_finish=0;
	switch(rece_buff.buff[0])
	{
	case 0x0://版本确认
		send_buff.buff[0]=strlen(system_info);
		memcpy(send_buff.buff 1,system_info,send_buff.buff[0]);
		send_buff.length=send_buff.buff[0] 1;
		break;
	
	case 0x1://FM17XX 软复位
		
		send_buff.buff[0]=FM175X_SoftReset();
		send_buff.length=1;
		break;

   	case 0x2://FM17XX 硬复位
		
		send_buff.buff[0]=FM175X_HardReset();
		send_buff.length=1;
		break;

	case 0x3://PC读取FM17XX所有地址
		send_buff.buff[0]=Read_Reg_All(send_buff.buff 1);
		send_buff.length=65;
		break;

	case 0x4://PC读取FM17XX地址
		send_buff.buff[0]=OK;
		send_buff.buff[1]=rece_buff.buff[1];
		send_buff.buff[2]=Read_Reg(rece_buff.buff[1]);
		send_buff.length=3;
		break;

	case 0x5://PC写入FM17XX地址
				
		Write_Reg(rece_buff.buff[1],rece_buff.buff[2]);
		send_buff.buff[0]=0;
		send_buff.length=1;
		break;
	
	case 0x6://读取扩展寄存器	
	 	send_buff.buff[0]=OK;
		send_buff.buff[1]=rece_buff.buff[1];
		send_buff.buff[2]=Read_Ext_Reg(rece_buff.buff[1]);
		send_buff.length=3;
	 	break;

	case 0x7://写入扩展寄存器
			
		send_buff.buff[0]= Write_Ext_Reg(rece_buff.buff[1],rece_buff.buff[2]);
		send_buff.buff[1]=rece_buff.buff[1];
		send_buff.length=2;
		break;	
	
	case 0x8://FM175X_HardPowerdown
		send_buff.buff[0]=FM175X_HardPowerdown();
		send_buff.length=1;
		break;

   	case 0x9://FM175X_SoftPowerdown
		send_buff.buff[0]=FM175X_SoftPowerdown();
		send_buff.length=1;
		break;

	case 0xA://REQUEST
			
		Set_Rf(3);   //turn on radio
		Pcd_ConfigISOType(0);
		send_buff.buff[0]=TypeA_Request(PICC_A.ATQA);//寻卡 Standard	 send request command Standard mode
		send_buff.buff[1]=PICC_A.ATQA[0];
		send_buff.buff[2]=PICC_A.ATQA[1];
		send_buff.length=3;
		break;

	case 0xB://WAKEUP
		Set_Rf(3);   //turn on radio
		Pcd_ConfigISOType(0);
		send_buff.buff[0]=TypeA_WakeUp(PICC_A.ATQA);
		send_buff.buff[1]=PICC_A.ATQA[0];
		send_buff.buff[2]=PICC_A.ATQA[1];
		send_buff.length=3;
		break;

 	case 0xC:// Halt
		send_buff.buff[0]= TypeA_Halt();
		send_buff.length=1;
		break;

	case 0x10://寻卡,防冲突,选卡
		Set_Rf(3);   //turn on radio
		Pcd_ConfigISOType(0);
		send_buff.buff[0]=TypeA_CardActivate(&PICC_A);

		memcpy(send_buff.buff 1,PICC_A.ATQA,2);
		memcpy(send_buff.buff 3,&PICC_A.UID_len,1);
		memcpy(send_buff.buff 4,PICC_A.UID,12);
		memcpy(send_buff.buff 16,&PICC_A.SAK,1);
	   		
		send_buff.length=17;	
		break;
	
	case 0x11://Mifare 认证
		
		send_buff.buff[0]=Mifare_Auth(rece_buff.buff[1],rece_buff.buff[2],rece_buff.buff 3,PICC_A.UID);	//card authentication
		send_buff.length=1;
		break;

	case 0x12://Mifare 读块
		send_buff.buff[0]=Mifare_Blockread(rece_buff.buff[1] rece_buff.buff[2]*4,send_buff.buff 1);	//bolck read function
		send_buff.length=17;
		break;

	case 0x13://Mifare 写块

		send_buff.buff[0]=Mifare_Blockwrite((rece_buff.buff[1] rece_buff.buff[2]*4),rece_buff.buff 3);	 //block write function
		send_buff.length=1;
		break;

	case 0x14://Mifare 增值

		send_buff.buff[0]=	Mifare_Blockinc(rece_buff.buff[1],rece_buff.buff 2);
		send_buff.length=1;
		break;
																								    
	case 0x15://Mifare 减值
		send_buff.buff[0]=	Mifare_Blockdec((rece_buff.buff[1] rece_buff.buff[2]*4),rece_buff.buff 3);
		send_buff.length=1;
		break;

	case 0x16://Mifare transfer
		send_buff.buff[0]=	Mifare_Transfer(rece_buff.buff[1]);
		send_buff.length=1;
		break;

   	case 0x17://Mifare restore
		send_buff.buff[0]=	Mifare_Restore((rece_buff.buff[1] rece_buff.buff[2]*4));
		send_buff.length=1;
		break;
	 
	case 0x18://Mifare 设置数据块
		send_buff.buff[0]= Mifare_Blockset(rece_buff.buff[1],rece_buff.buff 2);
		send_buff.length=1;
		break;
   					
	case 0x20://RATS
		send_buff.buff[0]=CPU_Rats(rece_buff.buff[1],rece_buff.buff[2],&send_buff.buff[1],send_buff.buff 2);
		send_buff.length=send_buff.buff[1] 2;
		break;
	
	case 0x21://PPS
		send_buff.buff[0]=CPU_PPS(rece_buff.buff[1],rece_buff.buff[2],&send_buff.buff[1],send_buff.buff 2);
		send_buff.length=send_buff.buff[1] 2;
		break;

   	case 0x22://高波特率
		send_buff.buff[0]=CPU_BaudRate_Set(rece_buff.buff[1]);
		send_buff.length=1;
		break;

	case 0x23://TPDU指令

		send_buff.buff[0]=CPU_TPDU(rece_buff.buff[1],rece_buff.buff 2,&send_buff.buff[1],send_buff.buff 2);
		send_buff.length=send_buff.buff[1] 2;
		break;
  
	case 0x24://R_block
		send_buff.buff[0]=CPU_R_Block(&send_buff.buff[1],send_buff.buff 2);
		send_buff.length=send_buff.buff[1] 2;
		break;

	case 0x25://S_block
		send_buff.buff[0]=CPU_S_Block(rece_buff.buff[1],&send_buff.buff[1],send_buff.buff 2);
		send_buff.length=send_buff.buff[1] 2;
		break;

   	case 0x26://I_block
		send_buff.buff[0]=CPU_I_Block(rece_buff.buff[1],rece_buff.buff 2,&send_buff.buff[1],send_buff.buff 2);
		send_buff.length=send_buff.buff[1] 2;
		break;
   	
	case 0x27://随机数
		send_buff.buff[0]=CPU_Random(&send_buff.buff[1],send_buff.buff 2);
		send_buff.length=send_buff.buff[1] 2;
		break;
   
	case 0x31://FM17550 TYPE B request
		Set_Rf(3);   //turn on radio
		Pcd_ConfigISOType(1);
		send_buff.buff[0]=TypeB_Request(&send_buff.buff[1],send_buff.buff 2,&PICC_B);
		send_buff.length=send_buff.buff[1] 2;
		break;

	case 0x32://FM17550 TYPE B attrib
		send_buff.buff[0]=TypeB_Select(PICC_B.PUPI,&send_buff.buff[1],send_buff.buff 2);
		send_buff.length=send_buff.buff[1] 2;
		break;

	case 0x33://FM17550 TYPE B halt
		send_buff.buff[0]=TypeB_Halt(PICC_B.PUPI,&send_buff.buff[1],send_buff.buff 2);
		send_buff.length=send_buff.buff[1] 2;;
		break;
			   
	case 0x34://FM17550 TYPE B get_uid
		send_buff.buff[0]=TypeB_GetUID(&send_buff.buff[1],send_buff.buff 2);
		send_buff.length=send_buff.buff[1] 2;
		break;

	case 0x35://FM17550 TYPE B wakeup
		Set_Rf(3);   //turn on radio
		Pcd_ConfigISOType(1);
	  	send_buff.buff[0]=TypeB_WUP(&send_buff.buff[1],send_buff.buff 2,&PICC_B);
		send_buff.length=send_buff.buff[1] 2;
		break;
	
	case 0x52://ultralight_read
		send_buff.buff[0]=Ultra_Read(rece_buff.buff[1],send_buff.buff 1);
		send_buff.length=5;
		break;

	case 0x53://ultralight_write
		send_buff.buff[0]=Ultra_Write(rece_buff.buff[1],rece_buff.buff 2);
		send_buff.length=1;
		break;

 	case 0x60:
		Set_Rf(3);   //turn on radio
		Pcd_ConfigISOType(2);
		send_buff.buff[0]=TypeF_Polling(rece_buff.buff[1],&send_buff.buff[1],send_buff.buff 2);
		send_buff.length=send_buff.buff[1] 2;
		break;

	default:
		send_buff.buff[0]=ERROR;
		send_buff.length=1;
		break;
		}
		Uart_Send();
	 } 
  }


标签: 例程 开发

实例下载地址

FM17550开发例程

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警