• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 基于Cortex―M3的嵌入式以太網門禁系統設計

    基于Cortex―M3的嵌入式以太網門禁系統設計

    作者: 時間:2016-09-12 來源:網絡 收藏

    摘要:闡述了采用Cortex—M3群說STM32為主控芯片、射頻芯片、以太網控制器的硬件電路和軟件設計框架,同時對以太網協議進行了詳細的分析。本系統傳輸距離遠,超低功耗,性能優異且穩定,完全適用于校園以及公司的系統。

    本文引用地址:http://www.czjhyjcfj.com/article/201609/305075.htm

    引言

    當前,有很多的企業是采用佩戴工作證來完成管理,而且還是采用傳統的人工方式完成,不僅容易被人混入,且沒有記錄,存在各種人為的失誤。同時,市場上門禁系統存在傳輸距離受限制、性能不佳等問題。

    隨著嵌入式技術日新月異的發展,以及以太網技術的普及,使得基于以太網的嵌入式產品越來越多,發展也越來越快。本文研究的就是采用以太網傳輸數據和射頻芯片識別智能卡相結合的門禁系統,相對于傳統的門禁系統,以太網解決了傳輸距離上的問題。其次,采用了基于80C51內核的射頻芯片,使得性能更加穩定。其工作的基本原理是先將智能卡放在門禁系統上,系統讀取數據并傳送給主芯片STM32進行處理,主芯片處理后再通過以太網協議將數據從ENCN8J60傳輸給服務器。

    1 門禁系統硬件組成

    門禁系統主要由意法半導體公司的主控芯片STM3H、Microchip公司的以太網控制器和NXP公司的射頻芯片組成。

    門禁系統結構組成如圖1所示。主芯片STM32通過以太網協議棧將數據傳輸到,然后可以通過網線與服務器直接連接進行通信,也可以通過路由器再連接到服務器。在非接觸式卡通信方面,STM32通過頻率為1MHz的SPI接口與PN532相連。

    基于Cortex—M3的嵌入式以太網門禁系統設計

    1.1 STM32外圍電路設計

    本系統采用意法半導體公司以Cortex—M3為內核的32位微處理器STM32F103為主控芯片,其主頻為72 MHz,內部集成存儲空間為256K的Flash和64K的SRAM,還包含I2C、SPI、I2S、USART、CAN、ADC、看門狗等。性價比在同類產品中十分突出。硬件連接如圖2所示。

    基于Cortex—M3的嵌入式以太網門禁系統設計

    在調試時我們采用SWD取代JTAG,因為SWD不僅引腳更少,而且在高速模式下更加可靠。

    1.2 射頻芯片PN532硬件電路設計

    PN532是NXP公司推出的一個高度集成的非接觸式讀寫芯片,它包含80C51微控制器內核,集成了13.56 MHz下的各種主動/被動式非接觸通信方法和協議。支持ISO14443A/14443B協議。工作距離超過75 mm。接收來自天線的信號并對該數據按照ISO14443規定的幀格式處理數據。

    PN532支持三種通信方式:SPI、I2C、HUS。由于我們采用SPI方式與主控芯片STM32進行通信,所以I0和I1分別設置為0和1。

    PN532外圍電路結構如圖3所示。

    基于Cortex—M3的嵌入式以太網門禁系統設計

    1.3 以太網控制器ENC28J60硬件設計

    主控芯片ENC28J60是帶有行業標準串行外設接口(Serial Peripheral Interface,SPI)的獨立以太網控制器。它可作為任何配備有SPI的控制器的以太網接口。ENC28J60符合IEEE802.3的全部規范,采用了一系列包過濾機制以對傳入數據包進行限制。它還提供了一個內部DMA模塊,以實現快速數據吞吐和硬件支持的IP校驗和計算。與主控制器的通信通過兩個中斷引腳和SPI實現,數據傳輸速率高達10 Mb/s。

    兩個專用的引腳用于連接LED,進行網絡活動狀態指示。

    應當注意的是,當從ENC28J60讀取多個數據時,即使不需要主控芯片STM32輸出的數據,每讀取一個數據前也要向SPI發送緩沖器寫一個數據用來啟動SPI的接口時鐘。

    ENC28J60典型應用電路如圖4所示。

    基于Cortex—M3的嵌入式以太網門禁系統設計

    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處理流程框圖。

    RAM API把協議棧和應用程序放在一個進程里,該函數基于函數回調技術,下面是LwIP的部分關鍵配置和代碼。

    (1)LwIP配置

    在LwIP的配置文件lwipopts.h中修改如下地方。

    是否使用操作系統,我們不用,所以填寫為1:

    #define NO_SYS 1

    配置heap的大?。?/p>

    #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,配置最大輸出單元等:


    上一頁 1 2 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 海林市| 泰和县| 永靖县| 镇坪县| 长宁县| 崇州市| 滦平县| 崇州市| 固始县| 屏南县| 棋牌| 拜城县| 阿拉善盟| 凤台县| 中方县| 洪湖市| 井冈山市| 聊城市| 锡林郭勒盟| 奉新县| 桂林市| 崇左市| 常山县| 仪征市| 乌拉特中旗| 永胜县| 龙里县| 南郑县| 镇坪县| 东兰县| 罗江县| 巨野县| 扶风县| 昭觉县| 乐业县| 聊城市| 临武县| 呼图壁县| 个旧市| 都江堰市| 沛县|