基于Cortex-M3的嵌入式以太网门禁系统设计
2014-09-06何晋张一斌
何晋, 张一斌
(长沙理工大学 电气与信息工程学院,长沙 410004)
基于Cortex-M3的嵌入式以太网门禁系统设计
何晋, 张一斌
(长沙理工大学 电气与信息工程学院,长沙 410004)
阐述了采用Cortex-M3内核的STM32为主控芯片、射频芯片PN532、以太网控制器ENC28J60的硬件电路和软件设计框架,同时对以太网协议LwIP进行了详细的分析。本门禁系统传输距离远,超低功耗,性能优异且稳定,完全适用于校园以及公司的门禁系统。
门禁;Cortex-M3;LwIP;PN532;ENC28J60
引 言
当前,有很多的企业是采用佩戴工作证来完成门禁管理,而且还是采用传统的人工方式完成,不仅容易被人混入,且没有记录,存在各种人为的失误。同时,市场上门禁系统存在传输距离受限制、性能不佳等问题。
随着嵌入式技术日新月异的发展,以及以太网技术的普及,使得基于以太网的嵌入式产品越来越多,发展也越来越快。本文研究的就是采用以太网传输数据和射频芯片识别智能卡相结合的门禁系统,相对于传统的门禁系统,以太网解决了传输距离上的问题。其次,采用了基于80C51内核的射频芯片PN532,使得性能更加稳定。其工作的基本原理是先将智能卡放在门禁系统上,系统读取数据并传送给主芯片STM32进行处理,主芯片处理后再通过以太网协议LwIP将数据从ENC28J60传输给服务器。
图1 门禁系统组成
1 门禁系统硬件组成
门禁系统主要由意法半导体公司的主控芯片STM32、Microchip公司的以太网控制器ENC28J60和NXP公司的射频芯片PN532组成。
门禁系统结构组成如图1所示。主芯片STM32通过以太网协议栈LwIP将数据传输到ENC28J60,然后可以通过网线与服务器直接连接进行通信,也可以通过路由器再连接到服务器。在非接触式卡通信方面,STM32通过频率为1 MHz的SPI接口与PN532相连。
1.1 STM32外围电路设计
本系统采用意法半导体公司以Cortex-M3为内核的32位微处理器STM32F103为主控芯片,其主频为72 MHz,内部集成存储空间为256K的Flash和64K的SRAM,还包含I2C、SPI、I2S、USART、CAN、ADC、看门狗等。性价比在同类产品中十分突出。硬件连接如图2所示。
在调试时我们采用SWD取代JTAG,因为SWD不仅引脚更少,而且在高速模式下更加可靠。
图2 主控芯片STM32外围电路结构
1.2 射频芯片PN532硬件电路设计
PN532是NXP公司推出的一个高度集成的非接触式读写芯片,它包含80C51微控制器内核,集成了13.56 MHz下的各种主动/被动式非接触通信方法和协议。支持ISO14443A/14443B协议。工作距离超过75 mm。接收来自天线的信号并对该数据按照ISO14443规定的帧格式处理数据。
图3 PN532外围电路结构
PN532支持三种通信方式:SPI、I2C、HUS。由于我们采用SPI方式与主控芯片STM32进行通信,所以I0和I1分别设置为0和1。
PN532外围电路结构如图3所示。
1.3 以太网控制器ENC28J60硬件设计
主控芯片ENC28J60是带有行业标准串行外设接口(Serial Peripheral Interface, SPI)的独立以太网控制器。它可作为任何配备有SPI 的控制器的以太网接口。ENC28J60 符合IEEE 802.3 的全部规范,采用了一系列包过滤机制以对传入数据包进行限制。它还提供了一个内部 DMA 模块,以实现快速数据吞吐和硬件支持的IP 校验和计算。 与主控制器的通信通过两个中断引脚和SPI 实现,数据传输速率高达 10 Mb/s。两个专用的引脚用于连接LED,进行网络活动状态指示。
应当注意的是,当从ENC28J60读取多个数据时,即使不需要主控芯片STM32输出的数据,每读取一个数据前也要向SPI发送缓冲器写一个数据用来启动SPI的接口时钟。
ENC28J60典型应用电路如图4所示。
图4 ENC28J60典型应用电路
2 系统软件设计
2.1 以太网协议LwIP
LwIP是瑞士计算机科学院开发的小型开源的TCP/IP协议栈。由于它只需要十几K的RAM和40K左右的ROM就可以运行,所以很适合在硬件资源并不充裕的嵌入式系统中使用。
LwIP属于比较松散的通信机制,通过共享内存的方式实现应用层与底层协议之间的通信。它提供了三种API:①RAM API,②LwIP API,③BSD API。
其中的RAM API其缺点就是代码不易于理解,开发难度大,其优点是相对于其他两种方式占用的资源少,效率更加高,更适合于对于资源相对少的嵌入式使用,所以我们采用RAM API方式进行编写。
在TCP/IP传输层中有TCP和UDP两种协议,TCP提供IP环境下数据的可靠传输,UDP提供的是不可靠传输,由于门禁系统中必须要求传输数据的正确,所以采用TCP。图5是LwIP下的TCP处理流程框图。
图5 TCP处理框图
RAM API把协议栈和应用程序放在一个进程里,该函数基于函数回调技术,下面是LwIP的部分关键配置和代码。
(1) LwIP配置
在LwIP的配置文件lwipopts.h中修改如下地方。
是否使用操作系统,我们不用,所以填写为1:
#define NO_SYS 1
配置heap的大小:
#define MEM_SIZE
配置pool的大小
#define PBUF_POOL_SIZE
#define PBUF_POOL_BUFSIZE
以上三个配置占据了LwIP协议栈大部分的内存,需要根据自己的需要修改成合适的值。
(2) LwIP代码
① 分别设置IP地址,子网掩码和网关:
IP4_ADDR(&ipaddr, 192, 168, 2, 28);
IP4_ADDR(&netmask, 255, 255, 255, 0);
IP4_ADDR(&gw, 192, 168, 2, 254);
② 初始化底层函数,也就是配置MAC地址,初始化ENC28J60,配置最大输出单元等:
low_level_init( netif );
③ 连接远程主机,当连接建立,就会调用第4个参数Conn_Back:
tcp_connect(TCP_pcb,&ipaddr,1026,Conn_back);
④ 当有新的数据接收到时调用的回调函数:
tcp_recv(TCP_pcb, tcp_recv_callback);
⑤ 服务器成功接收到数据后调用的回调函数:
tcp_sent(TCP_pcb, tcp_sent_callback);
⑥ 处理错误的回调函数:
tcp_err(pcb, CMD_conn_err);
⑦ 是否接收到数据:
ethernetif_input(&enc28j60);
通信一旦结束或者出现异常状况后,一定要使用pbuf_free()函数释放pbuf,避免内存的浪费。还有一点要注意的是,系统在正常运行的过程中,定时器函数tcp_fasttmr()和tcp_slowtmr()函数必须以固定的时间间隔被规律地调用。
2.2 门禁系统软件架构与设计
门禁系统的主要流程如图6所示,每次重新启动后,首先初始化相关寄存器,初始化各个模块,确定已经连接服务器,然后进入程序主循环。
图6 门禁系统主程序流程图
首先监测是否需要调用LwIP内部的快速定时器和慢速定时器。然后监测服务器是否有断开,如果断开则重新连接服务器,没有断开的话则检测是否有智能卡,有的话接收卡中信息进行处理然后发送给服务器。
结 语
[1] 广州致远电子有限公司.LwIP的RAM API接口及编程指南,2008.
[2] 朱升林.LwIP协议深度剖析与实战演练[M].北京:中国水利水电出版社,2012.
[3] Adam Dunkels.Design and Implementation of the LwIP [M].Stockholm: Swedish Institute of Computer Science, 2001.
[4] ST Microelectronics.STM32F103xE Data Sheet, 2010.
[5] Vincent Onde. Cortex-M3 based STM32 MCU tackles advanced motor control techniques J].Electronic Engineering&Product World, 2010, 17(11).
[6] 宋岩.ARM Cortex-M3权威指南[M].北京:北京航空航天大学出版社,2009.
[7] 王永虹,徐炜,郝立平.STM32系列ARM cortex-M3微控制器原理与实践[M].北京:北京航空航天大学出版社,2008.
[8] 李宁.基于MDK的STM32处理器开发应用[M].北京:北京航空航天大学出版社,2008.
[9] Microchip.ENC28J60 Stand-alone Ethernet Controller with SPI Interface Datasheet, 2006.
[10] NXP.PN532/C1 Product short data sheet,2005.
[11] Philips Co., Ltd.PN532 User Manual UM0502-03, 2006.
[12] 李翔.智能卡研发技术与功能实现[M].北京:人民邮电出版社,2012.
表2 运动到指定点测试
参考文献
[1] 杨星.论单片机发展历程及技术进步[J].知识经济,2011,23(1):97.
[2] 詹跃东.电机及拖动基础[M].重庆:重庆大学出版社,2002.
[3] 杨莉,魏萍.基于单片机控制的步进电机转速控制系统[J].南昌工程学院学报,2005(6).
[4] 丁伟雄,杨定安,宋晓光.步进电机的控制原理及其单片机控制实现[J].煤矿机械,2005,26(6):129-131.
[5] 张劲.利用AT89S52单片机控制步进电机[J].福建电脑,2008,24(12):175-185.
[6] Valdes,MDMoure,MJ,et al.Implementation of a Frequency Measurement Circuitfor High-Accuracy QCMSensors[D]. Vigo:Electron Technol Univ of Vigo,2004:29-36.
(责任编辑:杨迪娜 收稿日期:2014-11-20)
Ethernet Entrance Guard System Based on Cortex-M3
He Jin, Zhang Yibin
(College of Electrical and Information Engineering, Changsha University of Science and Technology, Changsha 410004, China)
This paper expounds the hardware circuit and software design of the framework that contains main control chip using STM32 with Cortex-M3 kernel, RF chip PN532, Ethernet controller ENC28J60, and the Ethernet protocol LwIP has carried on the detailed analysis. The entrance guard system has the merit of long transmission distance and low power consumption, excellent and stable. It is fully applicable to campus and entrance guard system for companies.
entrance guard;Cortex-M3; LwIP;PN532;ENC28J60
TP368.2
A
珍
2013-12-28)