2、系統總體設計
2.1硬件的總體設計
為了使門禁系統智能化,需要一個主控芯片對整個門禁系統進行管理控制。接著還需要對應的模塊完成包括數字密碼驗證和IC卡識別驗證的功能。當出現非法闖入、驗證失敗等情況時還需要對操作人員進行警告。最后需要一個人機交互界面方便管理人員對門禁系統進行管理控制。硬件總體設計框圖如圖2.1所示。
本設計采用STM32F103為主控芯片,控制其他模塊,對信息進行處理運算。STM32相比于51單片機性能更快,引出的GPIO口更多,功能更加豐富,相比起其他高性能的嵌入式設備具有功耗低,成本低的特點,更加適用于低成本的智能化門禁系統。
MRC522射頻識別模塊與主控芯片STM32F103通過SPI接口連接,MRC522接收主控芯片發送的命令,進行相應的操作,并將內部發送數據給主控芯片。同時與搜索的IC卡進行通信,識別IC卡的信息。MRC522采用的是NFC原理與IC卡通信,有三輪認證機制,通信過程安全快速,同時擁有防沖突機制,可以在多張卡的情況下選擇卡片進行識別。同時IC卡相比對ID卡有密碼驗證方式,不容易被復制,更加的安全。
觸摸屏通過8080接口與STM32F103連接,觸摸屏包含液晶顯示屏和電阻屏。液晶顯示屏內帶有控制芯片和顯存,主控芯片只要向顯存寫入數據就可以在液晶顯示屏上顯示內容,使用起來方便,電阻屏也自帶有控制芯片,處理觸摸數據,可以降低對主控芯片性能的需求。管理人員可以通過按壓電阻屏進行操作,并看到液晶顯示屏的顯示信息,方便管理人員對門禁系統進行管理。觸摸屏還可以用于數字密碼驗證,解決用戶忘記攜帶IC卡的情況,同時數字密碼可以作為管理人員的驗證方式。為了更好地反饋操作結果,提供錯誤警告,使用RGB等和蜂鳴器作為報警系統。
圖2.1 硬件總體框圖
3.系統的硬件設計
3.1 STM32芯片
本次采用STM32F103VET6芯片作為主控芯片,該芯片對外有100個引出的GPIO接口,方便和其他模塊進行連接,從而控制其他模塊,實現更多的功能。還有512K FLASH閃存,64KRAM,充足的內存可以讓芯片裝載的程序更大,存儲的數據更多。芯片的實物圖如圖3.1所示。
圖3.1 STM32F103VET6實物圖
STM32F103內部已經經過了封裝,由內核和片上外設構成。STM32F103采用的是由ARM公司研究設計Cortex-M3內核,外接晶振可達72MKZ主頻,性能強大。STM32F103包含了SPI、I2C、USART接口,這些是芯片生產廠商在內核上擴展的功能,讓芯片的性能和作用更加的強大,可以管理和控制更多的設備。STM32F1系列的框圖如圖3.2所示。
本次設計使用了SPI接口來對射頻識別模塊MRC522進行通信和管理控制,從而實現IC卡驗證的功能,還通過普通的GPIO口來對RGB燈和蜂鳴器進行控制,完成報警的功能。
3.2射頻識別模塊
3.2.1 功能特性
本設計采用MFRC522模塊來識別IC卡,實現開門驗證的功能。MFRC522模塊內部已經集成了各自器件,包括天線、邏輯控制功能、寄存器。模塊引腳圖如圖3.3所示。
MFRC522中的內部發送器,可以驅動讀寫器天線,給IC卡提供能量,發送數據給IC卡,接收IC卡發送的信息,進行通信。接收器的解調電路可以將IC卡發送的數據載波進行解調轉為二進制數據,譯碼電路則將二進制數據轉為信息,表示 IC卡傳輸的數據,數字電路部分可以對傳輸的數據進行處理,錯誤檢測。
3.2.2 通信原理
當主控芯片讀取MRC522寄存器的數據時,STM32主機第一個字節發送一個地址,從機發送無效數據。第二個字節時,MRC522才返回對應地址的數據。可以根據地址的格式可以判斷是讀地址還是寫地址。當最高位是1時,是讀數據,最高位是0時,是寫數據。主機和從機的數據根據時鐘信號同時發送傳輸,先發送最高位。
當要向MRC522的寄存器寫一個數據時,STM32芯片發送一個寫數據的地址,然后第二個字節發送數據。在寫數據時,MRC522返回的數據是無效數據,可以忽略。當發送的是地址時,地址的最高位代表是讀地址還是寫地址,中間六位代表地址,最低位默認位0。
MISO和MOSI傳輸的每一個字節都是高位在前,在時鐘上升沿保持不變,在下降沿改變。NSS信號必須為低,方便在一個數據流中發送多個字節。為了發送多個數據流,NSS必須在數據流之間設置為高電平。因為時鐘開始為低,所以在下降沿改變需要第二個跳變沿。因此在設置SPI傳輸的時鐘極性等于0,時鐘相位等于1。SPI通信時序圖如圖3.2所示。
圖3.2 SPI通信時序圖
4、系統的軟件設計
4.1 系統的初始化
STM32標準庫:
在實際開發中會發現,有時使用同一個內核,只是生產廠商不同,片上外設有少許的差異,也會導致相互之間的程序不能移植。為了解決這個問題,ARM公司與芯片廠商之間建立了一個標準標準。即 CMSIS 標準,實際上是建立了一個軟件抽象層。屏蔽了具體的硬件之間的差異,使軟件的兼容性更好。
而本次設計采用的STM32的標準庫。就是按照 CMSIS 標準建立的。很多底層的初始化,寄存器地址聲明都包含在里面。使用標準庫開發,可以加快項目進展。從ST的官網中獲取標準庫,將其中需要用到的文件包含到項目中。下面這些文件是開發中需要使用到的必要文件,如果我們要使用STM32F1系列芯片,都必須把文件包含到項目中。還有一些外設的文件,在使用的時候再添加進來。
(1)寄存器地址和寄存器數據結構定義文件
<system_stm32f10x.c><stm32f10x.h>
(2)內核相關文件
<system_stm32f10x.c>|<system.stm32f10x.h>|<core_cm3.h>|<core_cm3.c>
(3)外設驅動文件
<misc.c>|<stm32f10x_ppp.c>|<misc.h>|<stm32f10x_ppp.h>
(4)啟動文件
< startup_stm32f10x_hd.s>
(5)還有中斷服務函數,系統時鐘初始化,包含外設等函數相關的文件。<stm32f10x_it.c>、<stm32f10x_it.h>、<stm32f10x_conf.h> 。
外部設備初始化:
由于STM32的外設很多,為了降低功耗,每個外設都對應著一個時鐘,在芯片剛上電的時候這些時鐘都是被關閉的,如果想要外設工作,必須把相應的時鐘打開。使用的GPIO口也要根據作用,對輸入輸出方式,傳輸速度等進行設置。因此要先將模塊使用的GPIO口進行配置,在標準庫中,已經有宏定義定義了GPIO口對應的寄存器的別名,并且將這些配置封裝在一個結構體中。所以只要打開時鐘,配置功能結構體就可以完成外設的初始化操作。。
因為MRC522使用的是SPI方式與STM32通信,因此除了配置對應GPIO口的結構體,還需要將其GPIO口功能設置為SPI模式。并且設置SPI傳輸模式、相位和極性、傳輸速度。
本次設計中的液晶顯示控制器ILI9341通過8080接口和STM32通信。如果使用普通的GPIO口進行模擬,效率很低,在STM32中使用FSMC外設來管理擴展存儲器,因為想要在液晶屏上顯示數據,就要通過接口把數據寫入到內存上,這個和FSMC控制存儲器相似。經過驗證,可以使用FSMC接口來實現8080的通信時序,從而控制液晶顯示屏數據顯示。
觸摸屏初始化的配置首先要開啟時鐘和端口引腳,模式配置,以及顯示屏的各種參數設置。廠家已經提供了參數的配置數據,將封裝好的函數文件直接包含到項目中即可。最終使用寫入控制命令和寫入數據兩個函數來顯示想要文字圖片。
為了節約成本,沒有進行外擴內存卡。只使用少量的內存,想要顯示圖片有些困難。為了實現基本的操作界面,采用循環寫入像素點的方式,進行動態繪制操作界面。這個跟圖像的顯示很類似,但節約了內存空間,通過運算力來換取存儲空間。
4.2 主函數功能
系統程序采用輪詢的方式,當初始化完成,進入while循環,不斷重復進行判斷,當有操作時,執行對應的操作。主循環邏輯框圖如圖4.1所示。
首先進行主控芯片的初始化,調用各個初始化函數進行初始化。之后進入主函數,進入循環。接著在循環里,判斷當前的菜單界面標志位,從而在屏幕中顯示對應的界面。上電復位的初始狀態位于主界面,觸摸屏顯示四個按鈕,輸入密碼,增加IC卡,刪除IC卡,修改密碼。接著先進行判斷是否識別到IC卡。跳轉到識別IC卡的函數中去,如果當通訊范圍內搜尋到IC卡,則執行IC卡驗證函數。否則跳出,回到主循環。接著進入到觸摸屏檢測函數,如果觸摸屏被按下,主控芯片對按下的位置進行判斷。如果是按鈕對應的位置被按下,則跳轉到對應的界面的函數,同時界面標志位改變,液晶顯示屏進行刷新。如果不是,則回到主函數,進行下一輪的循環。
圖4.1 主循環邏輯框圖
文章底部可以獲取博主的聯系方式,獲取源碼、查看詳細的視頻演示,或者了解其他版本的信息。
所有項目都經過了嚴格的測試和完善。對于本系統,我們提供全方位的支持,包括修改時間和標題,以及完整的安裝、部署、運行和調試服務,確保系統能在你的電腦上順利運行。