【经验】THM3523非接触卡读写芯片移植读卡代码和实现读卡号功能的方法
同芯微电子原厂提供的“THM3523_DEMO参考程序”主要是实现上位机软件控制THM3523芯片和NFC卡片进行通信的功能,参考程序中除了非接触卡读写芯片THM3523和卡片进行通信的代码外,还包括了USB、CCID和EMV等代码。在普通的读卡应用中,可以不需要这么多的代码。本文主要介绍如何移植读卡需要的代码到MCU工程中,并使用STM32F103的MCU控制THM3523 DEMO板实现读卡号功能的方法。
1、将MCU和THM3523 DEMO板连接在一起,对应的GPIO口如下图所示。新建一个MCU工程,将THM3523_DEMO参考程序\Projects\THM3523_CCID文件夹中的I2C、SPI、UART、ISO14443、MIFARE、THM3523这6个文件夹复制到MCU工程中。
2、将THM3523_DEMO参考程序\Projects\THM3523_CCID\inc文件夹中的i2c.h文件复制到MCU工程的I2C文件夹中;将ISO14443.h文件复制到MCU工程的ISO14443文件夹中;将thm3523.h文件复制到MCU工程的THM3523文件夹中;将SPI.h、HARD_SPI.h这2个文件复制到MCU工程的SPI文件夹中。
3、THM3523_DEMO参考程序\Projects\THM3523_CCID\src文件夹中的stm32_it.c文件,包含了USART2的中断处理代码,可以把文件中的#include "usart.h"和extern u8 UART2BUF[50];这两行代码,以及整个USART2_IRQHandler()函数的处理代码复制到MCU工程的stm32f10x_it.c文件中。
4、在MCU工程中新增I2C、SPI、UART、ISO14443、MIFARE、THM3523这6个Group,并在每个Group分别导入如下文件;
在头文件路径中增加I2C、SPI、UART、ISO14443、MIFARE、THM3523这6个文件夹的路径。
5、在i2c.c文件中,将#include "EMV_Main.h"这行代码屏蔽。
6、在SPI.c文件中,将#include "usb_lib.h"这行代码屏蔽;增加包含NULL定义的头文件代码#include <stddef.h> ,再增加包含GPIO定义的头文件代码#include "stm32f10x.h"。
7、在usart.c文件中,增加代码s16 Rx2Counter = 0x00; 用来存放串口接收到的数据长度。
8、在usart.h文件中,由于本文中使用UART2来打印卡片的卡号,所以需要将void uart2_init(u32 bound);这行代码取消屏蔽。
9、在ISO14443.c文件中,将#include "EMV_Main.h"这行代码屏蔽。
10、在ISO14443.h文件中,将#include "usb_lib.h"、#include "usb_bot.h"、#include "usb_istr.h" 这3行代码屏蔽;增加包含u8、u16和s16定义的头文件代码#include "stm32f10x.h"。
11、在mifare.c文件中,将#include "EMV_Main.h"这行代码屏蔽。
12、在mifare.h文件中,将#define FALSE 0和#define TRUE 1这两行代码取消屏蔽;增加#define fdtpcd 1这行代码。
13、在thm3523.c文件中,增加代码#include "mifare.h";并增加unsigned char SLAVE_ADDRESS; 这行代码。
14、在thm3523.c文件中,修改SET_Mode()函数的代码,由于THM3523 DEMO板是通过硬件焊接不同的电阻来判断使用哪种通信接口,在SET_Mode()函数中不需要配置GPIO口,所以将SET_Mode()函数改为如下代码。
void SET_Mode(u8 Modetype)
{
if(0 == Modetype)
{
UART_ON=1;
I2C_ON=0;
SPI_ON=0;
}
else if(1 == Modetype)
{
UART_ON=0;
I2C_ON=1;
SPI_ON=0;
}
else
{
UART_ON=0;
I2C_ON=0;
SPI_ON=1;
}
}
15、在thm3523.c文件中,根据MCU和THM3523所使用的通信接口修改void IO_INIT()函数的代码,本文中MCU和THM3523使用SPI接口通信,由于SPI_Init_GPIO()函数中有对SPI的GPIO口进行初始化,所以可以将SPI初始化代码前面的GPIO初始化代码删除。
16、在thm3523.h文件中,将#include "usb_lib.h"、#include "usb_bot.h"、#include "usb_istr.h" 这3行代码屏蔽。
17、在main.c文件中,增加如下4行包含头文件代码,并增加g_rfAtr[]和M_gUID[]这2个数组的定义代码。
#include "stm32f10x.h"
#include "usart.h"
#include "mifare.h"
#include "thm3523.h"
u8 g_rfAtr[20];
extern unsigned char M_gUID[5];
18、在main.c文件的main()函数中,定义一个变量status用来存放函数返回的状态,调用uart2_init()函数设置USART2的波特率为9600,调用SleepMode()函数让THM3523进入工作模式,调用SET_Mode()函数定义MCU和THM3523通过SPI接口通信,调用IO_INIT()函数对SPI接口的GPIO进行初始化。
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(); //GPIO initialize
19、在main()函数的while循环中,先调用THM_MFindCard()函数判断是否有发现卡片,当发现卡片后,再调用THM_MCascaded_Anticoll()函数执行防冲突处理并读出卡号;将卡号和异或校验值存放在M_gUID[]数据中,M_gUID[0]~M_gUID[3]前面4个字节为卡号,M_gUID[4]为卡号的异或校验值;最后调用UART2_SendBuff()函数将4个字节的卡号通过USART2打印出来。
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 != 0x05)
{
continue;
}
UART2_SendBuff(M_gUID, 4);
}
20、编译代码,将固件下载到MCU后,将USB转串口工具连接电脑和MCU的USART2对应的GPIO口,将卡片靠近THM3523 DEMO板,可以看到电脑的串口软件打印卡片的卡号。
- |
- +1 赞 0
- 收藏
- 评论 1
本文由潮汕小菜提供,版权归世强硬创平台所有,非经授权,任何媒体、网站或个人不得转载,授权转载时须注明“来源:世强硬创平台”。
相关推荐
【经验】国产非接触卡读写芯片THM3523实现电子钱包功能的方法
本文使用同芯微电子THM3523非接触卡读写芯片的DEMO板测试电子钱包功能,主要介绍如何使用THM3523将mifare格式的NFC卡片的某个块初始化为值块,并对该值块执行充值、扣款、读取余额等操作。
设计经验 发布时间 : 2021-05-01
【经验】国产非接触卡读写芯片THM3523对NFC卡片执行读写数据和修改扇区密码的方法
本文使用同芯微电子THM3523 DEMO板和MIFARE 1(ISO/IEC 14443A )NFC卡片作为测试工具,编写程序实现THM3523非接触卡读写芯片对NFC卡片执行读写数据和修改扇区密码的功能。
设计经验 发布时间 : 2021-04-20
【选型】同芯微电子(TMC)国产NFC读卡器芯片THM3070和THM3523性能和应用的区别
同芯微电子国产NFC读卡器芯片目前主推的型号是THM3070和THM3523,本文主要从芯片的性能和应用来介绍这两种芯片的区别,方便用户在设计产品的时候根据需求来选择合适的NFC读卡器芯片。
器件选型 发布时间 : 2020-12-09
【应用】国产非接触式读卡芯片THM3523用于智能电表,支持低功耗寻卡模式
在客户智能电表中,国产高可靠性非接触读卡器芯片推荐THM3523,输入电压为2.7~5.5V。SPI最高可达10Mbps。可支持读ISO/IEC14443 TypeA/B卡。通信接口也支持多种模式,如SPI、I2C、UART。支持低功耗寻卡模式,适合电池供电产品。
应用方案 发布时间 : 2020-09-18
紫光青藤(TSINGTENG MICRO)公司简介及产品介绍
型号- 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
【应用】安全加密芯片TMS-97-101A用于T-BOX,满足并高于国六要求,AEC-Q100认证
同芯微电子的安全加密芯片SE产品T9系列的TMS-97-101A,内置DES/T-DES 、AES,SM1,SM4等安全对称算法,以及RSA,SM2 等非对称算法, 可提供安全加密芯片配套OS和SDK,能够方便接入T-BOX系统。同芯微安全加密SE芯片能够有效的保护T-BOX与外界通信的安全,为T-BOX终端和云端建立安全通道,保护数据的安全。
应用方案 发布时间 : 2020-08-21
《高效率15w车载手机无线充电器优选元器件方案》,这个支持哪些协议?
这个资料是介绍其中的无线充电的功率和线圈部分。世强现在有满足QI协议的IDT/ROHM/紫光同芯三个品牌的无线充电产品,请参考下列链接。三个品牌产品均可以支持QI协议。 https://www.sekorm.com/doc/159956.html https://www.sekorm.com/chapter/5968.html
技术问答 发布时间 : 2019-12-23
【方案】家庭智能锁优选器件方案
描述- 本方案通过采用Silicon Labs 32 位低功耗MCU EFM32G230 系列,Silicon Labs 无线多协议SoC EFR32MG系列、圣邦微高精度低噪声低功耗低压差LDO SGM2034、圣邦微直流H 桥驱动器SGM42507 及相关器件,解决了产品运行功耗大、带载能力弱、电机驱动能力不足导致工作不稳定的问题,有效保证了产品可靠的运行。
型号- MK16-B-2,SI4438,SGM42507,EFR32MG1V132F256GM32,SGM2040,MC-146,SGM3752,SGM31324,HR9110S,SGM42609,BGM12X,FA-20H,THM3010,SI4463,AT8837,CPT112S,A9500,SI1153,EFR32BGXXX,SGM4890,SGM2034,SGM706B,RX8010SJ,FC-135,CC6206,EFM32G230,CC6205
【产品】900V N沟道MOSFET TMA3N90H、TMU3N90H,100%雪崩测试
无锡紫光微电子有限公司是由紫光同芯微电子有限公司投资的一家高新技术企业,是一家专注于先进半导体功率器件和集成电路的设计研发、芯片加工、封装测试及产品销售的集成电路设计企业。无锡紫光微推出了TMA3N90H和TMU3N90H的VD MOSFET。分别采用TO-220F和TO-251的封装方式。
新产品 发布时间 : 2019-10-25
【产品】650V N沟道MOSFET TMA/TMC/TMD/TMP/TMU6N65HG,脉冲漏极电流达24A
无锡紫光微电子有限公司是由紫光同芯微电子有限公司投资的一家高新技术企业,是一家专注于先进半导体功率器件和集成电路的设计研发、芯片加工、封装测试及产品销售的集成电路设计企业。无锡紫光微推出了TMA6N65HG,TMC6N65HG,TMD6N65HG,TMP6N65HG和TMU6N65HG的VD MOSFET。封装方式分别为TO-220F,TO-262,TO-252,TO-220和TO-251。
新产品 发布时间 : 2019-10-27
紫光同芯微安全芯片产品介绍
型号- THM3300,THC80,THC20F192A,THC20F08AD-V11M,THM3100,THC80F480A,THC20,THM3060,THC20F17BD-V40,THD86,THM3040,THD89,THD88,THC20F132A,THC80F212A,THM3080,THC80F08BD,THC80F228A,THK88,THD88-F1280,THK89,THK88-2,THC80F09AD-BM,THM3010,THC80F340A,THM3030,THD8X,THM3070,THC20F08AD-V11,THC80F09AD,THM30,THC26E05C,THD20F06BD
【产品】基于32位安全核处理器的安全芯片THM36系列,内置512KB Flash存储器
同芯微电子的THM36系列是高性能、低功耗、具有丰富的内部协处理器和对外接口的安全芯片,可以作为支付终端或者密码键盘使用,用于指纹应用、国家商用密码专用算法应用、网络银行应用、小商户/家庭/个人支付应用等对信息安全有较高要求的应用场合。
新产品 发布时间 : 2019-08-20
是否有13.56MHz、支持ISO15693协议的非接触卡读写芯片?
您好,推荐同芯微THM3070、符合ISO/IEC14443Type A/B和ISO/IEC15693标准、最高支持848kbit/s速率,参考链接:https://www.sekorm.com/news/69249979.html
技术问答 发布时间 : 2023-01-10
【选型】同芯微电子(TMC)智能终端安全芯片/32位安全MCU/非接触式读卡芯片/无线充电IC选型指南
目录- 安全芯片 安全MCU 非接触式接口芯片 接触式接口芯片 Nor Flash 无线充电接收IC 无线充电发射IC
型号- THM3622FAQDB,THM3682FAQD,THM38034,THM3100,THM3682FAQH,THM3622FAQFB,THM3040,THM3070,THK88V20,TH25Q40,TH25040,THK88,THKSS,THP9110,THP9330,THM36S2FAQH,THM380344,THP9410,THM3652FAQHB,THM3652FAGAB,THP9100,THM36S2FAQD,THM3662FAQB
电子商城
现货市场
服务
提供稳态、瞬态、热传导、对流散热、热辐射、热接触、和液冷等热仿真分析,通过FloTHERM软件帮助工程师在产品设计初期创建虚拟模型,对多种系统设计方案进行评估,识别潜在散热风险。
实验室地址: 深圳 提交需求>
世强深圳实验室提供Robei EDA软件免费使用服务,与VCS、NC-Verilog、Modelsim等EDA工具无缝衔接,将IC设计高度抽象化,并精简到三个基本元素:模块、引脚、连接线,自动生成代码。点击预约,支持到场/视频直播使用,资深专家全程指导。
实验室地址: 深圳 提交需求>
登录 | 立即注册
提交评论