物联传媒 旗下网站
登录 注册
RFID世界网 >  技术文章  >  其他  >  正文

基于W7100的以太网读卡器的设计与实现

作者:温冬伟,王平立,宋 斌
来源:电子设计工程
日期:2015-11-30 16:50:08
摘要:本文详细阐述了一种基于W7100的且支持以太网传输的读卡器方案,给出了硬件和软件设计的参考。该方案已经成功应用在某大型事业单位实验室管理系统中。经过实际运行结果表明该方案能够满足刷卡管理的可靠性及实时性要求。较之以前的方案,该方案成本更低、更容易开发。

  在实现微控制器设备联入以太网的方案中,常见的是采用微处理器连接以太网控制器。目前大部分的以太网控制器都是为PC机设计的,如DM9000、CS8900A等。采用这些芯片不仅使用复杂,而且成本很高,不适合作为读卡器联网的方案。

  W7100是WIZnet公司新型的以太网微处理器。该芯片包含一个8位微处理器内核和硬件的TCP/IP内核。其内部集成了10/100 Mb/s以太网PHY层,芯片引脚不经过物理层芯片直接连接网口插座。其TCP/IP硬核提供Socket套接字接口,因此只需要进行Socket编程就可以完成以太网的通信,就像访问外部存储器一样简单,而不涉及以太网底层的控制。

  1 W7100的基本特性

  W7100的CPU内核是一款高性能、速率优化的8位嵌入式微处理器。它使用片内存储器高速运行,与工业标准的8051微处理器二进制代码兼容。其TCP/IP内核是一个全硬件的、经过多年市场验证的TCP/IP协议栈,并集成了以太网的MAC和PHY层。芯片的主要特性如下:

  1)64 kB的程序闪存(Flash);

  2)64 kB的SRAM;

  3)256 B数据Flash存储器(可用于存储需要掉电保护的数据,如网络配置信息);

  4)内置10/100 Mb/s以太网物理层;

  5)硬件的TCP/IP协议栈支持TCP、UDP、IPv4、ICMP、ARP、IGMP和PPPoE;

  6)支持8个独立的Socket通信,内部128B的发送缓冲区可快速进行数据交换;

  7)支持ADSL连接。

  该芯片可以简单理解为由TCP/IP硬件协议栈、以太网MAC层、以太网PHY层和8051内核4部分相加而成。W7100具有的以上特性不仅满足以太网读卡器的功能需求,而且开发难度更小。

  2 读卡器功能和接口芯片选择

  以太网读卡器主要功能是读卡器接受使用者的刷卡,然后通过以太网将卡号等信息发送给服务器,服务器查询并修改数据库表格。要完成该目标,读卡器需要实现以下方面。

  1)刷卡功能这里的卡是常见的IC卡,因此需要实现射频发送与接收功能。方案选用NXP公司的MFRC500作为IC卡读写芯片。该芯片主要应用于13.56 MHz非接触式通信,其内部的发送器不需要增加有源电路就能直接驱动近操作距离的天线。

  2)以太网接口功能方案采用的W7100直接具有该接口,只需要在软件中执行命令即可。该芯片引出4根差分信号线连接到RJ45插座。方案选用内置变压器的接口整合型单口RJ45插座13F-60LDNL。该插座还具有数据传输指示灯和连接指示灯。

  3)USB接口功能 考虑到在以太网故障或者没有连接以太网的情况如何设置读卡器和取出刷卡信息,方案为此添加一个USB接口作为应急。同时由于W7100具有ISP(系统可编程)功能,即可以通过串行口下载程序,所以添加的USB口又作为下载程序的接口。方案选用南京沁恒电子有限公司的CH341T作为USB接口芯片。CH341T是一个USB总线的转接芯片,通过USB总线仿真异步串口。芯片内置了独立的收发缓冲区,支持单工、半双工和全双工异步串行通讯。在计算机端的Windows操作系统下,CH341T的驱动程序能够仿真标准串口,因此上位机程序就可以完全以串口方式与读卡器通信,同样也能实现程序下载。

  4)外部WatchDog在实际使用中发现该芯片2010年的一个版本有WatchDog不稳定的现象(将喂狗代码与写dataflash代码同时存在程序中时会有死机的现象),因此方案选用XCOR公司X5043(2.7 V)作为外部Watchdog。同时该芯片具有4 KB的SPI EEPROM作为数据存储器,可用来扩展内部dataflash存储掉电不能丢失的数据。

  5)唯一标识 在IP地址不固定的情况下,在网络上实现唯一标识每一台读卡器就很困难。方案为读卡器添加了一组8位的拨码开关,通过为每一台读卡器拨成不同的二进制编码实现标识。读卡器在启动的时候读取拨码开关的值来设定自己的序列号。拨码开关的8根引脚可接至W71004组通用引脚中的任意8根。需要注意的是W7100的所有通用引脚在作为输出时都要外部上拉。

  6)设定工作状态读卡器在正常使用前时需要运行在配置状态,此时读卡器接收上位机配置程序发来的配置参数配置其IP地址、MAC地址、子网掩码等。这些数据存放在内部dataflash或者外部watchdog中。方案采用将拨码开关拨为“1000 0000”作为配置状态,其他为正常工作状态。

  7)指示灯和蜂鸣器 刷一次卡需要蜂鸣器蜂鸣一次和指示灯闪烁一次,用来指示刷卡成功。如果操作未成功,蜂鸣器要长响报警。如果进入配置状态,指示灯要改变颜色。方案选用红蓝双色的LED灯作为指示灯,红色代表配置状态,蓝色代表工作状态。

  读卡器的结构如图1所示。

基于W7100的以太网读卡器的设计与实现

  3 硬件电路设计

  1)射频电路如图2所示,MFRC500需要连接8根数据线和4个功能引脚,另外通过3根信号线连接到天线线圈。数据线和CS引脚接到W7100的通用口,ALE、WR和RD引脚分别接到W7100对应功能引脚。如图3和图4所示,天线线圈的是由地线(GND)绕成的。为了加强信号,通常还需要添加一个屏蔽层。可调电容的具体值还要根据实际的感应距离调校而得。

基于W7100的以太网读卡器的设计与实现

基于W7100的以太网读卡器的设计与实现

  2)RJ45电路图5为RJ45的参考原理图,RJ45插座的4根两对差分信号线(TPTX+、TPTX-、TPRX+和TPRX-)分别连接到W7100的对应引脚(TXO-P、TXON、RXIP和RXIN)。在布线时需要特别注意的是:每对差分信号线之间尽量平行、靠近且长度相等,这样做是为了减少信号干扰。

基于W7100的以太网读卡器的设计与实现

  3)CH341T电路 CH341T通过串行口RXD、TXD与W7100相连。在9和10脚需要连接12 MHz的晶振。8脚(UD-)接USB插座的2脚,7脚(UD+)接USB插座的3脚。USB插座的1脚接5 V电源,4脚接地。

  4)X5043的连接 由于在W7100下载程序的时候不能受到X5043的影响,所以必须要在其与nRST引脚上添加一个跳线。在下载程序的时候要拔掉跳线帽,等下载完成之后再接上。要使X5043在上电之后开始工作必须在nCS引脚有一个从高电平到低电平的下拉。另外由于必须要与手动复位按钮共用nRST信号线,所以在复位键旁边不能并联大电容,这样会将复位信号过滤掉。

  5)电源设计 由于W7100芯片集成了以太网物理层,因此在布线时存在数字电源与模拟电源、数字地与模拟地的混合设计。总共包括1.8 V、1.8 D、1.8 A、3.3 V、3.3 D、3.3 A、数字地GND和模拟地GNDA,它们分别连接到W7100和其它器件的对应引脚。印刷板的铺地是数字地,但是模拟地也要尽量的宽。1.8 V、1.8 D和1.8 A之间用1μH电感相连接,同样3.3 V、3.3 D和3.3 A之间用1μH电感相连接,每种电源和地之间用一个10 μF的电容相连接。

  6)W7100引脚连接 W7100的XTLN0和XTLP0为内部PHY的晶体的输入输出。使用25 MHz平行共鸣晶体连接到这两个端口,以稳定内部振荡器。同样XTLN1和XTLP1引脚为W7100内核的晶体输入输出端,使用11.059 2 MHz平行共鸣晶体连接到这两个端口。

  TM3-0和PM2-0引脚悬空,采用默认模式。BOOTEN引脚为启动代码控制,低电平运行应用程序代码,高电平运行下载程序,所以必须使用跳线方式将其分别连接到地和高电平,在开机时通过跳线进入不同运行状态。

  F64EN引脚要外接4.7 k下拉电阻。RESETBG为PHY片外电阻,需要连接一个12.3 k(误差在1%以内)的电阻到地。RXLED和TXLED分别通过两个二极管连接到网口的nACT引脚(nACT需要上拉4.7 k电阻),用来指示数据传输。

  nINT3引脚和LINKLED引脚共同连接到网口的nLINK引脚,用来驱动连接指示灯。

  7)实物参考图 以上6点就是读卡器的几个重要部件的设计参考,在实际应用中可根据性能需要采用更加成熟的模块,这样会获得更好的效果。如在某工程中对刷卡可靠性要求很高,采用了周立功单片机公司的ZLG500AT模块作为刷卡模块。读卡器主板如图6所示。

基于W7100的以太网读卡器的设计与实现

  4 软件设计

  4.1 读卡器与服务器通信

  读卡器与服务器的通信主要是读卡器向服务器发送卡号信息和服务器向读卡器发送写卡信息。服务器与读卡器之间采用面向连接的TCP /IP协议作为通信的底层协议,读卡器作为客户端。服务器负责监听读卡器的连接请求。服务器端采用Socket套接字接口编写应用程序。

  读卡器端将通过TCP/IP协议接收的数据保存到事先开辟的内存接收缓冲区,发送时将将要发送的数据存储在数据发送缓冲区,然后执行发送。由于W7100已经有硬核的套接字,所以可以直接使用。读卡器端的端口状态转化如图7所示:

  刚复位时读卡器处于SOCK_CLOSED状态。如果此时服务器端在监听,则经过执行OPEN和CONNECT操作后进入SOCK_ESTABLISHED状态。这时候读卡器就可以与服务器通过SEND和RECV操作传输信息。读卡器主动执行DICON操作或者接收到服务器端的CLOSE命令后就再次进入SOCK_CLO-SED状态,等待下次连接。为了实现读卡器始终自动连接和断线重连,方案采用了一个循环的switch语句,关键示例代码如下:

  读卡器执行设备监控的流程就写在示例的数据处理代码部分。读卡器内部含有dataflash,用来保存IP地址、服务器地址和MAC地址等信息。在复位时读取配置信息、调用初始化函数初始化以太网接口。

  4.2 W7100读写IC卡

  W7100在复位之后,首先要初始化微处理器和MFRC500,然后依次循环执行配置命令、请求命令、防碰撞命令、选择命令、证实命令、装载密钥命令、读卡命令、卡号发送服务器、(等待接收反馈数据)、(写卡命令)、闪烁LED、蜂鸣器蜂鸣。这样循环执行就可以完成刷卡功能。各个命令和功能分别采用一个函数来实现,具体的操作可以参考芯片使用手册,在这里就不再赘述。下面把主函数主要结构列举如下:

基于W7100的以太网读卡器的设计与实现

  5 结束语

  本文详细阐述了一种基于W7100的且支持以太网传输的读卡器方案,给出了硬件和软件设计的参考。该方案已经成功应用在某大型事业单位实验室管理系统中。经过实际运行结果表明该方案能够满足刷卡管理的可靠性及实时性要求。较之以前的方案,该方案成本更低、更容易开发。