實(shí)驗(yàn)指導(dǎo)ch02低頻系統(tǒng)_第1頁
實(shí)驗(yàn)指導(dǎo)ch02低頻系統(tǒng)_第2頁
實(shí)驗(yàn)指導(dǎo)ch02低頻系統(tǒng)_第3頁
實(shí)驗(yàn)指導(dǎo)ch02低頻系統(tǒng)_第4頁
實(shí)驗(yàn)指導(dǎo)ch02低頻系統(tǒng)_第5頁
已閱讀5頁,還剩79頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第二章、低頻門禁系統(tǒng)一、 基礎(chǔ)實(shí)驗(yàn)部分實(shí)驗(yàn)一 低頻讀卡原理實(shí)驗(yàn)1實(shí)驗(yàn)?zāi)康恼莆赵頇C(jī)工作原理掌握射頻 ID 卡讀卡原理2實(shí)驗(yàn)設(shè)備 低頻實(shí)驗(yàn)板一塊、門禁實(shí)驗(yàn)板一塊; 低頻 RFID 卡一張(也簡稱為)(智能貨架的貨物模型中的均為低頻卡,都可用于本實(shí)驗(yàn));示波器一臺;USB 連接線一條PC 機(jī)一臺。3實(shí)驗(yàn)原理低頻實(shí)驗(yàn)板如圖 2-1-1 所示。低頻實(shí)驗(yàn)板2-1-1 門禁實(shí)驗(yàn)板3.1 硬件概述目前常見的一般需要讀卡作為,成本較高,而且不利于掌握讀卡原理的學(xué)習(xí)。本實(shí)驗(yàn)箱采用分立元件的 125kHz RFID,電路結(jié)構(gòu)簡單,可用于EM4100 型和 TK4100 型 ID 卡。通常具有以下功能:1、 以射頻

2、的方式向射頻卡傳送能量;2、 從射頻卡中讀出數(shù)據(jù);3、 完成數(shù)據(jù)處理;4、 能和交互信息。的電路讀卡原理如圖 2-1-2 所示圖 2-1-2RFID系統(tǒng)框圖根據(jù)圖 2-1-2 所示,真實(shí)電路由載波產(chǎn)生電路、檢波(濾波)電路、放大電路和比較整形電路等組成,分別介紹如下:(1)125kHz 載波電路產(chǎn)生圖 2-1-3載波產(chǎn)生電路利用 8M 晶體振蕩器 Y2 產(chǎn)生一個 8M 正弦波,經(jīng) CD4040 分頻器分頻后輸出本125kHz 方波信號,經(jīng)過限流電阻后送入推挽式三極管功率放大器電路,放大后的載波(正弦波)信號到由天線和電容組成的諧振回路,諧振頻率為 125KHz,諧振電路的作用是為天線提供盡可能

3、大的電流,使讀卡距離最大化。電路上設(shè)計(jì)有 125kHz 測試點(diǎn),可在此測試點(diǎn) B 點(diǎn)測試信號的波形和幅度。B 點(diǎn)測試點(diǎn)波形如圖 2-1-4 所示。圖 2-1-4振蕩輸出的波形(2)隔直、檢波、濾波電路本電路如圖 2-1-5 所示,用于ID 卡信息,檢波電路的作用是濾除 125kHz 載波信號,還原出有用的數(shù)據(jù)信號,在射頻 ID 卡靠近線圈時,線圈感應(yīng)到能量后,調(diào)制信號經(jīng)過濾波后經(jīng)過包絡(luò)檢波電路,解調(diào)出包絡(luò)波形。經(jīng)過包絡(luò)檢波電路后,獲得的信號為有一定失真的數(shù)字信號,仍無法作為數(shù)字序列信號輸入給處理器。因此,需要經(jīng)過濾波、放大,產(chǎn)生無失真的數(shù)字信號,即電路圖 2-1-6 所示。圖 2-1-5檢波、

4、隔直、濾波電路(3)濾波、放大電路經(jīng)過檢波、隔直、濾波后的信號比較弱,而且含有部分高頻分量,不能直接輸入微處理器。因此,需要經(jīng)過濾波、放大電路進(jìn)行處理,電路如圖 2-1-6 所示。圖中 C5 是交流反饋元件,對電容而言,頻率越高的信號容抗越小,反饋量越大,放大倍數(shù)越小,故起到放大低頻信號,抑制高頻信號的作用,本電路輸出的波形已形成質(zhì)量較好的方波,用示波器在測試點(diǎn) F 可以檢測到方波信號。圖 2-1-6濾波、放大電路(4)比較整形電路為獲得質(zhì)量更好的數(shù)字信號,信號經(jīng)過濾波電路和放大電路后輸入比較整形電路,進(jìn)一步恢復(fù)原來的數(shù)字序列,可靠還原原波形,得到數(shù)字 ID 序列,直接輸入微器。電路如圖 2-

5、1-7 所示,此電路輸出的信號完全還原為原數(shù)字信號,可供微處理器并進(jìn)行處理:圖 2-1-7比較整形電路交流放大后的信號輸入比較器 LM358 的+端。LM358 的-端接一個分壓電路,比較后輸出。通過比較會消除高電平鋸齒紋。在 G 點(diǎn)通過示波器測試此曼徹斯。波形基本如圖2-1-8 所示:圖 2-1-8整形后的波形(5)微器部分本項(xiàng)目的單片機(jī)選用 ARM 系列 STM32103RET6 的 32 位高檔單片機(jī),微器選用8MHz 晶振作為系統(tǒng)時鐘,經(jīng)檢波,濾波放大和整形后的 ID 卡的序列號輸入微處理器 PA0后,通過串口將上傳至 PC 機(jī)或門禁等應(yīng)用系統(tǒng),引腳。經(jīng)過微處理器進(jìn)行曼切斯特PC 機(jī)和

6、門禁應(yīng)用系統(tǒng)可以利用此完成門禁管理等功能。注 1:本實(shí)驗(yàn)已將曼切斯程序到 ARM 微處理器內(nèi),感的同學(xué)也可以編寫相應(yīng)的程序,通過 JTAG 口到微處理器進(jìn)行 ARM 微處理器的相關(guān)練習(xí)。注 2:一般市面上的讀卡模塊有兩種形式,一種是用一個完整的集成塊 IC 進(jìn)行處理,然后由某種(或某幾種)接口將處理后的碼輸出。另一種基本與本電路相同,用某分立元件和單片機(jī)并封裝在一個塑膠體內(nèi),同樣由某種(或某幾種)接口將處理后的碼輸出。使用者僅需要使用另一個單片機(jī)通過接口信息,完成相應(yīng)的功能即可。通過以上電路的分析、測試和理解,掌握 ID 卡的基本原理,對后續(xù)的學(xué)習(xí)和實(shí)驗(yàn)會有很大的幫助。實(shí)驗(yàn)二 低頻 ID 卡1

7、實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)掌握射頻卡 ID 號原理;掌握射頻卡 ID 號的方法;2實(shí)驗(yàn)設(shè)備(1)硬件設(shè)備低頻 RFID 卡若干(本實(shí)驗(yàn)用試驗(yàn)箱自帶貨物架貨物模型);低頻原理機(jī)實(shí)驗(yàn)板、門禁實(shí)驗(yàn)板各一塊;示波器一臺;USB 一條PC 機(jī)一臺。(2)軟件工具 串口測試軟件:ComMonitor.exe3實(shí)驗(yàn)原理低頻實(shí)驗(yàn)板外形如圖 2-2-1 所示。圖 2-2-1低頻實(shí)驗(yàn)板3.1 EM4100 數(shù)據(jù)格式EM4100 包括 64 位數(shù)據(jù)信息,它由 5 個區(qū)組成:9 個引導(dǎo)位、10 個行偶校驗(yàn)位“POP9”、4 個列偶校驗(yàn)位“PC0PC3”、40 個數(shù)據(jù)位“D00D93”和 1 個停止位 S0。9 個引導(dǎo)位是出廠時就已

8、在內(nèi),其值為“111111111”。當(dāng) ID 卡讀卡模塊輸出數(shù)據(jù)時,首先輸出 9個引導(dǎo)位,然后是 10 組由 4 個數(shù)據(jù)位和 1 個行偶校驗(yàn)位組成的數(shù)據(jù)串,其次是 4 個列偶校驗(yàn)位,最后是停止位“0”?!癉00D13”是一個 8 位的晶體版本號或 ID 識別碼。“D20D93”是 8 組 32 位的信息,即,具體排列如下圖所示。圖 2-2-2 EM4100 數(shù)據(jù)格式每當(dāng) EM4100 將 64 個信息位傳輸完畢后,只要 ID 卡仍處于的工作區(qū)域內(nèi),它將再次順序64 位信息,如此重復(fù),直至 ID 卡的有效工作區(qū)域。曼切斯起始標(biāo)識時序如圖 2-2-3 所示。圖 2-2-3 起始標(biāo)識時序3.1.1

9、EM4100 數(shù)據(jù)編碼方式EM4100 采用曼徹斯特編碼,如下圖所示:位數(shù)據(jù)“1”對應(yīng)著電平下跳,位數(shù)據(jù)“0”對應(yīng)著電平上跳。在一串?dāng)?shù)據(jù)傳送的數(shù)據(jù)序列中,兩個相鄰的位數(shù)據(jù)傳送跳變時間間隔應(yīng)為1P。若相鄰的位數(shù)據(jù)極性相同(相鄰兩位均為“O”或“1”),則在兩次位數(shù)據(jù)傳送的電平跳變之間,有一次非數(shù)據(jù)傳送的、預(yù)備性的(電平)“空跳”。電平的上跳、下跳和空跳是確定位數(shù)據(jù)傳送特征的判據(jù)。在曼徹斯特調(diào)制方式下,EM4100 每傳送一位數(shù)據(jù)的時間是 64 個振蕩周期,其值由 RFn 決定。若載波頻率為 125 kHz,則每傳送一位的時間為振蕩周期的 64分頻,即位傳送時間為:1P=64125 kHz=512

10、s,則半個周期的時間為 256s圖 2-2-4曼徹斯特編碼3.1.2過程EM4100 卡的線圈靠近閱讀器線圈時,卡的線圈感應(yīng)到閱讀信號線圈的能量信號,經(jīng)過調(diào)制、檢波、濾波放大、比較整形后,將完整的一序列曼切斯輸入微處理器,曼切斯特碼過程由微處理器完成。由于曼徹斯特點(diǎn)可知,每位數(shù)據(jù)有由半個周期的高電平和半個周期的低電平組成,因此可將一個位數(shù)拆分為兩位,即位數(shù)據(jù)“1”可視為“10”,位數(shù)據(jù)“0”可視為“01”則64 位數(shù)據(jù)可視為由 128 位組成。為了獲得完整且連續(xù)存放的 64 位 ID 信息,在此接受兩輪完整的 64 位數(shù)據(jù),即接受 256 位。則上一輪接受到的停止位后緊跟著的必然是本輪接受到的

11、起始位,據(jù)此找出起始同步頭。在根據(jù)曼徹斯特點(diǎn)獲得 ID 卡的有效數(shù)據(jù)(“10”解碼為“1”;“01”為“0”)并進(jìn)行校驗(yàn),若校驗(yàn)無誤,則將 ID輸出至 PC 機(jī),。否則,直接準(zhǔn)備下一次。另外,在程序中首先定義一個數(shù)組 bit256并準(zhǔn)備下一次用來存放接收到的數(shù)據(jù);定義一個變量 tcomp 表示定時器當(dāng)前值;定義一個變量 error 用來標(biāo)記校驗(yàn)有錯誤產(chǎn)生。定義一個變量 lastbit 表示電平;定義一個變臉 half 用來定義是否為空跳。圖 2-2-5曼切斯總流程圖曼切斯程序段如下:for (bits=0;bits<256;bits+)/接受 256 位曼切斯數(shù)據(jù)while (!(tem

12、h&0X01)=lastbit)temh=GPIOA->IDR;tcomp=TIM_GetCounter(TIM2);TIM_SetCounter(TIM2,0);/設(shè)置定時器計(jì)數(shù)值為 0 if (tcomp>128 & tcomp<384)|(tcomp>384 & tcomp<640)if (tcomp>128 & tcomp<384)if (half=1)half=0; decodej=lastbit; j+;else half=1;elseif (half=1)if (lastbit=0)decodej=1;el

13、seif (lastbit=1)decodej=0;elsedecodej=0x0E;/錯誤輸入 0x0E if (j<127)bits=0;else break;j+;half=1;lastbit=0x01; j=0;head=0; post=0; error=0;for (i=0;i<128;i+)if(decodei=0)&(decodei+1=1)&(decodei+2=1)&(decodei+3=1)&(decodei+4=1) &(decodei+5=1)&(decodei+6=1)&(decodei+7=1)&a

14、mp;(decodei+8=1)&(decodei+9=1)/是否為 9 個同步碼head=1;/是同步碼,同步post=i+10;break;if (head=1)for (i=0;i<54;i+)if (decodepost+i=0x0e) error+; /如果出錯則放棄接受rfiddatai=decodepost+i;if (error=0)/有效數(shù)據(jù)for (i=0;i<10;i+)if(!(rfiddatai*5rfiddatai*5+1rfiddatai*5+2rfi ddatai*5+3=rfiddatai*5+4) error+;for (i=0;i<

15、;4;i+)if(!(rfiddatairfiddatai+5rfiddatai+10rfidda tai+15rfiddatai+20rfiddatai+25rfiddatai+30rfiddatai+35rfiddatai+40rfid datai+45=rfiddatai+50) error+;if (error=0) /出 10 位testok=1;/ for (i=0;i<10;i+)data1=(rfiddatai*5*8)+(rfiddatai*5+1*4)+(rfiddata過程如下:(1) 確定起始位(同步):首先要準(zhǔn)確找到數(shù)據(jù) 1,按規(guī)則下降沿為 1,上升沿為 0。如

16、果檢測到一個周期的高電平則可確定找到了數(shù)據(jù) 1,找到 1 后即可同步,因?yàn)?EM4100 卡最后一位數(shù)據(jù) 0,可作為起始碼的特征。(2) 同步后開始接收同步數(shù)據(jù)即 9 個 1,這部分軟件由一個循環(huán)完成,如果出錯則放棄接收。(3) 同步數(shù)據(jù)接收完后,開始接收數(shù)據(jù),數(shù)據(jù)分 11 行 5 列接收,以利于校驗(yàn)位的,如出現(xiàn)錯誤則放棄所有接收的數(shù)據(jù)。(4) 對于數(shù)據(jù)的確定,由于有了同步則可在同步后,根據(jù)時間再接收電平,也可以通過檢測脈沖寬度數(shù)據(jù)。算法必須有足夠的冗余度,使其能夠?qū)Π肼暤男盘栠M(jìn)行。常見的背景噪聲干擾會造成信號的抖動和毛刺。意味著脈沖寬度可能會有一定的變化,以至于不能,一個很好的方法就是脈

17、沖寬度設(shè)置一定的比較窗口,只要脈沖落在一定的范圍內(nèi)就被譯成相應(yīng)的碼,程序中采用 25%的容錯,規(guī)則如下: 1Bit 的時間間隔:0.75bit<1Bit 的時間間隔<1.25Bit。 0.5Bit 的時間間隔:0.25bit<0.5Bit 的時間間隔<0.75Bit,任何其它寬度的脈沖都無效。曼徹斯的可以分以下步驟完成: 脈沖寬度為 0.5T,如果上半周期非空跳,數(shù)據(jù)直接讀出。 脈沖寬度為 1T,則根據(jù)上電平數(shù)據(jù)值,如果上升沿,則數(shù)據(jù)為 0;如果下降沿,該數(shù)據(jù)則為 1。本系統(tǒng)使用 8MHz 時鐘,定時器倍頻為 72MHZ,定時 1us,位傳送半個周期 256s,則 0.

18、25 周期對應(yīng)的計(jì)數(shù)值是 128s;0.75s 周期對應(yīng) 384us;1.25 周期對應(yīng)的計(jì)數(shù)值是640us,為保證足夠的冗余,有效的周期范圍應(yīng)該是 128384,384640。(5) 如一切正常則到上位機(jī),如嘗試讀卡幾次未讀到,則返回 0,表示無卡。4實(shí)驗(yàn)步驟i*5+2*2)+rfiddatai*5+3;(1) USB 轉(zhuǎn)串口 PL2303 驅(qū)動程序的安裝打開 RFID 實(shí)驗(yàn)光盤“點(diǎn)擊開發(fā)工具USB 轉(zhuǎn)串口驅(qū)動 PL2303PL-2303DriverInstailler.exe”進(jìn)入圖 2-2-6 所示的安裝界面:圖2-2-6PL-2303 安裝界面點(diǎn)擊“下一步”直到安裝,彈出圖 2-2-7

19、 所示界面。圖 2-2-7 安裝完成點(diǎn)擊圖 2-2-7 界面中的“完成”按鈕即完成安裝。用 USB 連接線,將低頻原理機(jī)板 USB 口和 PC 機(jī)連接口連接起來,右鍵點(diǎn)擊“電腦”,選擇“管理”如圖 2-2-8 所示。圖 2-2-8 選擇管理在圖 2-2-8 界面的菜單中單擊“管理”,顯示圖 2-2-9 所示界面。選擇設(shè)備管理器,如圖 2-2-9 所示界面。圖 2-2-9選擇“+”號點(diǎn)擊圖 2-2-9 所示界面中的端口前的“+”號,顯示協(xié)調(diào)器所在的 COM 口。如電腦上的串口在 COM2 口。如圖 2-2-10 所示。圖 2-2-10通信端口 COM2上中出現(xiàn)提示信息,則說明所插的低頻原在 CO

20、M2 口,USB 轉(zhuǎn)串口驅(qū)動已安裝理機(jī)實(shí)驗(yàn)板已經(jīng)。(2)測試 8M 正弦波波形外觀檢查無誤后,打開門禁實(shí)驗(yàn)板電源。將數(shù)字示波器的接地探頭接到低頻原理機(jī)實(shí)驗(yàn)板的 GND 點(diǎn)(在實(shí)驗(yàn)板的左下部)。示波器的測試點(diǎn)接 A 點(diǎn),觀察 8M 晶振產(chǎn)生的正弦波波形是否如圖 2-2-11 所示。2-2-11 8M 晶振產(chǎn)生的正選波波形(3)測試 125KHz 載波波形用示波器測試 B 點(diǎn)(125KHz 載波波形)觀察有卡和無卡時的波形。無射頻卡接近線圈時,將數(shù)字示波器的接地探頭接到低頻原理機(jī)實(shí)驗(yàn)板的 GND 點(diǎn)(在實(shí)驗(yàn)板的左下部)。示波器的測試點(diǎn)接 B 點(diǎn),觀察并測試波形。正確的波形是頻率為 125KHz左右

21、的方波信號,波形如圖 2-2-12 所示:圖 2-2-12無卡時 125KHz 載波波形圖將通用射頻卡 EM4100 放置圈附近,測量 B 點(diǎn) 125KHz 方波波形,正確的波形是頻率為 125KHz 左右的方波信號,波形如圖 2-2-13 所示:圖 2-2-13有卡時 125KHz 載波波形圖(4)測試諧振回路波形將數(shù)字示波器的接地探頭接到低頻原理機(jī)實(shí)驗(yàn)板的 GND 點(diǎn)(在實(shí)驗(yàn)板的左下部)。示波器的測試點(diǎn)接 D 點(diǎn),觀察波形是否如圖 2-2-14:圖 2-2-14 經(jīng)過諧振回路波形(5) 測試曼切斯波形無卡接近低頻原理機(jī)實(shí)驗(yàn)板時,用示波器測試 G 點(diǎn)波形,即無卡時的信號經(jīng)過檢波、濾波、放大后

22、的輸出信號波形,無卡時波形如圖 2-2-15 所示:圖 2-2-15 無卡波形將通用射頻卡 EM4100 放置圈附近,用示波器測試 G 點(diǎn)波形,觀察并測試 ID卡曼切斯序列波形,正確的波形如圖 2-2-16 所示一串脈沖信號(注意:此時脈沖的寬度全相同)。圖 2-2-16ID 卡曼切斯波形圖(6) 通用射頻卡 ID 號如果步驟中載波波形和 ID 卡曼切斯波形都正確,先關(guān)掉門禁實(shí)驗(yàn)板電源,按以下幾個步驟進(jìn)行操作。 使用實(shí)驗(yàn)箱配置的 USB 連接線。將低頻原理機(jī)實(shí)驗(yàn)板 USB 與計(jì)算機(jī) USB 連接。 按照“檢測串口部分”步驟打開如圖 1-3-10 所示界面,若出現(xiàn)提示信息,則說明所插的低頻原理機(jī)

23、實(shí)驗(yàn)板已經(jīng)在 COM1 口,則說明低頻原理機(jī)實(shí)驗(yàn)板和電腦連接。 打開門禁實(shí)驗(yàn)板電源。 打開串口調(diào)試軟件 ComMonitor.exe,界面如圖 2-2-17 所示:圖 2-2-17串口調(diào)試助手主界面 在圖 2-2-17 中的紅圈所指區(qū)域設(shè)置端口,波特率,校驗(yàn)位,數(shù)據(jù)位以及停止位,本讀卡原理機(jī)波特率 9600、無校驗(yàn)位、數(shù)據(jù)位 8、停止位 1。端口根據(jù)電腦以上識別的 COM 號進(jìn)行設(shè)置。如識別是 COM2,則端口就設(shè)置為 COM2。圖 2-2-18串口設(shè)置 將通用射頻卡 EM4100(125K 射頻卡)放入讀卡原理機(jī)線圈附近。如果低頻原理機(jī)實(shí)驗(yàn)板識別到 ID 卡時,將向上位機(jī)間隔7 個字節(jié)的 1

24、6 進(jìn)制 ID。最后兩個字節(jié) 0D、0A 為結(jié)束碼,其余 5 個字節(jié)為。只要卡不離開感應(yīng)區(qū)域,閱讀器就會不斷向上位機(jī)ID。如圖 2-219 所示。圖 2-2-19ID到串口(7)驗(yàn)證實(shí)驗(yàn)結(jié)果因?yàn)榇藢?shí)驗(yàn)板的功能由軟件完成,所以只能依靠示波器原始的曼切斯,驗(yàn)證過程如下:Ø 分析步驟(5)的 ID 卡曼切斯波形圖,在圖中先找到同步頭,即 9 個 1,即連續(xù)的 9 個下跳,一個“10”代表一個“1”,如圖 2-2-20 所示圖 2-2-20 曼切斯同步頭因?yàn)槭?9 個連續(xù)的 1,所以中間都有一次空跳,如圖 2-2-20 紅圈所示。Ø 依次根據(jù)下跳為“1”,上跳為“0”的原則讀出示波

25、器接下來的 55 個數(shù)據(jù)。去掉 14個 效驗(yàn)碼和一個結(jié)束碼,余下的 40 個數(shù)據(jù)就是對應(yīng)的 40 位包括商家信息的 5 字節(jié)Ø 將這 5 字節(jié)數(shù)據(jù)和通過串口的 5 字節(jié)數(shù)據(jù)比較,結(jié)果是否一致。二、門禁系統(tǒng)應(yīng)用實(shí)驗(yàn)本實(shí)驗(yàn)箱低頻 RFID 的應(yīng)用案例是一個完整的門禁系統(tǒng),通過此案例不但可掌握門禁裝置的軟件設(shè)計(jì),還可對其硬件電路有所了解。本案例的主要功能有新卡單卡、批量、舊卡、舊卡刪除、刷卡,開鎖等功能,功能設(shè)計(jì)完成后可持一張有效 ID 卡靠近低頻原理機(jī)讀卡天線附近,低頻原理機(jī)將傳送到門禁實(shí)驗(yàn)板,門禁實(shí)驗(yàn)板識別,如為合法,啟動門鎖同時打開指示燈,10 秒后,關(guān)閉門鎖和指示燈。本門禁應(yīng)用系統(tǒng)

26、涉及 STM32 I/O 口驅(qū)動蜂鳴器、LED 指示燈,繼電器等;定時器;TFT 液晶顯示器等功能。為了完成本門禁系統(tǒng)應(yīng)用,首先介紹 STM32 軟件編譯環(huán)境實(shí)驗(yàn)、I/O 口驅(qū)動實(shí)驗(yàn)、定時器實(shí)驗(yàn),最后介紹門禁系統(tǒng)綜合實(shí)驗(yàn),以下逐一介紹各個實(shí)驗(yàn)部分。實(shí)驗(yàn)一、STM32 軟件環(huán)境使用實(shí)驗(yàn)1實(shí)驗(yàn)?zāi)康恼莆?KEIL4 編譯環(huán)境安裝;掌握 ARM 系列單片機(jī) STM32 在 KEIL4 編譯環(huán)境下應(yīng)用;掌握 KEIL4 編譯環(huán)境下怎么新建一個工程;2實(shí)驗(yàn)設(shè)備(1)硬件設(shè)備 門禁實(shí)驗(yàn)板一塊; J-LINK器一套 PC 機(jī)一臺。(2)軟件工具JLINK 驅(qū)動軟件:Setup_JLinkARM_V415e.e

27、xeKEIL4 安裝軟件:MDK4.70A.exeKEIL4 安裝軟件機(jī):.exe3實(shí)驗(yàn)原理本試驗(yàn)箱所有單片機(jī)都選用 STM32 系列增強(qiáng)型 STM32F103RET,此單片機(jī)專為要求高應(yīng)用專門設(shè)計(jì)的 ARM Cortex-M3 內(nèi)核。STM32 系列按性能性能、低成本、低功耗的分成兩個不同的系列:STM32F103“增強(qiáng)型”系列和 STM32F101“基本型”系列。增強(qiáng)型系列時鐘頻率達(dá)到 72MHz,是同類中性能最高的;基本型時鐘頻率為 36MHz,以 16位的價格得到比 16 位大幅提升的性能,是 16 位用戶的最佳選擇。兩個系列都內(nèi)置32K 到128K 的閃存,不同的是SRAM 的最大容

28、量和外設(shè)接口的組合。時鐘頻率72MHz時,從閃存執(zhí)行代碼,STM32 功耗 36mA,是 32 位市場上功耗最低的,相當(dāng)于0.5mA/MHz,STM32 單片機(jī)詳細(xì)資料參考STM32 中文使用手冊。以下主要介紹 STM32編譯環(huán)境安裝以及新建一個工程文件的步驟。4實(shí)驗(yàn)步驟4.1 MDK470A 安裝步驟1)打開 RFID 光盤/開發(fā)工具/MDK4.70, 點(diǎn)擊圖標(biāo),這個安裝軟件和安裝其他軟件一樣,一直點(diǎn)擊 Next 直到出現(xiàn)下面界面后,隨后填寫好你的信息,這個信息沒要求,可以隨意填寫,然后點(diǎn)擊 Next。2-3-1 填寫用戶信息2)接著出現(xiàn) 2-3-2 所示界面,按圖中所示選擇之后點(diǎn)擊“Fin

29、ish”之后,MDK 便安裝完成。2-3-2 安裝完成4.2、MDK470AMDK每臺機(jī)會有一個CID,copy 這個CID 到機(jī)處生成LiceseKey,然后再將這個 LiceseKey 添加到 MDK 里面去。1)打開運(yùn)行 MDK.2)點(diǎn)擊:File->License Management,彈出一個如圖 2-3-3 所示界面,copy 界面中的 CID2-3-3 License Management 選擇2-3-4 獲取 CID3)打開 RFID 光盤/開發(fā)工具 /機(jī)下面。4)接著會出現(xiàn) 2-3-5 所示界面。黏貼剛才的 CID 到 CID 輸入框,然后 Target 選擇ARM 之

30、后,點(diǎn)擊“Generate”,30 位的 License Key會在圖 2-3-5 紅色圈出的部分生成。2-3-5 生成 LicenseKey5) 將這個 LicenseKey 黏貼到 Keil 的 2-3-4 所示界面的 New LicenseIdCode 一欄,然后點(diǎn)擊“Add LIC”,添加后會出現(xiàn)如 2-3-6 所示的提示。然后點(diǎn)擊 Close 關(guān)閉這個界面即可。到此 LicenseKey 便添加完成。2-3-6添加 LicenseKey4.3 新建工程模板以下介紹新建工程模板過程,為了避免新建的繁瑣過程,也可以直接打開光盤自帶的模板文件/Template 工程模板/USER/Temp

31、late.UV2。1) 打開桌面的 KEIL4 圖標(biāo),打開 MDK 主界面,可以看到工程中有一個默認(rèn)的工程,點(diǎn)擊這個工程名字,然后選擇菜單 Project->Close Project,就關(guān)閉掉這個工程,這樣整個 MDK就是一個空的了,接下來將建立工程模版。2) 在建立工程之前,建議用戶在電腦的某個目錄下面建立一個文件夾,后面所建立的工程都可以放在這個文件夾下面,這里建立一個文件夾為 Template。3) 如圖 2-3-7 界面所示,點(diǎn)擊 Project>NewUvisionProject,然后將目錄到剛才建立的文件夾 Template 之下,在這個目錄下面建立子文件夾 USER

32、(代碼工程文件都是放在 USER 目錄,很多人喜歡新建“Project”目錄放在下面,這也是可以的,這個就看個人喜好了),然后到 USER 目錄下面,工程文件就都保存到 USER 文件夾下面。工程命名為 Template,點(diǎn)擊保存如圖 2-示。圖 2-3-7 新建工程圖 2-3-8 定義工程名稱Device 的界面,就是選擇的4)接下來會出現(xiàn)如圖 2-3-9 選擇型號,由于本實(shí)驗(yàn)箱選用 STM32F103RET6,因此這里到 STMicroelectronics 下面的 STM32F103RE圖 2-3-9 選擇型號5)彈出框“Copy STM32 Startup Code to projec

33、t .”,詢問是否添加啟動代碼到工程中,這里選擇“否”,因?yàn)槭褂玫?ST 固件庫文件已經(jīng)包含了啟動文件。6)觀察 USER目錄下面包含三個文件,如圖 2-3-10 所示:圖 2-3-10 工程 USER 目錄文件在 Template 工程目錄下面,如圖 2-3-11 所示新建 3 個文件夾 CORE, OBJ7)以及STM32F10x_FWLib。CORE 用來存放文件和啟動文件,OBJ 是用來存放編譯過程文件以及 hex 文件, STM32F10x_FWLib文件夾顧名思義用來存放 ST提供的庫函數(shù)源碼文件。已有的USER 目錄除了用來放工程文件外,還用來存放主函數(shù)文件 main.c,以及其

34、他包括 system_stm32f10x.c 等等。圖 2-3-11 工程目錄預(yù)覽8)下面將到工程目錄文件夾下面。 打開 RFID 光盤自的固件庫包里的源碼文件帶 STM32F10x_StdPeriph_Lib_V3.5.0LibrariesSTM32F10x_StdPeriph_Driver 目錄,將此目錄下面的 src,inc 文件夾 copy 到剛才建立的 STM32F10x_FWLib 文件夾下面。src 存放的是固件庫的.c 文件,inc 存放的是對應(yīng)的.h 文件,不妨打開這兩個文件目錄過目一下里面的文件,每個外設(shè)對應(yīng)一個.c 文件和一個.h 頭文件,如圖 2-3-12 所示。圖 2

35、-3-12庫源碼文件夾9)下面我們要將固件庫包里面相關(guān)的啟動文件到我們的工程目錄 CORE 之下。打開固件庫包,到目錄STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3CoreSupport 下面,將文件core_cm3.c 和文件 core_cm3.h到 CORE 下 面 去 。 然 后到 目 錄STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3DeviceSupportSTSTM32F10xstartuparm 處,將這個目錄里面 startup_stm32f10x_hd.s 文件到 CORE 下面。以

36、上STM32F103RET6 是大容量已經(jīng)解釋了不同容量的使用不同的啟動文件,所以選擇這個啟動文件?,F(xiàn)在觀察 CORE 文件夾下面的文件,如圖 2-3-13 所示:圖 2-3-13 啟動文件夾10)到目錄:STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3DeviceSupportSTSTM32F10x下面將里面的三個文件 stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h,到USER 目錄之下。然后將STM32F10x_StdPeriph_Lib_V3.5.0ProjectSTM32F10x_StdP

37、eriph_Template 下面的 4 個文件main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h到USER 目錄下面。USER 目錄如圖 2-3-14 所示:圖 2-3-14 USER 目錄文件瀏覽11)前面 10 個步驟,將需要的固件庫相關(guān)文件到了工程目錄下面,下面將這些文件加入工程中去。如圖 2-3-15 所示,右鍵點(diǎn)擊 Target1,選擇 Manage Components圖 2-3-15 點(diǎn)擊 Management Components12)Project Targets 一欄,將 Target 名字修改為 Template,

38、然后在 Groups 一欄刪掉一個Source Group1,如圖 2-3-16 建立三個 Groups:USER,CORE,FWLIB。然后點(diǎn)擊 OK,可以看到 Target 名字以及 Groups 情況,如圖 2-3-17 所示。圖 2-3-16圖 2-3-1713)下面往 Group 里面添加需要的文件。按照步驟12 的方法,右鍵點(diǎn)擊 Tempate,選擇 Manage Components.然后選擇需要添加文件的 Group,這里第一步選擇 FWLIB ,然后按圖 2-3-18 點(diǎn)擊右邊的 Add Files,到剛才建立的目 STM32F10x_FWLib/src 下面,將里面所有的文

39、件選中(Ctrl+A),然后點(diǎn)擊 Add,然后 Close.可以看到Files 列表下面包含添加的文件。這里需要說明一下,對于寫代碼,如果只用到了其中的某個外設(shè),暫時不用的外設(shè)的庫文件可以不添加。例如只用 GPIO,可以只添加 stm32f10x_gpio.c。如果全部添加則可為后續(xù)新增外設(shè)提供方便,其缺點(diǎn)是工程太大,編譯速度慢,用戶可以自行選擇。圖 2-3-18到CORE 和USER 下面,添加需要的文件。這里CORE14)用同樣的方法,將Groups下面需要添加的文件為 core_cm3.c,startup_stm32f10x_hd.s,如圖 2-3-20,USER 目錄下面需要添加的文件

40、為main.c,stm32f10x_it.c,system_stm32f10x.c. 如圖2-3-19這樣需要添加的文件已經(jīng)添加到工程中去了,最后點(diǎn)擊 OK,回到工程主界面圖 2-3-21。圖 2-3-19圖 2-3-20圖 2-3-21 主界面15)編譯工程,在編譯之前首先要選擇編譯中間文件編譯后存放目錄。如圖 2-3-21 方法是點(diǎn)擊魔術(shù)棒,然后選擇“Output”選項(xiàng)下面的“Select folder for objects”,然后選擇目錄為上面新建的 OBJ 目錄。圖 2-3-2116)點(diǎn)擊編譯按鈕編譯工程,可以看到很多報(bào)錯,如圖 2-3-22 因?yàn)檎也坏綆煳募?。圖 2-3-22下面介

41、紹 MDK,在哪些路徑之下搜索需要的頭文件,也就是頭文件目錄?;氐焦こ讨?7)菜單,如圖 2-3-23 點(diǎn)擊魔術(shù)棒,出來一個菜單,然后如圖 2-3-24 點(diǎn)擊 c/c+選項(xiàng).然后點(diǎn)擊 IncludePaths 右邊的按鈕。彈出一個如圖 2-3-25 添加 path 的框,然后將圖上面的 3 個目錄添加進(jìn)去。記住,keil 只會在一級目錄查找,所以如果目錄下面還有子目錄,記得 path 一定要到最后一級子目錄。然后點(diǎn)擊 OK。圖 2-3-23圖 2-3-24圖 2-3-2518)編譯工程,可以看到又報(bào)了很多同樣的錯誤??梢噪p擊錯誤,然后會自動到文件 stm32f10x.h 中出錯的地方,可以看到

42、代碼:#if!defined(STM32F10X_LD)&&!defined(STM32F10X_LD_VL)&&!defined(STM32F10X_MD)&&!defined(STM32F10X_MD_VL) &&!defined(STM32F10X_HD) &&!defined(STM32F10X_HD_VL)&& !defined (STM32F10X_XL) && !defined (STM32F10X_CL)#error"Pleaseselectfirst th

43、e target STM32F10x device used in your application (in stm32f10x.h file)"#endif這是因?yàn)?3.5 版本的庫函數(shù)在配置和選擇外設(shè)的時候通過宏定義來選擇的,所以需要配置一個全局的宏定義變量。按照步驟 16,到 c/c+界面,然后填寫“STM32F10X_HD,USE_STDPERIPH_DRIVER”到 Define 輸入框里面。這里解釋一下,如果你用的是中容量那么 STM32F10X_HD 修改為 STM32F10X_MD,小容量修改為 STM32F10X_LD.然后點(diǎn)擊 OK,如圖 2-3-26 所示設(shè)置。

44、圖 2-3-2619)這次在編譯之前,記得打開工程 USUR 下面的 main.c,下面代碼到 main.c 覆蓋已有代碼,然后進(jìn)行編譯。(記得在代碼的最后面加上一個回車,否則會有警告),如圖 2-3-27所示,可以看到,這次編譯已經(jīng)了。#include "stm32f10x.h" void Delay(u32 count)u32 i=0;for(;i<count;i+);int main(void)GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB| RCC_A

45、PB2Periph_GPIOE, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_SetBits(GPIOB,GPIO_Pin_5);/使能 PB,PE 端口時鐘/LED0->PB.5 端口配置/推挽輸出/IO 口速度為 50MHz/初始化 GPIO

46、B.5/PB.5輸出高GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; GPIO_Init(GPIOE, &GPIO_InitStructure); GPIO_SetBits(GPIOE,GPIO_Pin_5);while(1)GPIO_ResetBits(GPIOB,GPIO_Pin_5); GPIO_SetBits(GPIOE,GPIO_Pin_5); Delay(3000000);GPIO_SetBits(GPIOB,GPIO_Pin_5); GPIO_ResetBits(GPIOE,GPIO_Pin_5); Delay(3000000);/LE

47、D1->PE.5 推挽輸出/初始化 GPIO/PE.5輸出高2-3-27圖20)這樣一個工程模版建立完畢。下面還需要配置,讓編譯之后能夠生成 hex文件。同樣點(diǎn)擊魔術(shù)棒,進(jìn)入配置菜單,如圖 2-3-28 所示選擇 Output。然后勾上下三個選項(xiàng)。 其中Create HEX file 是編譯生成 hex 文件,Browser Information 是可以查看變量和函數(shù)定義。還有就是要選擇生產(chǎn)的 hex 文件和項(xiàng)目中間文件放在哪個目錄,點(diǎn)擊“Select folder forObjects”目錄,選擇到上面建立的 OBJ 目錄下面。圖 2-3-2821)重新編譯代碼,可以看到生成了 he

48、x 文件在 OBJ 目錄下面,這個文件用 mcuisp 下載到 mcu 即可。 到這里,一個基于固件庫 V3.5 的工程模板就建立了。22)實(shí)際上經(jīng)過前面 21 個步驟,工程模板已經(jīng)建立完成。工程有一個 SYSTEM 文件夾,下面有 3 個子目錄分別為 sys,usart,delay,存放的是每個實(shí)驗(yàn)都要使用到的共用代碼。首先,找到實(shí)驗(yàn)光盤,打開任何一個固件庫的實(shí)驗(yàn),可以看到下面有一個 SYSTEM 文件夾,比如打開光盤工程模板文件的工程目錄如圖 2-3-29 所示:圖 2-3-29可以看到有一個 SYSTEM 文件夾,進(jìn)入 SYSTEM 文件夾,里面有三個子文件夾分別為 delay,sys,

49、usart,每個子文件夾下面都有相應(yīng)的.c 文件和.h 文件。接下來要將這三個目錄下面的代碼加入到工程中去。 用之前講解步驟 13 的辦法,在工程中新建一個組,命名為 SYSTEM,然后加入這三個文件夾下面的.c 文件分別為sys.c,delay.c,usart.c,如圖 2-3-30所示:圖 2-3-30點(diǎn)擊“OK”之后可以看到工程中多了一個 SYSTEM 組,下面有 3 個.c 文件,如圖 2-3-31。圖 2-3-31接下來將對應(yīng)的三個目錄(sys,usart,delay)加入到 PATH 中去,因?yàn)槊總€目錄下面都有相應(yīng)的.h 頭文件,這請參考步驟17 即可,加入后的截圖如圖 2-3-3

50、1:圖 2-3-31最后點(diǎn)擊 OK。這樣工程模板就徹底完成了。建立好的工程模板在光盤的實(shí)驗(yàn)?zāi)夸浝锩嬗校譃椤?Template 工程模板”大家可以打開對照一下。實(shí)驗(yàn)二、STM32I/O 口驅(qū)動實(shí)驗(yàn)1實(shí)驗(yàn)?zāi)康恼莆?STM32F103RET6 的 I/O 口基本功能掌握 LED、蜂鳴器軟件編寫掌握 STM32 在 KEIL4 編譯環(huán)境下的應(yīng)用2實(shí)驗(yàn)設(shè)備(1)硬件設(shè)備門禁實(shí)驗(yàn)板一塊;原理機(jī)實(shí)驗(yàn)板一塊;J-LINK器一套PC 機(jī)一臺。(2)軟件工具 STM32F103RET 編程環(huán)境:KEIL43. 實(shí)驗(yàn)原理STM32 最基本的外設(shè)莫過于 I/O 口的高低電平,本實(shí)驗(yàn)通過一個最基本的 LED 燈和蜂

51、鳴器例程。通過本實(shí)驗(yàn),大家將了解到 STM32 的IO 口作為輸出使用的方法。在本實(shí)驗(yàn)中,將通過代碼試驗(yàn)箱原理機(jī)開發(fā)板上的一個 LED 燈和一個蜂鳴器:蜂鳴器和燈同時亮滅。以下用幾個小節(jié)介紹本實(shí)驗(yàn)的實(shí)驗(yàn)原理I/O 口簡介該實(shí)驗(yàn)的關(guān)鍵在于如何STM32 的 IO 口輸出。了解了 STM32 的 IO 口如何輸出,就可以實(shí)現(xiàn)LED、蜂鳴器等。通過本實(shí)驗(yàn),將初步掌握 STM32 基本IO 口的使用。首先要提一下,在固件庫中,GPIO 端口操作對應(yīng)的庫函數(shù)以及相關(guān)定義在文件stm32f10x_gpio.h 和 stm32f10x_gpio.c 中。學(xué)習(xí)固件庫,并不需要記住每個寄存器的作用,而只是通過了

52、解寄存器來對外設(shè)一些功能有個大致的了解,這樣對以后的學(xué)習(xí)也很有幫助。在此只介紹下幾個寄存器。STM32 的 IO 口相比 51 而言要復(fù)雜得多,所以使用起來也很多。 首先 STM32 的IO 口可以由軟件配置成如下 8 種模式:1、輸入浮空2、輸入上拉3、輸入下拉4、模擬輸入5、開漏輸出6、推挽輸出7、推挽式復(fù)用功能8、開漏復(fù)用功能每個 IO 口可以自由編程,但 IO 口寄存器必須要按 32 位字被。STM32 的很多 IO口可與 5V IO 口兼容,這些 IO 口在與 5V 電平的外設(shè)連接時很有優(yōu)勢,具體哪些 IO 口是與 5V IO 口兼容,可以從該的管腳描述章節(jié)查到(I/O Level

53、中標(biāo)“FT”的IO 口與 5V IO 口電平兼容)。STM32 的每個 IO 端口都有 7 個寄存器來。他們分別是:配置模式的 2 個 32 位的端口配置寄存器 CRL 和 CRH;2 個 32 位的數(shù)據(jù)寄存器 IDR 和 ODR;1 個 32 位的置位/復(fù)位寄存器 BSRR;一個 16 位的復(fù)位寄存器 BRR; 1 個 32 位的鎖存寄存器 LCKR。如果想要了解每個寄存器的詳細(xì)使用方法,可以參考 RFID 光盤下的STM32中文參考手冊V10P105P129。CRL 和 CRH著每個 IO 口的模式及輸出速率。STM32的 IO 口位配置表如表 2。4.1 所示:表 2.4.1 STM32 的輸出模式配置如表 2.4.2 所示:IO 口位配置表STM32表 2.4.2 STM32 輸出模式配置表接下來介紹端口低配置寄存器 CRL 的描述,如圖 2-4-1 所示:圖 2-4-1 端口低配置寄存器 CRL 各位描述該寄存器的復(fù)位值為 0X44444444,從圖 2-4-1 可以看到,復(fù)位值其實(shí)就是配置端口為浮空輸入模式。從上圖還可以得出:STM32 的 CRL著每組 IO 端口(AG)的低 8 位的模式。每個 IO 端口的位占用 CRL 的 4 個位,高兩位為 CNF,低兩位為 MODE。這里可以記住幾個常用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論