STM32硬件SPI通过fm17550读取身份证UID,识别银行卡,识别TYPEA与TYPEB

article/2025/9/17 15:55:17

上面是我的微信和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();}}}

 


http://chatgpt.dhexx.cn/article/Zkyt355e.shtml

相关文章

PUSCH repetition type A

NR Rel-15/16学习笔记 PUSCH repetition type A概念解释repetition次数的配置方法Rel-15Rel-16 repetition type A与PUSCH 时域资源分配repetition type A 与PUSCH 跳频配置是否进行跳频跳频参数配置Intra-slot & Inter-slot 配置Frequency Hopping offset 配置根据offset计…

常见几种USB接口引脚定义,Type A、Type B、Micro USB、Mini USB、Type C

USB2.0母座接口分为有好几种类型&#xff0c;有A型、B型、Mini型等。 Type A S、S- 代表&#xff1a;电源线正、负 D、D- 代表&#xff1a;数据线正、负 Type B 多用于多媒体设备&#xff0c;最为常见的可能就是打印机的数据接口&#xff0c;多是用于数据的传输。 Micro …

GPON Type B保护

GPON TYPE B保护的组网图如图1所示&#xff0c;相应的保护范围包括OLT的主用和备用PON端口&#xff0c;主用和备用光纤。 场景一&#xff1a;PON口工作过程中主用光纤断&#xff0c;如图2所示。 Standby PON口在进入Standby状态后&#xff0c;启动上行光信号检测功能。 Active…

ISO/IEC 14443协议浅谈:TYPE A与TYPE B

ISO/IEC14443规定了邻近卡(PICC)的物理特性;需要供给能量的场的性质与特征&#xff0c;以及邻近耦合设备(PCDs)和邻近卡(PICCs)之间的双向通信;卡(PICCs)进入邻近耦合设备(PCDs)时的轮寻&#xff0c;通信初始化阶段的字符格式&#xff0c;帧结构&#xff0c;时序信息;非接触的半…

物联16:4 ISO/IEC 14443-3 防冲突、防碰撞算法、Type A、Type B

ISO&#xff0f;IEC14443-3 防冲突、防碰撞算法、TypeA、Type B 防冲突原理 1 前言 当2张或2张以上的同类型的PICC卡同时进入RF(Radio Frequency)区域时&#xff0c;多张卡同时接收到PCD机发出的查询命令。会根据卡上的控制逻辑&#xff0c;同时返回响应命令。这样就造成了卡…

5GNR漫谈9:PDSCH和PUSCH资源映射(频域type0/type1和时域typeA/typeB/typeC)

在漫谈6中&#xff0c;我们了解了PDSCH和PUSCH这两个信道&#xff0c;在将比特数据调制为复数的星座图符号后&#xff0c;映射到具体的时频资源位置。映射的具体过程由先频域后时域&#xff0c;即一个OFDM符号的RB子载波上映射完成后&#xff0c;再映射下一个OFDM符号的RB子载波…

Type-C与Type-A、Type-B接口

日常工作中&#xff0c;经常会接触到手机的接口。目前&#xff0c;在我们雨滴科技的ITAB-01工业平板上&#xff0c;USB&#xff08;Universal Serial Bus&#xff09;使用的接口是Type-C。Type系列的接口除了Type-C&#xff0c;还有Type-A和Type-B。 手机经过的一段时间的迅猛发…

USB:Type-A、Type-B、Type-C、miniUSB、microUSB接口类型区分

通用串行总线(universal serial bus&#xff0c;USB)自推出以来&#xff0c;成功替代串口和并口&#xff0c;已经成为计算机和各种设备不可或缺的接口。 USB的优点不用多说&#xff0c;网上有很多&#xff0c;今天主要小结一下USB的各种接口类型&#xff0c;避免被各种各样的U…

安卓开发之WebView的使用

文章预览 前言1.什么是WebView&#xff1f;2.相关方法 一、WebView简单使用1.1、环境准备1.2、MyWebChromClient.java1.3、MyWebViewClient1.4、MainActivity.java1.5、activity_main.xml 二、效果预览 前言 1.什么是WebView&#xff1f; Android内置webkit内核的高性能浏览器…

安卓WebView的使用

一、WebView简介 WebView是Android中的原生UI控件&#xff0c;主要用于在app应用中方便地访问远程网页或本地html资源。同时&#xff0c;WebView也在Android中充当Java代码和JS代码之间交互的桥梁。实际上&#xff0c;也可以将WebView看做一个功能最小化的浏览器。 安卓官方Web…

安卓WebView(H5)调用原生相机及相册

在开始叙述正文之前笔者先声明一下应用场景&#xff1a;例如在网页上的即时通讯需要能拍照或者从图库选择图片来进行上传,此场景下就可以用到这篇文章的内容 正文 首先&#xff0c;如果你已经把相机以及访问文件夹的权限都加上了并且WebView的基础操作都做完了&#xff0c;就差…

安卓webview和js+html交互利用的addJavascriptInterface和webview.loadUrl(javascript:**);

近期做一个项目需要把一个 服务支持的界面用webview来显示..呀 html白雪了js更是一样啥也不会&#xff0c;相信很多初学屌丝员跟我一样,, html开发工具都不知道怎么写..哈哈哈.....现在把做完的结果分享一下先上图了 ,, 这是从项目中特意分离出来的demo这里之上一些关键代码…

安卓webview和h5交互

先上html的代码&#xff1a; <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML><HEAD><TITLE>安卓和js交互demo</TITLE><meta charset"utf-8"></HEAD><script> function giveAnd…

Android—WebView与JS交互

Html文件&#xff1a; WebView与JS交互方式&#xff1a; 1. 前提&#xff1a; WebSettings webSettings webView.getSettings(); // 设置与Js交互的权限 webSettings.setJavaScriptEnabled(true);webView.setWebChromeClient(new WebChromeClient(){Overridepublic boolean …

【Android】之【WebView】

一、简介 WebView是一种控件&#xff0c;它基于webkit引擎&#xff0c;因此具备渲染Web页面的功能。   基于Webview的混合开发&#xff0c;就是在 Android os(安卓)/I os(苹果)原生APP里&#xff0c;通过WebView控件嵌入Web页面。 你手机里有淘宝软件吧&#xff1f; 就是外…

WebView---Android与js交互实例

Android 中可以通过webview来实现和js的交互&#xff0c;在程序中调用js代码&#xff0c;只需要将webview控件的支持js的属性设置为true Android&#xff08;Java&#xff09;与JavaScript&#xff08;HTML&#xff09;交互有四种情况&#xff1a; 1&#xff09; Android&…

【Android】WebView控件最全使用解析

WebView控件最全使用解析 一、WebView 概述二、WebView使用基础篇2.1添加方式2.2 加载远程网页2.3 加载本地网页2.4 加载HTML片段2.5 WebView 常用方法 三、WebView 进阶篇3.1 WebSettings类3.2 WebViewClient类常见方法使用案例 3.3 WebChromeClient类常用方法使用案例测试网页…

Android:这是一份全面 详细的Webview使用攻略

前言 现在很多App里都内置了Web网页&#xff08;Hybrid App&#xff09;&#xff0c;比如说很多电商平台&#xff0c;淘宝、京东、聚划算等等&#xff0c;如下图 京东首页 那么这种该如何实现呢&#xff1f;其实这是Android里一个叫WebView组件实现 今天&#xff0c;我将献…

数据字典的代码示例

数据字典UI设计&#xff1a; 设计说明&#xff1a; 1. 该数据字典支持多级节点。 2. 左边是数据字典树&#xff1b;右边是编辑框&#xff0c;可以对某个数据字典及其一级子节点进行编辑。 代码&#xff1a;https://github.com/tinazhao1985/spring-cloud-demo/tree/master/di…

关于SQL数据字典的详解

相信在学习数据库的时候很多人在设计表的时候会将一些数据量少的数据放到一个表里面 然后使数据库的表比较多。但是其实呢我们可以见那先数据固定的数据放在同一个表里面&#xff0c;这样就 可以减少很多表的创建&#xff0c;这就是数据字典 数据字典分两个表&#xff1a; 一个…