【经验】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卡片的某个块初始化为值块,并对该值块执行充值、扣款、读取余额等操作。
【经验】国产非接触卡读写芯片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
【应用】安全加密芯片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终端和云端建立安全通道,保护数据的安全。
紫光同芯公司介绍以及无锡微主体变更说明
紫光同芯微电子有限公司(紫光同芯)成立于2001年,专注于安全芯片、汽车电子等领域,拥有超过230亿颗的出货量。公司因无锡微电子长期亏损,决定对其进行清算注销,并变更主体为紫光同芯。此次变更不影响销售网络、技术支持、内部芯片、封装、产品、功能、规格书及包装规范、供应链、品质、考核要求、人员等方面。紫光同芯强调,此次变更有助于品牌加持、供应链加持、更丰富的产品类型、更强大的研发实力以及更长远的战略投入。
无锡紫光微 - 大容量高安全双界面金融芯片,汽车域控MCU芯片,安全芯片,智能集测,消费电子,汽车电子
【方案】家庭智能锁优选器件方案
本方案通过采用Silicon Labs 32 位低功耗MCU EFM32G230 系列,Silicon Labs 无线多协议SoC EFR32MG系列、圣邦微高精度低噪声低功耗低压差LDO SGM2034、圣邦微直流H 桥驱动器SGM42507 及相关器件,解决了产品运行功耗大、带载能力弱、电机驱动能力不足导致工作不稳定的问题,有效保证了产品可靠的运行。
STANDEX-MEDER,芯进电子,EPSON,LONGSUNG,同芯微电子,SILICON LABS,SGMICRO,中科微 - ZIGBEE,电机驱动,32位MCU,NB-IOT,NFC,LED 驱动芯片,电容触摸按键,晶体单元,蓝牙模块,蓝牙/ZIGBEE,蓝牙SOC,ZIGBEE,SUB-G,NB物联网,RTC实时时钟,LDO,语音芯片,呼吸灯驱动芯片,接近传感器,霍尔开关传感器,看门狗芯片,干簧管传感器,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,智能家居,智能电子锁,家庭智能锁,智能锁
《高效率15w车载手机无线充电器优选元器件方案》,这个支持哪些协议?
这个资料是介绍其中的无线充电的功率和线圈部分。世强现在有满足QI协议的IDT/ROHM/紫光同芯三个品牌的无线充电产品,请参考下列链接。三个品牌产品均可以支持QI协议。 https://www.sekorm.com/doc/159956.html https://www.sekorm.com/chapter/5968.html
【产品】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。
【产品】900V N沟道MOSFET TMA3N90H、TMU3N90H,100%雪崩测试
无锡紫光微电子有限公司是由紫光同芯微电子有限公司投资的一家高新技术企业,是一家专注于先进半导体功率器件和集成电路的设计研发、芯片加工、封装测试及产品销售的集成电路设计企业。无锡紫光微推出了TMA3N90H和TMU3N90H的VD MOSFET。分别采用TO-220F和TO-251的封装方式。
【产品】基于32位安全核处理器的安全芯片THM36系列,内置512KB Flash存储器
同芯微电子的THM36系列是高性能、低功耗、具有丰富的内部协处理器和对外接口的安全芯片,可以作为支付终端或者密码键盘使用,用于指纹应用、国家商用密码专用算法应用、网络银行应用、小商户/家庭/个人支付应用等对信息安全有较高要求的应用场合。
紫光同芯安全芯片THD89成为首款应用于EMV一芯双应用信用卡的国产芯片
近日,采用EMV一芯双应用技术的信用卡在中国首发,紫光安全芯片—THD89成为全球首款应用于该卡的国产芯片,以强劲实力向世界彰显了中国芯伟力,加快了中国金融科技与世界支付行业并行的芯步伐,再创紫光芯·中国芯跃居世界之巅的又一历史性时刻。
是否有13.56MHz、支持ISO15693协议的非接触卡读写芯片?
您好,推荐同芯微THM3070、符合ISO/IEC14443Type A/B和ISO/IEC15693标准、最高支持848kbit/s速率,参考链接:https://www.sekorm.com/news/69249979.html
电子商城
现货市场
服务
可自由定制铜排形状尺寸;检测精度:0.5%~1.0;电流测量范围 ±300-500A。低噪音 (0.27mVpp);低磁力残余误差:2mV;响应性能<4μSec;支持RoHS指令 、AEC-Q200。
最小起订量: 100个 提交需求>
提供稳态、瞬态、热传导、对流散热、热辐射、热接触、和液冷等热仿真分析,通过FloTHERM软件帮助工程师在产品设计初期创建虚拟模型,对多种系统设计方案进行评估,识别潜在散热风险。
实验室地址: 深圳 提交需求>
登录 | 立即注册
提交评论