示例代码
ISO7816
ISO7816模块实现ISO 7816标准,本示例实现ISO7816模块读取SIM卡信息,工程路径:SDK_Folder\projects\peripheral\iso7816\app_iso7816。
示例工程流程图
初始化参数
app_iso7816_params_t params = {
.use_mode = APP_ISO7816_TYPE_POLLING,
.pin_cfg = DEFAULT_IO_CONFIG,
.init = {
.wait_time = 0x6B,
.guard_time = 0x0A,
.detect_coding = ENABLE,
},
};
- use_mode:传输模式配置,选择APP_ISO7816_TYPE_POLLING,轮询模式
- pin_cfg:引脚配置,包含时钟引脚CLK、复位引脚Reset、数据输入输出引脚I/O、UICC Presence引脚
- init:通信参数配置,包括:
- init .wait_time:等待回应时间,0x6B ETU
- init .guard_time:两个连续字符之间的间隔时间,0x0A ETU
- init .detect_coding:指定在ATR接收期间自动检测编码约定
重要函数
- 初始化函数
app_iso7816_init(¶ms, app_iso7816_evt_handler)
- 获取ISO7816句柄
g_sim_card_handle = *app_iso7816_get_handle()
- Reset ISO7816模块,获取ATR信息
sim_card_get_ATR(&g_sim_card_handle)
- 协议类型选择(对ATR的响应)程序和配置通信速度
sim_card_PTS(&g_sim_card_handle)
- 选择Master的根目录
sim_card_select_MF(&g_sim_card_handle)
- 读取ICCID信息
sim_card_read_ICCID(&g_sim_card_handle)
- 读取IMSI信息
sim_card_read_IMSI(&g_sim_card_handle)
测试验证
外接SIM卡到开发板,连接开发板到PC端,打开串口助手,连接串口,查看串口日志,串口将打印ICCID和IMSI信息。每个SIM卡ICCID和IMSI信息存在差异,需要根据实际的SIM对比。