实例介绍
【实例截图】
【文件目录】
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(); } }
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论