STM32硬件SPI通过fm17550读取身份证UID,识别银行卡,识别TYPEA与TYPEB
上面是我的微信和QQ群,欢迎新朋友的加入。
目录
1.硬件平台
2.驱动实现
3.循环扫卡测试程序
4.TYPEB射频卡扫描
5.TYPEA射频卡扫描
6.身份证UID读取
1.硬件平台
1.STM32F103+FM17550
2.卡片类型:身份证、TYPEA/B卡、银行卡
2.驱动实现
1.硬件SPI,配置如下
/* SPI1 init function */
static void MX_SPI1_Init(void)
{/* SPI1 parameter configuration*/hspi1.Instance = SPI1;hspi1.Init.Mode = SPI_MODE_MASTER;hspi1.Init.Direction = SPI_DIRECTION_2LINES;hspi1.Init.DataSize = SPI_DATASIZE_8BIT;hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH;hspi1.Init.CLKPhase = SPI_PHASE_2EDGE;hspi1.Init.NSS = SPI_NSS_SOFT;hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_64;hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;hspi1.Init.TIMode = SPI_TIMODE_DISABLE;hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;hspi1.Init.CRCPolynomial = 10;if (HAL_SPI_Init(&hspi1) != HAL_OK){Error_Handler();}}
3.循环扫卡测试程序
/*********************************************
** 函数描述:循环寻卡
** 输入参数:无
** 返回值 :无
** 说明:
*********************************************/
void Find_Card(void)
{volatile unsigned char statues;unsigned int Rec_len; //卡片返回数据长度statues=TypeA_CardActive(picc_atqa,picc_uid,picc_sak);if(statues != TRUE){FM175X_SoftReset();Rec_len = 0;Pcd_ConfigISOType(1); //设置TypeBSet_Rf(3); //turn on radiostatues=TypeB_WUP(&Rec_len,Send_Buff+Data,PUPI);//寻卡 Standard send request command Standard modeif(statues == TRUE)statues=TypeB_Select(PUPI,&Rec_len,Send_Buff+Data); }if(statues == TRUE){HAL_Delay(10);} HAL_Delay(1000); Set_Rf(0); //turn off radio
}
4.TYPEB射频卡扫描
/*************************************************
** 函数描述:测试TYPEB卡
** 输入参数:无
** 返回值 :无
** 说明:
*************************************************/
void Test_CardB(void)
{uint8_t status;unsigned int Rec_len; //卡片返回数据长度HAL_Delay(1000);FM175X_SoftReset(); Rec_len = 0;Pcd_ConfigISOType(1); //设置TypeBSet_Rf(3); //turn on radiostatus=TypeB_WUP(&Rec_len,Send_Buff,PUPI);//寻卡 Standard send request command Standard modeif(Rec_len == 0x60){status=TypeB_Select(PUPI,&Rec_len,Send_Buff);if(status == TRUE){status=TypeB_GetUID(&Rec_len,Send_Buff);if(status == TRUE){junValue++;}}}
}
5.TYPEA射频卡扫描
/***********************************************************
** 函数描述:测试TYPEA卡
** 输入参数:无
** 返回值 :无
** 说明:
***********************************************************/
void Test_CardA(void)
{uint8_t status;//激活卡(寻卡,防冲突,选卡)status=TypeA_CardActive(picc_atqa,picc_uid,picc_sak);if (status != TRUE){//激活失败return;}status=Mifare_Auth(0x00,0x01,DefualtKey,picc_uid); //card authenticationif (status != TRUE){//认证失败return;}//测试的时候避免反复写数据if(junValue){status=Mifare_Blockwrite(0x04,DefualtData); //block write functionif (status != TRUE){//写数据失败return;}junValue = 0;}status=Mifare_Blockread(0x04,Send_Buff); //bolck read function(读04块的数据)if (status != TRUE){//读数据失败return;}
}
6.身份证UID读取
//检测TYPEB 射频卡FM175X_SoftReset(); Rec_len = 0;Pcd_ConfigISOType(1); //设置TypeBSet_Rf(3); //turn on radiostatus=TypeB_WUP(&Rec_len,Send_Buff,PUPI);//寻卡 Standard send request command Standard modeif(Rec_len == 0x60){status=TypeB_Select(PUPI,&Rec_len,Send_Buff);if(status == TRUE){status=TypeB_GetUID(&Rec_len,Send_Buff);if(status == TRUE){for(uint8_t i=0;i<12;i++){HID_SendHex(Send_Buff[i]);}HID_Enter();}}}
STM32硬件SPI通过fm17550读取身份证UID,识别银行卡,识别TYPEA与TYPEB相关推荐
- STM32硬件SPI驱动OLED
文章目录 一.OLED相关 1.OLED简介 2.0.96寸的OLED模块概述 3.模块引脚说明 4.汉字点阵编码原理 二.硬件SPI 1.SPI简介 2.SPI的引脚映射关系 三.SPI驱动的OLE ...
- STM32硬件SPI控制TM1638 按键数码管LED显示模块
STM32硬件SPI控制TM1638按键数码管LED显示模块 从淘宝买来的,TM1638专门是控制LED的,LED组合起来就可以变成数码管,还有按键,这个我就没管了,不想管了,发这个帖子只是为了记 ...
- 嵌入式开发-STM32硬件SPI驱动TFT屏
嵌入式开发-STM32硬件SPI驱动TFT屏 这次用到的TFT屏 CubeMX设置 代码编写 增加的内容 需要注意问题 代码下载 这次用到的TFT屏 现在的TFT屏幕已经很便宜了,65536色屏幕,2 ...
- 服务器身份证识别银行卡识别系统
服务器身份证识别银行卡识别系统的网络结构 由Web Service和其相关网站接收客户端上传的需要识别的证件图片,客户端可以是PC的客户端程序,可以是PC的浏览器.手机或其他便携式设备.当Web Se ...
- 身份证识别,银行卡识别,驾驶证识别,行驶证识别,根据百度文字识别 api 封装,能快速识别身份证信息,银行卡信息,驾驶证信息,行驶证信息,使用非常方便
OCR_identify 项目地址:wenchaosong/OCR_identify 简介:身份证识别,银行卡识别,驾驶证识别,行驶证识别,根据百度文字识别 api 封装,能快速识别身份证信息,银行 ...
- 基础篇010.2 STM32驱动RC522 RFID模块之二:STM32硬件SPI驱动RC522
目录 1. 实验硬件及原理图 1.1 RFID硬件 1.2 硬件原理图 2. 单片机与RFID硬件模块分析 3. 利用STM32CubeMX创建MDK工程 3.1 STM32CubeMX工程创建 3. ...
- STM32硬件SPI使用与nSS的理解
最近在调试硬件SPI,之前使用软件模拟方式,为了提高速度,选择该方式进行替换. 花了一些时间了解寄存器跟库函数直接调用,结果要么读取不出数据(陷入等待TXE,RXNE死循环)或读取数据为0xffff, ...
- stm32 硬件spi半双工三线的一些研究心得
a7105可以使用四线spi,或者3线spi, 但是之前都是使用3线的软件模拟的三线spi的,所以不想改其它代码了,就想可以提高一个spi的读写速度,原来软件方式的读写速度,在48Mhz的03x下面, ...
- FM1722/02NL+STM32硬件SPI调试笔记
1.介绍 FM17XX 系列通用非接触读卡机芯片是复旦微电子股份有限公司设计的,基于 ISO14443 标准的系 列通用非接触卡读卡机芯片,采用 0.6 微米 CMOS EEPROM 工艺. FM17 ...
最新文章
- 寻找下半年潜力币,压中一个,不负牛市
- sun cluster3.1
- 两个充电宝能互充电吗_国人鬼才设计,手掌大智能芯片充电宝能暖手、充电、补光镜三合一...
- jq在html中添加dom元素,使用jQuery添加DOM元素的最佳方法
- JAVA面试题 + 答案
- 可近似看作直线的是_高中物理题根之一:《匀变速直线运动的规律》
- [OpenGL] opengl常见问题汇总
- SQLServer DBA 三十问之我答(第7题)
- 搭建跨平台编程环境Code::Blocks+wxWidgets
- 电脑经常自动重启的原因
- Building a LAMP Server
- 传奇世界修改服务器时间,《传奇世界手游时长版》测试结束公告
- uni-app 登录功能(2)
- Rust异步之Future
- 解空间树搜索 及 最优解
- VS2022 Setup Project 打包
- Unbuntu16.04下cmake-gui安装
- AMD,在竞争中蜕变!
- 手机寸照如何修改底色
- igxe本地机器人怎么用_IGXE自售机器人第四批申请开启
热门文章
- 随机信号处理的一些归纳
- 项目 调度 服务器,(2)项目构建(Reactor部分)【Lars-基于C++负载均衡远程服务器调度系统教程】...
- (精确度,召回率,真阳性,假阳性)ACC、敏感性、特异性等 ROC指标
- 6S大气校正模型源码
- GPU服务器使用教程
- SQL基础教程学习第六站:数据更新
- Power BI 可视化:直观了解分类百分比的饼图树视觉
- 万能乘法速算法大全_小学数学各年级知识点和重点、难点大全,复习必备提纲!...
- Android开发如何定制framework层服务
- 电脑怎么进入BIOS的方法集合