何晉, 張一斌
(長(zhǎng)沙理工大學(xué) 電氣與信息工程學(xué)院,長(zhǎng)沙 410004)
?
基于Cortex-M3的嵌入式以太網(wǎng)門禁系統(tǒng)設(shè)計(jì)
何晉, 張一斌
(長(zhǎng)沙理工大學(xué) 電氣與信息工程學(xué)院,長(zhǎng)沙 410004)
闡述了采用Cortex-M3內(nèi)核的STM32為主控芯片、射頻芯片PN532、以太網(wǎng)控制器ENC28J60的硬件電路和軟件設(shè)計(jì)框架,同時(shí)對(duì)以太網(wǎng)協(xié)議LwIP進(jìn)行了詳細(xì)的分析。本門禁系統(tǒng)傳輸距離遠(yuǎn),超低功耗,性能優(yōu)異且穩(wěn)定,完全適用于校園以及公司的門禁系統(tǒng)。
門禁;Cortex-M3;LwIP;PN532;ENC28J60
當(dāng)前,有很多的企業(yè)是采用佩戴工作證來完成門禁管理,而且還是采用傳統(tǒng)的人工方式完成,不僅容易被人混入,且沒有記錄,存在各種人為的失誤。同時(shí),市場(chǎng)上門禁系統(tǒng)存在傳輸距離受限制、性能不佳等問題。
隨著嵌入式技術(shù)日新月異的發(fā)展,以及以太網(wǎng)技術(shù)的普及,使得基于以太網(wǎng)的嵌入式產(chǎn)品越來越多,發(fā)展也越來越快。本文研究的就是采用以太網(wǎng)傳輸數(shù)據(jù)和射頻芯片識(shí)別智能卡相結(jié)合的門禁系統(tǒng),相對(duì)于傳統(tǒng)的門禁系統(tǒng),以太網(wǎng)解決了傳輸距離上的問題。其次,采用了基于80C51內(nèi)核的射頻芯片PN532,使得性能更加穩(wěn)定。其工作的基本原理是先將智能卡放在門禁系統(tǒng)上,系統(tǒng)讀取數(shù)據(jù)并傳送給主芯片STM32進(jìn)行處理,主芯片處理后再通過以太網(wǎng)協(xié)議LwIP將數(shù)據(jù)從ENC28J60傳輸給服務(wù)器。
圖1 門禁系統(tǒng)組成
門禁系統(tǒng)主要由意法半導(dǎo)體公司的主控芯片STM32、Microchip公司的以太網(wǎng)控制器ENC28J60和NXP公司的射頻芯片PN532組成。
門禁系統(tǒng)結(jié)構(gòu)組成如圖1所示。主芯片STM32通過以太網(wǎng)協(xié)議棧LwIP將數(shù)據(jù)傳輸?shù)紼NC28J60,然后可以通過網(wǎng)線與服務(wù)器直接連接進(jìn)行通信,也可以通過路由器再連接到服務(wù)器。在非接觸式卡通信方面,STM32通過頻率為1 MHz的SPI接口與PN532相連。
1.1 STM32外圍電路設(shè)計(jì)
本系統(tǒng)采用意法半導(dǎo)體公司以Cortex-M3為內(nèi)核的32位微處理器STM32F103為主控芯片,其主頻為72 MHz,內(nèi)部集成存儲(chǔ)空間為256K的Flash和64K的SRAM,還包含I2C、SPI、I2S、USART、CAN、ADC、看門狗等。性價(jià)比在同類產(chǎn)品中十分突出。硬件連接如圖2所示。
在調(diào)試時(shí)我們采用SWD取代JTAG,因?yàn)镾WD不僅引腳更少,而且在高速模式下更加可靠。
圖2 主控芯片STM32外圍電路結(jié)構(gòu)
1.2 射頻芯片PN532硬件電路設(shè)計(jì)
PN532是NXP公司推出的一個(gè)高度集成的非接觸式讀寫芯片,它包含80C51微控制器內(nèi)核,集成了13.56 MHz下的各種主動(dòng)/被動(dòng)式非接觸通信方法和協(xié)議。支持ISO14443A/14443B協(xié)議。工作距離超過75 mm。接收來自天線的信號(hào)并對(duì)該數(shù)據(jù)按照ISO14443規(guī)定的幀格式處理數(shù)據(jù)。
圖3 PN532外圍電路結(jié)構(gòu)
PN532支持三種通信方式:SPI、I2C、HUS。由于我們采用SPI方式與主控芯片STM32進(jìn)行通信,所以I0和I1分別設(shè)置為0和1。
PN532外圍電路結(jié)構(gòu)如圖3所示。
1.3 以太網(wǎng)控制器ENC28J60硬件設(shè)計(jì)
主控芯片ENC28J60是帶有行業(yè)標(biāo)準(zhǔn)串行外設(shè)接口(Serial Peripheral Interface, SPI)的獨(dú)立以太網(wǎng)控制器。它可作為任何配備有SPI 的控制器的以太網(wǎng)接口。ENC28J60 符合IEEE 802.3 的全部規(guī)范,采用了一系列包過濾機(jī)制以對(duì)傳入數(shù)據(jù)包進(jìn)行限制。它還提供了一個(gè)內(nèi)部 DMA 模塊,以實(shí)現(xiàn)快速數(shù)據(jù)吞吐和硬件支持的IP 校驗(yàn)和計(jì)算。 與主控制器的通信通過兩個(gè)中斷引腳和SPI 實(shí)現(xiàn),數(shù)據(jù)傳輸速率高達(dá) 10 Mb/s。兩個(gè)專用的引腳用于連接LED,進(jìn)行網(wǎng)絡(luò)活動(dòng)狀態(tài)指示。
應(yīng)當(dāng)注意的是,當(dāng)從ENC28J60讀取多個(gè)數(shù)據(jù)時(shí),即使不需要主控芯片STM32輸出的數(shù)據(jù),每讀取一個(gè)數(shù)據(jù)前也要向SPI發(fā)送緩沖器寫一個(gè)數(shù)據(jù)用來啟動(dòng)SPI的接口時(shí)鐘。
ENC28J60典型應(yīng)用電路如圖4所示。
圖4 ENC28J60典型應(yīng)用電路
2.1 以太網(wǎng)協(xié)議LwIP
LwIP是瑞士計(jì)算機(jī)科學(xué)院開發(fā)的小型開源的TCP/IP協(xié)議棧。由于它只需要十幾K的RAM和40K左右的ROM就可以運(yùn)行,所以很適合在硬件資源并不充裕的嵌入式系統(tǒng)中使用。
LwIP屬于比較松散的通信機(jī)制,通過共享內(nèi)存的方式實(shí)現(xiàn)應(yīng)用層與底層協(xié)議之間的通信。它提供了三種API:①RAM API,②LwIP API,③BSD API。
其中的RAM API其缺點(diǎn)就是代碼不易于理解,開發(fā)難度大,其優(yōu)點(diǎn)是相對(duì)于其他兩種方式占用的資源少,效率更加高,更適合于對(duì)于資源相對(duì)少的嵌入式使用,所以我們采用RAM API方式進(jìn)行編寫。
在TCP/IP傳輸層中有TCP和UDP兩種協(xié)議,TCP提供IP環(huán)境下數(shù)據(jù)的可靠傳輸,UDP提供的是不可靠傳輸,由于門禁系統(tǒng)中必須要求傳輸數(shù)據(jù)的正確,所以采用TCP。圖5是LwIP下的TCP處理流程框圖。
圖5 TCP處理框圖
RAM API把協(xié)議棧和應(yīng)用程序放在一個(gè)進(jìn)程里,該函數(shù)基于函數(shù)回調(diào)技術(shù),下面是LwIP的部分關(guān)鍵配置和代碼。
(1) LwIP配置
在LwIP的配置文件lwipopts.h中修改如下地方。
是否使用操作系統(tǒng),我們不用,所以填寫為1:
#define NO_SYS 1
配置heap的大?。?/p>
#define MEM_SIZE
配置pool的大小
#define PBUF_POOL_SIZE
#define PBUF_POOL_BUFSIZE
以上三個(gè)配置占據(jù)了LwIP協(xié)議棧大部分的內(nèi)存,需要根據(jù)自己的需要修改成合適的值。
(2) LwIP代碼
① 分別設(shè)置IP地址,子網(wǎng)掩碼和網(wǎng)關(guān):
IP4_ADDR(&ipaddr, 192, 168, 2, 28);
IP4_ADDR(&netmask, 255, 255, 255, 0);
IP4_ADDR(&gw, 192, 168, 2, 254);
② 初始化底層函數(shù),也就是配置MAC地址,初始化ENC28J60,配置最大輸出單元等:
low_level_init( netif );
③ 連接遠(yuǎn)程主機(jī),當(dāng)連接建立,就會(huì)調(diào)用第4個(gè)參數(shù)Conn_Back:
tcp_connect(TCP_pcb,&ipaddr,1026,Conn_back);
④ 當(dāng)有新的數(shù)據(jù)接收到時(shí)調(diào)用的回調(diào)函數(shù):
tcp_recv(TCP_pcb, tcp_recv_callback);
⑤ 服務(wù)器成功接收到數(shù)據(jù)后調(diào)用的回調(diào)函數(shù):
tcp_sent(TCP_pcb, tcp_sent_callback);
⑥ 處理錯(cuò)誤的回調(diào)函數(shù):
tcp_err(pcb, CMD_conn_err);
⑦ 是否接收到數(shù)據(jù):
ethernetif_input(&enc28j60);
通信一旦結(jié)束或者出現(xiàn)異常狀況后,一定要使用pbuf_free()函數(shù)釋放pbuf,避免內(nèi)存的浪費(fèi)。還有一點(diǎn)要注意的是,系統(tǒng)在正常運(yùn)行的過程中,定時(shí)器函數(shù)tcp_fasttmr()和tcp_slowtmr()函數(shù)必須以固定的時(shí)間間隔被規(guī)律地調(diào)用。
2.2 門禁系統(tǒng)軟件架構(gòu)與設(shè)計(jì)
門禁系統(tǒng)的主要流程如圖6所示,每次重新啟動(dòng)后,首先初始化相關(guān)寄存器,初始化各個(gè)模塊,確定已經(jīng)連接服務(wù)器,然后進(jìn)入程序主循環(huán)。
圖6 門禁系統(tǒng)主程序流程圖
首先監(jiān)測(cè)是否需要調(diào)用LwIP內(nèi)部的快速定時(shí)器和慢速定時(shí)器。然后監(jiān)測(cè)服務(wù)器是否有斷開,如果斷開則重新連接服務(wù)器,沒有斷開的話則檢測(cè)是否有智能卡,有的話接收卡中信息進(jìn)行處理然后發(fā)送給服務(wù)器。
[1] 廣州致遠(yuǎn)電子有限公司.LwIP的RAM API接口及編程指南,2008.
[2] 朱升林.LwIP協(xié)議深度剖析與實(shí)戰(zhàn)演練[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權(quán)威指南[M].北京:北京航空航天大學(xué)出版社,2009.
[7] 王永虹,徐煒,郝立平.STM32系列ARM cortex-M3微控制器原理與實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2008.
[8] 李寧.基于MDK的STM32處理器開發(fā)應(yīng)用[M].北京:北京航空航天大學(xué)出版社,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] 李翔.智能卡研發(fā)技術(shù)與功能實(shí)現(xiàn)[M].北京:人民郵電出版社,2012.
表2 運(yùn)動(dòng)到指定點(diǎn)測(cè)試
參考文獻(xiàn)
[1] 楊星.論單片機(jī)發(fā)展歷程及技術(shù)進(jìn)步[J].知識(shí)經(jīng)濟(jì),2011,23(1):97.
[2] 詹躍東.電機(jī)及拖動(dòng)基礎(chǔ)[M].重慶:重慶大學(xué)出版社,2002.
[3] 楊莉,魏萍.基于單片機(jī)控制的步進(jìn)電機(jī)轉(zhuǎn)速控制系統(tǒng)[J].南昌工程學(xué)院學(xué)報(bào),2005(6).
[4] 丁偉雄,楊定安,宋曉光.步進(jìn)電機(jī)的控制原理及其單片機(jī)控制實(shí)現(xiàn)[J].煤礦機(jī)械,2005,26(6):129-131.
[5] 張勁.利用AT89S52單片機(jī)控制步進(jìn)電機(jī)[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.
(責(zé)任編輯:楊迪娜 收稿日期: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)