0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息技术工控主板EM9161对ISO7816协议的支持概述

英创信息技术 来源:英创信息技术 作者:英创信息技术 2019-11-17 11:50 次阅读

在当前的金融POS终端及相关领域,ISO7816通讯协议得到了广泛应用。英创的工控主板EM9161,可在其异步串口的基础上,通过简单的设置,就可把串口转为符合ISO7816协议的接口,实现与各种智能卡的通讯。本文主要介绍采用EM9161的COM2口,实现ISO7816通讯的基本方法。


上图表示EM9161作为ISO7816主控方与智能卡的连接示意图,其中原COM2口的数据发送管脚TXD2作为ISO7816的半双工数据信号DIO;原COM2口的RTS2n控制线作为ISO7816的时钟信号SCK。两个信号线的电平均为3.3V的TTL信号电平。
应用程序进行ISO7816通讯的基本流程为:
1、按标准方法打开串口“COM2:”,并设置相应串口参数
2、通过DeviceIoControl(…)函数使能ISO7816通讯模式,并设置相关参数;
3、设置波特率,注意在使能ISO7816模式后,必须重新设置波特率;
4、进行数据通讯,数据帧的奇偶校验位需要与通讯对端匹配;
5、通过DeviceIoControl(…)函数禁止ISO7816通讯模式;
6、按标准方法关闭串口“COM2:”。
为了实现从通常的异步串口到ISO7816的转换,EM9161的串口驱动增加了2个IOCTL功能如下:
#include
#define IOCTL_SERIAL_ENABLE_ISO7816\
CTL_CODE(FILE_DEVICE_SERIAL_PORT,40,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_SERIAL_DISABLE_ISO7816 \
CTL_CODE(FILE_DEVICE_SERIAL_PORT,41,METHOD_BUFFERED,FILE_ANY_ACCESS)

使能ISO7816的DeviceIoControl调用,需要同时设置相应的参数。这些参数包括ISO7816的协议类型,帧数据的应答规范等,定义相应的参数如下:
#define AT91C_US_USMODE_ISO7816_0 0x4// ISO7816 protocol: T = 0
#define AT91C_US_USMODE_ISO7816_1 0x6 // ISO7816 protocol: T = 1
#define AT91C_US_INACK (0x1 << 20)    // Inhibit Non Acknowledge
#define AT91C_US_DSNACK (0x1 << 21)    // Disable Successive NACK

此外ISO的波特率按如下公式计算:
BR = (DI / FI)× SCK
上式中的SCK = 串口波特率×FI / DI,例如串口波特率为9600,FI / DI = 372,则SCK时钟频率为3.57MHz。在EM9161中,对DI和FI的设置,是通过设置(FI/DI)这个比值来实现的,其中有效的值如下表所示:

DI = 1

DI = 2

DI = 4

DI = 8

DI = 16

DI = 32

DI = 12

DI = 20

FI = 372

372

186

93

47

23

12

31

19

FI = 558

558

279

140

70

35

17

47

28

FI = 774

774

372

186

93

47

23

62

37

FI = 1116

1116

558

279

140

70

35

93

56

FI = 1488

1488

744

372

186

93

47

124

74

FI = 1806

1806

930

465

233

116

58

155

93

FI = 512

512

256

128

64

32

16

43

26

FI = 768

768

384

192

96

48

24

64

38

FI = 1024

1024

512

256

128

64

32

85

51

FI = 1536

1536

768

384

192

96

48

128

77

FI = 2048

2048

1024

512

256

128

64

171

102

选择蓝色区域的值,可得到对应的黄色区域的FI和绿色区域的DI,由此可计算相应的波特率。
在具体的调用中,参数的传递是通过两个DWORD实现的,代码如下:
DWORD dwMode, dwFI_DI_Ratio;
DWORDpBuf[2];

dwMode = AT91C_US_USMODE_ISO7816_0;
dwFI_DI_Ratio = 372;
pBuf[0] = dwMode;
pBuf[1] = dwFI_DI_Ratio;
if (!DeviceIoControl ( m_hSer, // 串口handle
IOCTL_SERIAL_ENABLE_ISO7816, // 命令码
pBuf, sizeof(pBuf), // input buffer
NULL, 0, // output buffer
NULL, NULL ))
{
printf('IOCTL_SERIAL_ENABLE_ISO7816 failed!\r\n');
}

关闭ISO7816通讯模式比较简单,没有任何参数:
if (!DeviceIoControl ( m_hSer, // 串口handle
IOCTL_SERIAL_DISABLE_ISO7816, // 命令码
NULL, 0,
NULL, 0,
NULL, NULL ))
{
printf('IOCTL_SERIAL_DISABLE_ISO7816 failed!\r\n');
}


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6064

    浏览量

    34614
收藏 人收藏

    评论

    相关推荐

    工控主板EM9161实现音频输出的方法

    本帖最后由 luna 于 2011-3-3 14:29 编辑 随着嵌入式技术的广泛应用,在工业控制领域有越来越多的应用需要高品质的音频输出,而EM9161作为一款高性价比的工控主板
    发表于 03-03 01:24

    支持Linux高级客户自行移植内核

    上市)  该项服务具体说明和实施流程参见:支持客户进行Linux移植  需要该服务的客户需与签订技术保密协议,并承诺严格履行
    发表于 01-18 13:52

    工控主板产品选型指南

      成都信息技术有限公司是一家专注于嵌入式工控主板研发、销售与服务的高科技公司,在嵌入式领域已有超16年的从业经历。
    发表于 02-28 11:28

    工控主板EM9161实现音频输出的方法

    随着嵌入式技术的广泛应用,在工业控制领域有越来越多的应用需要高品质的音频输出,而EM9161作为一款高性价比的工控主板产品,在推出不到三个月的时间里,已得到广大客户
    发表于 08-31 17:02 20次下载

    ISO7816 (part 1-3)异步

    ISO7816 (part 1-3) asynchronous smart card information - Contents -I ) Introduction of the ISO7816 standardII ) Summary
    发表于 03-11 13:14 3576次阅读
    <b class='flag-5'>ISO7816</b> (part 1-3)异步

    基于EM9161工控主板的彩色智能监控终端方案

    英创公司的 EM9161 是一款预装WinCE 操作系统的工控主板产品,它不仅支持标准TFT彩色显示加触摸屏的人机界面,而且还拥有丰富的通讯接口、数字IO(GPIO)等资源。客户根据自
    发表于 06-09 15:59 41次下载
    基于<b class='flag-5'>EM9161</b><b class='flag-5'>工控</b><b class='flag-5'>主板</b>的彩色智能监控终端方案

    英创嵌入式Linux工控主板如何实现ISO7816协议

    ISO7816在基于英创的工控主板上应用时,可将ISO7816智能卡简单的理解成一个串口设备。
    的头像 发表于 09-27 16:07 2971次阅读
    英创嵌入式Linux<b class='flag-5'>工控</b><b class='flag-5'>主板</b>如何实现<b class='flag-5'>ISO7816</b><b class='flag-5'>协议</b>

    基于ARM9工控主板EM9161的GPRS彩色显示终端方案

    本文介绍一个以EM9161为核心构成的低成本GPRS彩色显示终端方案。
    的头像 发表于 10-08 11:33 1870次阅读
    基于ARM9<b class='flag-5'>工控</b><b class='flag-5'>主板</b><b class='flag-5'>EM9161</b>的GPRS彩色显示终端方案

    EM9161如何升级EM9171

    EM9161EM9161G是使用WinCE 5.0操作系统的嵌入式工控板,在市场上,具有良好的性能表现,得到客户的认可。
    的头像 发表于 10-12 11:39 1249次阅读

    英创信息技术工控主板EM9161实现音频输出的过程

    随着嵌入式技术的广泛应用,在工业控制领域有越来越多的应用需要高品质的音频输出,而EM9161作为一款高性价比的工控主板产品,在推出不到三个月的时间里,已得到广大客户的广泛认可,其中不乏
    的头像 发表于 11-05 10:09 1328次阅读

    英创信息技术EM9161评估开发套件与LCD的连接方法概述

    使用Microsoft提供的著名免费软件开发工具eVC(+SP4)或微软的其他开发工具,在EM9161上开发应用程序。EM9161工控主板带有一个标准TTL电平的彩色显示数字接口,接口
    的头像 发表于 11-18 09:50 1653次阅读
    英创<b class='flag-5'>信息技术</b><b class='flag-5'>EM9161</b>评估开发套件与LCD的连接方法<b class='flag-5'>概述</b>

    英创信息技术ISO7816通讯协议工控主板EM9160介绍

    在新的国家电网智能终端相关标准中,规定了通过专门的加密芯片来保证设备数据安全性的方法,而设备主控单元与加密芯片采用了广泛应用的ISO7816通讯协议
    的头像 发表于 11-18 09:56 1859次阅读

    英创信息技术嵌入式Linux主板EM9160支持ISO7816通讯协议介绍

    新的技术需求,我们对嵌入式Linux主板EM9160的串口驱动进行了升级,使其多个串口都可支持ISO7816
    的头像 发表于 11-18 10:09 1909次阅读
    英创<b class='flag-5'>信息技术</b>嵌入式Linux<b class='flag-5'>主板</b><b class='flag-5'>EM</b>9160<b class='flag-5'>支持</b><b class='flag-5'>ISO7816</b>通讯<b class='flag-5'>协议</b>介绍

    英创信息技术EM9161开机启动画面设置方法介绍

    EM9161支持320*240、480*272、640*480、800*480、800*600等分辨率的TFT LCD屏。而在这之前的EM9161更改启动画面,需要更新全部镜像文件。为了更方便客户
    的头像 发表于 01-15 13:56 1117次阅读
    英创<b class='flag-5'>信息技术</b><b class='flag-5'>EM9161</b>开机启动画面设置方法介绍

    英创信息技术EM9X60利用串口实现ISO7816介绍

    为基础,并针对客户应用的需求,增加了更多通用数字IO,该产品继续保持了Linux操作系统作为客户应用程序的软件平台。这三款主板均具备6个串口,其中的4个串口可支持ISO7816,用户可以通过简单的设置,即可将异步串口转换为符合
    的头像 发表于 01-15 14:49 2193次阅读
    英创<b class='flag-5'>信息技术</b><b class='flag-5'>EM</b>9X60利用串口实现<b class='flag-5'>ISO7816</b>介绍