【经验】国产非接触卡读写芯片THM3523实现电子钱包功能的方法
本文使用同芯微电子THM3523非接触卡读写芯片的DEMO板测试电子钱包功能,主要介绍如何使用THM3523将mifare格式的NFC卡片的某个块初始化为值块,并对该值块执行充值、扣款、读取余额等操作。
1、在main.c文件中添加需要用到的头文件;定义g_rfAtr[]数组用来存放缓存数据;定义M_gUID[]数组用来存放卡号;定义DefaultKey[]数组用来存放默认密码,本文使用mifare格式的NFC卡片,卡片的块原始密码为6个0xFF;按照值块的格式定义ValueBlockInitSet[]数组,本文定义值块余额为0,值块地址为0x01;定义ValueBlockIncrease[]数组用来存放需要充值的金额,本文定义充值100;定义ValueBlockDecrease[]数组用来存放需要扣款的金额,本文定义扣款20。
2、增加ReadBlockDataSendToUart2()函数,用来读取某个块的数据,并把读到的数据通过UART2打印出来。
3、在main()函数中,调用uart2_init()函数对串口2执行初始化,波特率9600;调用SleepMode()函数设置THM3523芯片进入正常的工作模式,SleepMode()函数的形参填写1为正常模式,形参填写0为休眠模式;调用SET_Mode()函数设置THM3523芯片使用SPI接口,在SET_Mode()函数的形参中,填写0则使用UART接口,填写1则使用I2C接口,填写2则使用SPI接口;调用IO_INIT()函数执行IO口初始化,主要是初始化SPI接口。
4、在while()循环中,调用THM_MFindCard()函数执行寻卡功能,当发现NFC卡片后再执行其他操作。
5、发现NFC卡片后,调用THM_MCascaded_Anticoll()函数执行防冲撞处理,并读出卡片的卡号,然后将卡片4个字节的卡号通过UART2发送到串口打印出来。
6、调用THM_MInitialKEY()函数加载默认密码,然后再调用THM_MAuthentication()函数对块1进行密码验证;在对块执行读写操作之前,需要先验证密码是否正确。
7、调用THM_MWrite()函数按照值块的格式将块1初始化为值块,要将NFC卡片的某个块作为电子钱包使用,得先将卡片的某个块按照值块的格式写入数据。
8、调用THM_Mchange()函数给NFC卡片的值块1充值100,并读出余额打印到串口;THM_Mchange()函数的第一个形参写入0xC1时,表示执行充值操作。
9、调用THM_Mchange()函数给NFC卡片的值块1扣款20,并读出余额打印到串口;THM_Mchange()函数的第一个形参写入0xC0时,表示执行扣款操作。
10、编译程序并下载固件到MCU中,将卡片靠近THM3523 DEMO板时,串口打印如下数据;第1行数据表示读到NFC卡片的卡号为:0xA3、0x89、0xDE、0x79;第2行数据表示将块1初始化为值块后,读到值块1的余额为0;第2行数据表示将值块1充值100之后,读到值块1的余额为100;第2行数据表示将值块1扣款20之后,读到值块1的余额为80。
11、本文的mian.c文件源代码如下所示:
#include "stm32f10x.h"
#include "usart.h"
#include "mifare.h"
#include "thm3523.h"
#include "ISO14443.h"
#include <string.h>
u8 g_rfAtr[20];
extern unsigned char M_gUID[5];
u8 DefaultKey[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
u8 ValueBlockInitSet[16] = {0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFE, 0x01, 0xFE};
u8 ValueBlockIncrease[4] = {0x00, 0x00, 0x00, 0x64};
u8 ValueBlockDecrease[4] = {0x00, 0x00, 0x00, 0x14};
void ReadBlockDataSendToUart2(u8 block)
{
u8 status;
u8 TempData[16];
u8 g_rfAtrLen = 0;
status = THM_MRead(block, &g_rfAtrLen, TempData); //Read the data of block[n] to TempData
if(status == RECEIVE_OK)
{
UART2_SendBuff(TempData, MBLOCK_SIZE); //Send the data of TempData to uart2
}
}
int main(void)
{
u8 status;
uart2_init(9600); //Set uart2 Baud Rate: 9600
SleepMode(1); //Set THM3523 to work mode
SET_Mode(2); //Set THM3523 to SPI mode, 0: UART, 1: I2C, 2: SPI
IO_INIT(); //SPI GPIO initialize
while(1)
{
status = THM_MFindCard(g_rfAtr); //Find Card
if(status != 0x02)
{
continue;
}
status = THM_MCascaded_Anticoll(g_rfAtr); //Anticoll and Read Card ID
if((status != 5) && (status != 10) && (status != 15))
{
continue;
}
UART2_SendBuff(M_gUID, 4); //Send Card ID to uart2
THM_MInitialKEY(PICC_AUTHENT1A, DefaultKey); //Copy block key to M_gKEYA[]
status = THM_MAuthentication(PICC_AUTHENT1A, 1); //Authentication block[1] key
if(status != MI_OK)
{
continue;
}
status = THM_MWrite(1, ValueBlockInitSet); //Initializes the block[1] to a value block
if(status != MI_OK)
{
continue;
}
ReadBlockDataSendToUart2(1); //Read the block[1] data and send the data to UART2
THM_Mchange(0xC1, 1, ValueBlockIncrease); //Increases the value of the value block 1
ReadBlockDataSendToUart2(1); //Read the block data and send the data to UART2
THM_Mchange(0xC0, 1, ValueBlockDecrease); //Decreases the value of the value block 1
ReadBlockDataSendToUart2(1); //Read the block data and send the data to UART2
}
}
- |
- +1 赞 0
- 收藏
- 评论 0
本文由潮汕小菜提供,版权归世强硬创平台所有,非经授权,任何媒体、网站或个人不得转载,授权转载时须注明“来源:世强硬创平台”。
相关推荐
【经验】THM3523非接触卡读写芯片移植读卡代码和实现读卡号功能的方法
同芯微电子原厂提供的“THM3523_DEMO参考程序”主要是实现上位机软件控制THM3523芯片和NFC卡片进行通信的功能,在普通的读卡应用中可以不用那么多代码。本文主要介绍如何移植读卡需要的代码到MCU工程中,并使用STM32F103 MCU控制THM3523 DEMO板实现读卡号功能。
【经验】国产非接触卡读写芯片THM3523对NFC卡片执行读写数据和修改扇区密码的方法
本文使用同芯微电子THM3523 DEMO板和MIFARE 1(ISO/IEC 14443A )NFC卡片作为测试工具,编写程序实现THM3523非接触卡读写芯片对NFC卡片执行读写数据和修改扇区密码的功能。
【经验】加密芯片解决信息泄漏的烦恼,在信息安全领域中发挥着重要作用
随着互联网的普及,信息安全已经成为了一个备受关注的问题。在这个大数据时代,我们的个人信息和公司机密、财务信息等都面临着被黑客侵扰、病毒攻击和各种网络攻击的风险。因此,加密技术也就应运而生,为解决信息泄漏带来的烦恼提供了有力的保障。
非接触式读写卡芯片 产品介绍
非接触式读写卡芯片产品介绍涵盖应用领域、产品介绍、芯片特性、开发套件和产品路线图。主要应用领域包括读卡器、门锁、电表和POS等,采用国际标准如Qi标准、EMV contactless L1和PBOC3.0。芯片特性包括符合ISO/IEC14443和ISO/IEC15693标准,发射功率和接收增益可调,支持多种传输速率和接口模式。提供完备的软硬件开发套件,产品路线图展示未来产品发展计划。
同芯微电子 - CONTACTLESS READ-WRITE CARD CHIP,非接触式读写卡芯片,非接触式读卡芯片,THM3523,THM3070,THM3010,THM3050,THM3060,THM3030,THM3040,读卡器,POS,门锁,电表
【选型】同芯微电子(TMC)国产NFC读卡器芯片THM3070和THM3523性能和应用的区别
同芯微电子国产NFC读卡器芯片目前主推的型号是THM3070和THM3523,本文主要从芯片的性能和应用来介绍这两种芯片的区别,方便用户在设计产品的时候根据需求来选择合适的NFC读卡器芯片。
【应用】国产非接触式读卡芯片THM3523用于智能电表,支持低功耗寻卡模式
在客户智能电表中,国产高可靠性非接触读卡器芯片推荐THM3523,输入电压为2.7~5.5V。SPI最高可达10Mbps。可支持读ISO/IEC14443 TypeA/B卡。通信接口也支持多种模式,如SPI、I2C、UART。支持低功耗寻卡模式,适合电池供电产品。
详解加密芯片的基本特性和加密原理
加密芯片通过内置的加密算法和密钥管理机制,为数据的加密和解密提供了硬件级别的支持和保护,提高了系统的安全性和可靠性。加密芯片在信息安全领域的广泛应用,有效保护了重要信息的机密性和完整性,为各行业用户提供了更加安全可靠的数据保护手段。
紫光青藤(TSINGTENG MICRO)公司简介及产品介绍
紫光青藤微系统有限公司,隶属于紫光国芯微电子股份有限公司,专注于智能物联产品与技术。公司拥有35000多名员工,20000多项专利,89个分支机构,234个运营与研发中心。产品涵盖安全物联芯片、汽车安全芯片、智能识别和存储等领域,包括安全SE MCU、读卡器RF芯片、USB Key芯片、Nor Flash、条码识别及汽车安全芯片等。紫光青藤致力于提供智能、创新、安全、高效的场景化服务,推动各行业数字化转型升级。
紫光青藤 - SPI NOR FLASH,CODE MODULE,U-KEY,安全SE MCU,NOR FLASH,汽车安全芯片,USB-KEY芯片,非接触读卡器芯片,嵌入式扫码模组,电可擦可编程只读存储器,SPI NOR闪存,SEMCU,车载安全芯片,扫码芯片,车载SEMCU,识别模组,安全物联芯片,扫码芯片及模组,EEPROM,安全SEMCU,非接触读头,扫码模组,U键,ESAM,扫码盒子,代码模块,THM3523,THM3682FAQHB,TH25D-40LA,TH25D-20LA,TH25D-40HA,TH25D-20HA,THK88,THM3652FAGAB,TH25Q-16UA,THM3622FAQF,T9,THM3682FAQH,THM3682FAGA,TH25Q-80HA,TH25D-40UA,THM3070,TH25D-20UA,TH25Q-40UA,THM30,25D SERIES,25Q SERIES,THM35,THM3632FAQB,THM36,THM3652FAQHB,TH25Q-80UA,THM3662FAQB,智能手环,U-KEY,智能家电,AMOLED屏幕工业互联网HDMI,T-BOX,汽车电子ADAS系统,门禁,智能锁,安防摄像头,TWS耳机,智能家居,功能手机基带,汽车安全大脑,AMOLED屏幕,智能电表,安防监控,工业互联网PLC,POS机,仪表盘,路由器,工业互联网HDMI,工业互联网HDMI、PLC,智能手机TDDI触控,手表,支付盒子,身份证阅读器,5G基站,智能玩具,指纹模组,耗材认证,U键,刷脸支付,电脑BIOS
【技术】一文介绍安全芯片的工作原理
安全芯片是一种集成了安全功能的芯片,它通过硬件和软件的双重机制保护数据的安全性。安全芯片的工作原理包括密钥管理、加解密处理、防攻击和安全认证等几个方面。本文瑞纳捷将从安全芯片的功能、特点、工作原理以及应用等几个方面进行阐述,旨在帮助读者更好地了解安全芯片。
【产品】通信速率达106kbps的非接触式逻辑加密卡芯片,适用于各种电子证件等领域
华大电子推出的非接触式逻辑加密卡芯片SHC1104适用于各种电子证件、电子钱包、自动收费系统和公共交通自动售检票系统等领域,现已成功应用于各地公共交通卡等项目中。SHC1104由射频通讯接口、安全控制单元和1k bytes EEPROM组成。
【技术】加密芯片技术如何保障数据安全?
随着数字化时代的到来,人们对数据安全的需求越来越高。加密技术作为一种保护数据安全的重要手段,被广泛应用于各个领域。而加密芯片技术则是实现加密技术的关键之一。本文瑞纳捷将介绍加密芯片技术的基本原理和应用。
FM1216系列CPU卡芯片规格书
FM1216是一款由上海复旦大学微电子集团设计的双接口CPU卡芯片,支持ISO7816和ISO14443A协议。该芯片适用于接触式和非接触式智能卡应用,如电子钱包、公共交通射频卡、基于PBOC2.0标准的银行卡。
复旦微电子 - CPUCARD芯片,CPUCARD CHIP,FM1216,FM1216 SERIES,CONTACTLESS-BASED SMART CARD APPLICATIONS,EXISTING PULIC TRAFFIC RF CARD,BANKING CARD,ELECTRONICS WALLET,银行卡,现有公共交通射频卡,非接触式智能卡应用,电子钱包
【产品】内嵌8位微处理器的非接触式CPU卡芯片,具有80k Bytes的存储空间
华大电子推出的非接触式CPU卡芯片CIU51L80,其典型的应用覆盖公共交通、电子钱包等。CIU51L80内嵌8位微处理器、符合ISO/IEC14443 Type A标准的RF电路、真随机数电路、DES/3DES算法模块、SM1/SM4商密算法模块。
《高效率15w车载手机无线充电器优选元器件方案》,这个支持哪些协议?
这个资料是介绍其中的无线充电的功率和线圈部分。世强现在有满足QI协议的IDT/ROHM/紫光同芯三个品牌的无线充电产品,请参考下列链接。三个品牌产品均可以支持QI协议。 https://www.sekorm.com/doc/159956.html https://www.sekorm.com/chapter/5968.html
电子商城
现货市场
服务
可自由定制铜排形状尺寸;检测精度:0.5%~1.0;电流测量范围 ±300-500A。低噪音 (0.27mVpp);低磁力残余误差:2mV;响应性能<4μSec;支持RoHS指令 、AEC-Q200。
最小起订量: 100个 提交需求>
提供稳态、瞬态、热传导、对流散热、热辐射、热接触、和液冷等热仿真分析,通过FloTHERM软件帮助工程师在产品设计初期创建虚拟模型,对多种系统设计方案进行评估,识别潜在散热风险。
实验室地址: 深圳 提交需求>
登录 | 立即注册
提交评论