SYD8821 ISO7816接口模块使用说明

2023-10-21 07:40

本文主要是介绍SYD8821 ISO7816接口模块使用说明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SYD8821是具有全球领先低功耗(RX 2.4mA @-94.5dBm灵敏度,TX 4.3mA @0dBm输出功率)的蓝牙低功耗SOC芯片,在极低电流下实现了优异的射频性能,搭配176kB SRAM,512kB flash,非常适合中高阶可穿戴、智能家居、物联网等低功耗应用。具体可咨询:http://www.sydtek.com/

SYD8821 ISO7816接口模块说明
SYD8821内部集成一组硬件ISO7816接口,用户可直接通过该接口与SIM卡、CPU卡、Smart卡等支持7816的卡片进行通信。本文章介绍通过8821从IC卡获取一组随机数和打印初始化相关的ATR(复位应答)信息。
一、电路连接
这个是8821的7816 IO口资源
实物图连接
这里写图片描述

硬件设计注意:
(1)、7816的data这个IO需要接外部上拉电阻4.7K

二、软件工程
(1)将7816驱动文件(atr_decoder.c、sc_reader.c、tpdu.c)加载到keil工程中
这里写图片描述
(2)相关代码
1、7816初始化
void sc_test_init(void)
{
pad_mux_write(25, 11); //VCCCTL
pad_mux_write(26, 11); //DET
pad_mux_write(27, 11); //CLK
pad_mux_write(28, 11); //IO
pad_mux_write(29, 11); //RST
sc_reader_enable();
}
/* Configure module settings /
void sc_reader_enable(void)
{
SYS_CTRL->CLK_SC_EN = 1;
/
Configure RESET & ACTIVATE timeout to maximum /
SC_CTRL->RESET_DURATION = 400;
SC_CTRL->ACTIVATE_DURATION = 30;
/
Configure FIFO threshold, FIFO size is 8, set half to inform*/
SC_CTRL->RX_FIFO_THRESHOLD = 0x4;
SC_CTRL->TX_FIFO_THRESHOLD = 0x4;
/* Retry configuration /
SC_CTRL->TX_RETRY_CNT = 3;
SC_CTRL->RX_RETRY_CNT = 3;
/
Enable RX FIFO Timeout */
SC_CTRL->RX_TIMEOUT_DETECT_EN = true;

sc_reader_spec_default();
/* Enable TX/RX /
SC_CTRL->TX_ENABLE = true;
SC_CTRL->RX_ENABLE = true;
}
/
Reset module configuration */
static void sc_reader_spec_default(void)
{
NVIC_DisableIRQ(ISO7816_IRQn);
atr_reset();

SC_CTRL->EXTRA_GUARD_TIME = 0;
sc_reader_set_FD(0x01);
SC_CTRL->CLK_STOP_EN = false;
card_clock_stoppable = false;/* Reset RX queue for ATR*/
queue_reset(&sc_queue);sc_reader_enable_retry();/* Enable SC Interrupt */
SC_CTRL->INTS_EN = RX_FIFO_INT | ATR_DONE |ATR_FAIL | CARD_DETECT |CARD_REMOVE | DEACTIVATE |TX_RETRY_OVER_LIMIT | RX_RETRY_OVER_LIMIT;/* Set clk to <= 5MHz */
{// Source by PCLKuint32_t clk = 64000000 / 2;clk /= 5000000;sc_reader_config_clock_div((uint16_t)clk);
}/* Clear Pending Interrupt */
SC_CTRL->INTS_STATE = SC_INT_ALL;
NVIC_EnableIRQ(ISO7816_IRQn);

}
2、main函数
int main()
{
__disable_irq();
ble_init();
sys_mcu_clock_set(MCU_CLOCK_64_MHZ);
// RC bumping
sys_mcu_rc_calibration();
#ifdef USER_32K_CLOCK_RCOSC
sys_32k_clock_set(SYSTEM_32K_CLOCK_LPO);
delay_ms(500);
LPOCalibration();//这是内部RC32k晶振的校准函数 经过该函数后定时器能够得到一个比较准确的值
#else
sys_32k_clock_set(SYSTEM_32K_CLOCK_XO);
#endif
gpio_init(); //gpio初始化
#ifdef SYD_RTT_DEBUG
DebugLogInit();
dbg_printf(“SYD RTT Init\r\n”);
#endif
#ifdef DEBUG
dbg_init();
PMU_CTRL->UART_EN = 1;
#else
PMU_CTRL->UART_EN = 0;
#endif
#if defined(DEBUG) || defined(SYD_RTT_DEBUG)
dbg_printf(“syd8821_2018-05-15 \r\n”);
dbg_printf(“SYD-TEK.Inc\r\n”);
#endif
__enable_irq();
gap_s_adv_start();
#if defined(DEBUG) || defined(SYD_RTT_DEBUG)
DBGPRINTF((“gap_s_adv_start\r\n”));
#endif
sc_test_init();
while(1)
{
sc_reader_task();
gpo_toggle(GPIO_25);//test
}
}
3、7816中断处理
1> 8821的7816中断标志
这里写图片描述
2> 中断函数
这里写图片描述
4、7816 任务处理(状态机)
这里写图片描述
三、获取IC卡随机数实验
1> 发送和接收回调实现
这里写图片描述

2> 在IC卡被激活后,即8821收到ATR并进行处理后,进行实验处理
这里写图片描述

3> 实验结果
串口打印
这里写图片描述

这篇关于SYD8821 ISO7816接口模块使用说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/252944

相关文章

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

使用Python绘制蛇年春节祝福艺术图

《使用Python绘制蛇年春节祝福艺术图》:本文主要介绍如何使用Python的Matplotlib库绘制一幅富有创意的“蛇年有福”艺术图,这幅图结合了数字,蛇形,花朵等装饰,需要的可以参考下... 目录1. 绘图的基本概念2. 准备工作3. 实现代码解析3.1 设置绘图画布3.2 绘制数字“2025”3.3

Jsoncpp的安装与使用方式

《Jsoncpp的安装与使用方式》JsonCpp是一个用于解析和生成JSON数据的C++库,它支持解析JSON文件或字符串到C++对象,以及将C++对象序列化回JSON格式,安装JsonCpp可以通过... 目录安装jsoncppJsoncpp的使用Value类构造函数检测保存的数据类型提取数据对json数

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

springboot整合 xxl-job及使用步骤

《springboot整合xxl-job及使用步骤》XXL-JOB是一个分布式任务调度平台,用于解决分布式系统中的任务调度和管理问题,文章详细介绍了XXL-JOB的架构,包括调度中心、执行器和Web... 目录一、xxl-job是什么二、使用步骤1. 下载并运行管理端代码2. 访问管理页面,确认是否启动成功

使用Nginx来共享文件的详细教程

《使用Nginx来共享文件的详细教程》有时我们想共享电脑上的某些文件,一个比较方便的做法是,开一个HTTP服务,指向文件所在的目录,这次我们用nginx来实现这个需求,本文将通过代码示例一步步教你使用... 在本教程中,我们将向您展示如何使用开源 Web 服务器 Nginx 设置文件共享服务器步骤 0 —

Java中switch-case结构的使用方法举例详解

《Java中switch-case结构的使用方法举例详解》:本文主要介绍Java中switch-case结构使用的相关资料,switch-case结构是Java中处理多个分支条件的一种有效方式,它... 目录前言一、switch-case结构的基本语法二、使用示例三、注意事项四、总结前言对于Java初学者

Golang使用minio替代文件系统的实战教程

《Golang使用minio替代文件系统的实战教程》本文讨论项目开发中直接文件系统的限制或不足,接着介绍Minio对象存储的优势,同时给出Golang的实际示例代码,包括初始化客户端、读取minio对... 目录文件系统 vs Minio文件系统不足:对象存储:miniogolang连接Minio配置Min

使用Python绘制可爱的招财猫

《使用Python绘制可爱的招财猫》招财猫,也被称为“幸运猫”,是一种象征财富和好运的吉祥物,经常出现在亚洲文化的商店、餐厅和家庭中,今天,我将带你用Python和matplotlib库从零开始绘制一... 目录1. 为什么选择用 python 绘制?2. 绘图的基本概念3. 实现代码解析3.1 设置绘图画