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

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

3天内不再提示

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

英创信息技术 来源:英创信息技术 作者:英创信息技术 2019-11-18 09:56 次阅读

在新的国家电网智能终端相关标准中,规定了通过专门的加密芯片来保证设备数据安全性的方法,而设备主控单元与加密芯片采用了广泛应用的ISO7816通讯协议。工控主板EM9160为了适应这一新的技术需求,对其内核进行了升级,使其多个串口都可支持ISO7816协议,为客户进行智能终端整机设计时,提供了灵活的选择。
对EM9160工控主板,可在其异步串口的基础上,通过简单的设置,就可把串口转为符合ISO7816协议的接口,实现与各种智能卡的通讯。EM9160共有6个异步串口,在Windows CE环境中为“COM2:”- “COM7:”,其中支持ISO7816的串口如下表所示:

串口

管脚配置

备注

COM3

TXD:半双工数据线
RXD:复位输出控制 低电平有效
GPIO14:作为SCK 输出频率与波特率等参数有关

COM5

TXD:半双工数据线
RXD:复位输出控制 低电平有效
GPIO15:作为SCK 输出频率与波特率等参数有关

COM6

TXD:半双工数据线
RXD:复位输出控制 低电平有效
GPIO15:作为SCK 输出频率与波特率等参数有关

COM7

TXD:半双工数据线
RXD:复位输出控制 低电平有效
GPIO15:作为SCK 输出频率与波特率等参数有关

EM9160的“COM5:”- “COM7:”串口信号均为TTL电平,建议客户首选其中之一作为与ISO7816智能芯片的通讯接口。如果这些串口已分配给设备的其他功能,也可以考虑使用COM3口,需要注意的是COM3口的缺省配置是RS232电平,客户需要在购买时特别通知我们把COM3设置为TTL电平才能与安全模块相连。当然GPIO15或GPIO14一旦作为了ISO7816的工作时钟输出,就不能再用作其他的用途了。

作为应用程序,在操作ISO7816模式的串口(以COM5为例)时,一般的流程如下:

1、按标准方法打开串口“COM5:”;

2、通过DeviceIoControl(…)函数使能ISO7816通讯模式;

3、设置包括波特率、奇偶校验在内的相关串口参数;

4、根据需要可通过DeviceIoControl(…)函数对对端芯片进行一次复位操作;

5、进行正常数据通讯;

6、通过DeviceIoControl(…)函数禁止ISO7816通讯模式;

7、按标准方法关闭串口“COM5:”。

在上述流程中,需要注意的是一定要先使能ISO7816模式,再设置波特率,才能保证得到正确的通讯参数。

为了实现从通常的异步串口到ISO7816的转换,EM9161的串口驱动增加了3个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)

#define IOCTL_SERIAL_RESET_ISO7816 \

CTL_CODE(FILE_DEVICE_SERIAL_PORT,42,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 = SCK /(FI / DI)

上式中的SCK = 串口波特率×(FI / DI),例如串口波特率为9600,则SCK时钟频率为3.5712MHz。在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;

DWORD pBuf[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 parameters

NULL, 0, // output parameters

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’);

}

对ISO7816对端芯片的复位,需要设置复位时间,以ms为单位:

DWORD dwMilliseconds = 1; // 可以设为0,实际复位时间为几十微秒

if (!DeviceIoControl ( m_hSer,

IOCTL_SERIAL_RESET_ISO7816,

&dwMilliseconds, sizeof(DWORD), // input parameters

NULL, 0, // output parameters

NULL, NULL ))

{

printf(‘IOCTL_SERIA, L_RESET_ISO7816 , failed!\r\n’);

}

&am, p;nb, sp; 设置了ISO模式后, ,应用程序仍然可以像操作普通串口那样,进行数据的读写,只是需要注意, 的, 是I, SO7816的半双工模式的,所以数据通讯的过程更像是RS485的过程。


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

    关注

    3

    文章

    3435

    浏览量

    87125
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6063

    浏览量

    34596
收藏 人收藏

    评论

    相关推荐

    主板中预装Modbus通讯协议

    modbus_Master.h,与原来的静态库保持不变,相应各个API函数的说明请参见网站技术天地文章《Wince下的Modbus主控通讯协议
    发表于 10-20 10:40

    嵌入式工控主板EM9160的PWM功能

    英创公司新近推出的嵌入式工控主板EM9160是一款专门面向工业智能设备的高性价比ARM9+WinCE平台,该工控主板不仅配置了常规的标准
    发表于 04-09 15:49 36次下载

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

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

    英创信息技术嵌入式工控主板EM9160的PWM功能使用方法

     英创公司新近推出的嵌入式工控主板EM9160是一款专门面向工业智能设备的高性价比ARM9+WinCE平台,该工控主板不仅配置了常规的标准
    的头像 发表于 11-01 09:27 1352次阅读

    英创信息技术嵌入式主板EM9160精简ISA总线硬件中断的使用方法

     英创公司新近推出的嵌入式主板EM9160是一款专门面向工业智能设备的高性价比ARM9+WinCE平台,该工控主板不仅配置了常规的标准通讯
    的头像 发表于 11-01 09:42 1312次阅读
    英创<b class='flag-5'>信息技术</b>嵌入式<b class='flag-5'>主板</b><b class='flag-5'>EM9160</b>精简ISA总线硬件中断的使用方法

    英创信息技术工控主板EM9160L的低功耗应用介绍

    。作为通常的通讯控制功能,EM9160L与EM9160的使用是完全一样的,客户针对EM9160开发的应用程序可不加修改的应用于EM9160L
    的头像 发表于 11-14 09:59 1335次阅读

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

    在当前的金融POS终端及相关领域,ISO7816通讯协议得到了广泛应用。英创的工控主板EM916
    的头像 发表于 11-17 11:50 1376次阅读
    英创<b class='flag-5'>信息技术</b><b class='flag-5'>工控</b><b class='flag-5'>主板</b><b class='flag-5'>EM</b>9161对<b class='flag-5'>ISO7816</b><b class='flag-5'>协议</b>的支持概述

    英创信息技术工控主板EM9160对红外通讯用途介绍

    英创公司的EM9160是一款高性价比的工控主板,预装正版WinCE5.0操作系统,具有极强的通讯能力。在电力电表的应用中,红外通讯是一种非常
    的头像 发表于 11-18 09:58 1037次阅读
    英创<b class='flag-5'>信息技术</b><b class='flag-5'>工控</b><b class='flag-5'>主板</b><b class='flag-5'>EM9160</b>对红外<b class='flag-5'>通讯</b>用途<b class='flag-5'>介绍</b>

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

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

    英创信息技术工业主板EM9160介绍

    ,如I2C总线时钟芯片,I2C总线存贮器等。之前已对I2C总线操作铁电存贮器有过说明,相关文章请参考《工控主板支持铁电存储器的简易方案》。英创公司的EM9160工业主板的高性价比与高可
    的头像 发表于 01-14 11:09 1029次阅读

    英创信息技术嵌入式Linux工控EM9160介绍

    I2C总线是一种2线制的主从通讯协议,主要运用于器件之间的数据通讯,在嵌入式系统中得到非常广泛的应用。作为一款高性价比的嵌入式Linux工控板,EM
    的头像 发表于 01-14 10:57 1092次阅读
    英创<b class='flag-5'>信息技术</b>嵌入式Linux<b class='flag-5'>工控</b>板<b class='flag-5'>EM9160</b><b class='flag-5'>介绍</b>

    英创信息技术工控主板EM9160介绍

    在基于工控主板EM9160的嵌入式应用中,经常需要与具有SPI接口的芯片或电路单元,进行数据通讯。通常情况下,我们建议采用基于GPIO的SPI通讯
    的头像 发表于 01-14 11:16 1114次阅读
    英创<b class='flag-5'>信息技术</b><b class='flag-5'>工控</b><b class='flag-5'>主板</b><b class='flag-5'>EM9160</b><b class='flag-5'>介绍</b>

    英创信息技术主板EM9160硬件介绍

    精简ISA总线硬件中断的使用方法》一文中作了介绍,其基本应用思路是工控主板,以下以EM9160为例,的硬件中断驱动程序IRQ1:在检测到IRQ信号的上升沿后,向上层应用程序发送事件hI
    的头像 发表于 01-14 11:27 878次阅读

    英创信息技术主板EM9160测频功能的使用介绍

    英创公司的主流产品EM9160是一款功能强大的嵌入式工控主板,其主要应用是作为工业智能设备的核心平台。EM9160预装了Window CE5.0(正版)或Linux-2.6操作系统,并
    的头像 发表于 01-15 14:15 1031次阅读

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

    英利EM9160EM9460系列产品,均以丰富的串口资源为特色,已大量地应用于工业环境中,特别是在电力系统中应用。最近公司即将推出一款新的产品EM9560工控
    的头像 发表于 01-15 14:49 2168次阅读
    英创<b class='flag-5'>信息技术</b><b class='flag-5'>EM</b>9X60利用串口实现<b class='flag-5'>ISO7816</b><b class='flag-5'>介绍</b>