實驗指導(dǎo)書 《基于STM32的嵌入式系統(tǒng)原理與設(shè)計》_第1頁
實驗指導(dǎo)書 《基于STM32的嵌入式系統(tǒng)原理與設(shè)計》_第2頁
實驗指導(dǎo)書 《基于STM32的嵌入式系統(tǒng)原理與設(shè)計》_第3頁
實驗指導(dǎo)書 《基于STM32的嵌入式系統(tǒng)原理與設(shè)計》_第4頁
實驗指導(dǎo)書 《基于STM32的嵌入式系統(tǒng)原理與設(shè)計》_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 實驗指導(dǎo)書(實驗)課程名稱:基于stm32的嵌入式系統(tǒng)設(shè)計實驗 實驗一 電路板焊接與調(diào)試一實驗簡介完成實驗板上部分元件的焊接,焊接完成后進行基本測試。二實驗?zāi)康募霸碚莆誷tm32f103實驗板的基本原理,掌握焊接電路板的基本技能,掌握下載測試程序的基本方法。原理:詳細內(nèi)容參考教材基于stm32的嵌入式系統(tǒng)原理與設(shè)計mcu和周邊電路如圖為mcu及其周邊電路。8.低速晶振電路1.喚醒電路7.ad輸入2.復(fù)位電路3.啟動配置4.高速晶振電路5.ad參考電路6.后備電池6.備用電源5.參考電壓圖1 mcu及其周邊電路1. 喚醒電路,高有效,不按時接220k電阻下拉。2. 復(fù)位電路,低有效。帶rc啟

2、動復(fù)位。3. 配置啟動,用跳線選擇boot1和boot0接高電平或低電平。4. 高速晶振電路,采用8m晶振,在stm32內(nèi)部倍頻為72m。5. ad參考電路,采用lc濾波,可跳線選擇直接接vcc或通過tl431穩(wěn)壓電路產(chǎn)生的參考電壓。6. 后備電池??赏ㄟ^跳線選擇直接接vcc或電池。7. ad輸入,可選擇使用rc濾波,共8路。8. 低速晶振電路,選用32.768khz晶振,為產(chǎn)生準確的串口波特率。 usb轉(zhuǎn)串口電路 usb轉(zhuǎn)串口電路可以方便沒有串口的筆記本電腦用戶通過usb接口下載代碼到flash中,及進行rs232串行通信。圖2 usb轉(zhuǎn)串口接口電路usb轉(zhuǎn)串口芯片是cp2102,該芯片穩(wěn)定

3、性較好。當其正常工作的時候,燈led6亮。該芯片dp/d+引腳連mini usb接口的腳3,dm/d-引腳連mini usb接口的腳2,為一對usb輸入輸出線。txd與rxd引腳接mcu的pa10(usart1_rx)和pa9(usart1_tx)。 i2c接口電路本書選擇的eeprom是at24c02是256字節(jié)的電可擦出prom,通過i2c協(xié)議與stm32進行通信,連接十分簡單。 eeprom雖然容量只有256字節(jié),但是讀寫比較方便,與mcu連線少,被廣泛的使用在智能儀器、汽車電子、工業(yè)控制、家用電器等 場合。實例中使用at24c02存儲屏幕是否校準過及屏幕各個角的模擬值等。圖3 i2c接

4、口電路a2、a1、a0為做級聯(lián)時使用,這里只有1片24c02,接地即可。wp為寫保護,不保護的時候接地。scl為i2c時鐘,sda為i2c數(shù)據(jù),因開漏輸出,需外部接上拉電阻上拉。三實驗內(nèi)容學(xué)習(xí)stm32f103實驗板電路的原理圖焊接電路板上部分電阻電容焊接led和蜂鳴器焊接asm1117芯片iic芯片at24c02下載測試代碼到焊接好的stm32實驗板,測試實驗板是否工作正常。實驗原理根據(jù)教材。四實驗設(shè)備硬件部分:pc計算機(宿主機)、stm32實驗板、電烙鐵軟件部分:測試軟件(源代碼)、isp下載軟件五實驗步驟1.焊接電路板部分電阻電容2.焊接led和蜂鳴器3.焊接asm1117芯片iic芯

5、片at24c024.焊接晶振5.檢查和清潔實驗板。注意需在測試前檢查電源與地之間是否短路才能進入下一步。6.下載測試代碼到焊接好的電路板,測試焊接是否正確。測試過程通過串口調(diào)試助手輸出測試信息,依次測試串口、led、按鍵、蜂鳴器、iic和spiflsh的工作情況。7.如測試不通過,根據(jù)現(xiàn)象檢查電路,找到問題后進行修正,然后重新測試。實驗二 流水燈和按鍵實驗一實驗簡介從無到有構(gòu)建第一個stm32工程,并實現(xiàn)流水燈效果和按鍵響應(yīng)。二實驗?zāi)康募霸碚莆誷tm32開發(fā)環(huán)境,掌握從無到有的構(gòu)建工程,學(xué)會gpio基本操作。原理:詳細內(nèi)容參考教材基于stm32的嵌入式系統(tǒng)原理與設(shè)計輸入輸出端口gpiogpi

6、o是常規(guī)輸入輸出端口,stm32f103ve有pa、pb、pc、pd、pe共5個16位的gpio。stm32的gpio都是可編程的,具有很多復(fù)用功能。從圖1.7.1可見,通過對輸出控及肖特基觸發(fā)器及各個開關(guān)的控制,可以選擇使用gpio功能或復(fù)用功能。當聽過編程,將輸出控制設(shè)置為選擇復(fù)用功能的時候,就從來自片上外設(shè)的復(fù)用功能輸出端采集數(shù)據(jù),反之采集輸出數(shù)據(jù)寄存器上的數(shù)據(jù)。在gpio方式下也可以配置為很多種模式,這和51單片機是有明顯的區(qū)別,功能性強了很多。這些模式有:輸入浮空、輸入上拉、輸入下拉、模擬輸入、開漏輸入、推挽輸出、推挽復(fù)用、開漏復(fù)用。在默認的模式下為輸入浮空。每個i/o端口可以通過對

7、gpio寄存器寫操作來編程成一種模式,gpio寄存器包括端口配置低寄存器gpiox_crl、端口配置高寄存器gpiox_crh、端口輸入寄存器gpiox_idr、端口輸出寄存器gpiox_odr、端口位設(shè)置清除寄存器gpiox_bsrr、端口為清除寄存器gpiox_brr、端口鎖定寄存器gpiox_lckr。所有x的范圍為(a-e)。80個gpio分為5組,a-e就是分組號。例如,gpiob_crl就是b組gpio的端口配置低寄存器,gpioc_crl就是c組gpio的端口配置低寄存器。構(gòu)建工程如圖所示:圖1: 工程文件固件庫構(gòu)建過程:在d盤建立一個目錄,在其下建立一個子目錄firstpeoj

8、ect作為工作目錄。然后,又在其下建立了一些子目錄。當然,使用的工具就是windows資源管理器。這個目錄可以放在任何一個盤或目錄里,沒有限制?,F(xiàn)在開始拷貝文件。1)拷貝內(nèi)核文件和驅(qū)動支持文件、啟動文件將固件庫librariescmsiscm3coresupport目錄下的兩個文件core_cm3.c和core_cm3.h文件拷貝到剛剛創(chuàng)建的stm32libm3子目錄中。將固件庫librariescmsiscm3devicesupportststm32f10x目錄下的stm32f10x.h、system_stm32f10x.c、system_stm32f10x.h也拷貝到stm32libm3子

9、目錄中。將librariescmsiscm3devicesupportststm32f10xstartuparm下的啟動代碼也拷貝到application子目錄中。啟動文件有好幾個,筆者的stm32硬件芯片是stm32f103vet6,是屬于高密度的芯片,因此應(yīng)該拷貝startup_stm32f10x_hd.s。啟動開發(fā),啟動文件startup_stm32f10x_hd.s是程序開始的地方。2)接下來拷貝設(shè)備驅(qū)動程序。將librariesstm32f10x_stdperiph_driverinc目錄下的所有文件拷貝到stm32libinc目錄下。將librariesstm32f10x_stdp

10、eriph_driversrc目錄下的所有文件拷貝到stm32libsrc目錄下。3)拷貝外設(shè)中斷函數(shù)文件和固件庫配置文件拷貝固件庫的project stm32f10x_stdperiph_templat目錄下的文件stm32f10x_it.h、stm32f10x_it.c和stm32f10x_conf.h文件到application子目錄中。三實驗內(nèi)容熟悉mdk keil開發(fā)環(huán)境,構(gòu)建基于固件庫的工程,編寫代碼實現(xiàn)流水燈工程,按鍵后能改變流水燈速度。通過isp下載代碼到實驗板,查看運行結(jié)果。使用jlink下載代碼到目標板,查看運行結(jié)果,使用jlink在線調(diào)試。實驗原理根據(jù)教材。四實驗設(shè)備硬件

11、部分:pc計算機(宿主機)、亮點stm32實驗板、jlink。軟件部分:pc機windows系統(tǒng)、mdk keil軟件、isp軟件。五實驗步驟1. 熟悉mdk keil開發(fā)環(huán)境2. 熟悉串口編程軟件isp3. 查看固件庫結(jié)構(gòu)和文件4. 建立工程目錄,復(fù)制庫文件5. 建立和配置工程6. 編寫代碼7. 編譯代碼8. 使用isp下載到實驗板9. 測試運行結(jié)果10. 使用jlink下載到實驗板11. 單步調(diào)試12. 記錄實驗過程,撰寫實驗報告實驗三 串口發(fā)送和接收實驗一實驗簡介編寫代碼實現(xiàn)串口發(fā)送和接收,將通過串口發(fā)送來的數(shù)據(jù)回送回去。 二實驗?zāi)康恼莆誷tm32基本串口編程,進一步學(xué)習(xí)中斷處理。原理:

12、詳細內(nèi)容參考教材基于stm32的嵌入式系統(tǒng)原理與設(shè)計stm32的同步異步收發(fā)器usart和傳統(tǒng)的51單片機或pc即串行口uart稍有區(qū)別:通用同步異步收發(fā)器(usart)提供了一種靈活的方法與使用異步串行數(shù)據(jù)格式的外部設(shè)備之間進行全雙工數(shù)據(jù)交換。usart利用分數(shù)波特率發(fā)生器提供寬范圍的波特率選擇。 另外,它還允許多處理器通信。 usart也可以使用dma方式直接將接收的數(shù)據(jù)存儲到內(nèi)存或從內(nèi)存中批量發(fā)送數(shù)據(jù),也支持多種中斷方式。 接口通過三個引腳與其他設(shè)備連接在一起。接收數(shù)據(jù)輸入(rx)和發(fā)送數(shù)據(jù)輸出(tx)及地(gnd)。如果使用更復(fù)雜的功能,如硬件流控制的時候,需要更多的引腳。rx:接收數(shù)

13、據(jù)串行輸入。 tx:發(fā)送數(shù)據(jù)輸出。 串行異步通信usart庫函數(shù)串行通信庫函數(shù)在stm32f10x_usart.h中聲明,在stm32f10x_usart.c中實現(xiàn)。外設(shè)庫函數(shù)文件usart庫函數(shù)如下表所示:串行異步通信usart庫函數(shù)一覽函數(shù)名描述usart_deinit 將外設(shè)usartx寄存器重設(shè)為缺省值 usart_init 初始化外設(shè)usartx寄存器 usart_structinit 把usart_initstruct中的每一個參數(shù)按缺省值填入 usart_cmd 使能或者失能usart外設(shè) usart_itconfig 使能或者失能指定的usart中斷 usart_dmacmd

14、使能或者失能指定usart的dma請求 usart_setaddress 設(shè)置usart節(jié)點的地址 usart_wakeupconfig 選擇usart的喚醒方式 usart_receiverwakeupcmd 檢查usart是否處于靜默模式 usart_linbreakdetectlengthconfig 設(shè)置usart lin中斷檢測長度 usart_lincmd 使能或者失能usartx的lin模式 usart_senddata 通過外設(shè)usartx發(fā)送單個數(shù)據(jù)usart_receivedata 返回usartx最近接收到的數(shù)據(jù) usart_sendbreak 發(fā)送中斷字 usart_s

15、etguardtime 設(shè)置指定的usart保護時間 usart_setprescaler 設(shè)置usart時鐘預(yù)分頻 usart_smartcardcmd 使能或者失能指定usart的智能卡模式 usart_smartcardnackcmd 使能或者失能nack傳輸 usart_halfduplexcmd 使能或者失能usart半雙工模式 usart_irdaconfig 設(shè)置usart irda模式 usart_irdacmd 使能或者失能usart irda模式 usart_getflagstatus 檢查指定的usart標志位設(shè)置與否 usart_clearflag 清除usartx的待

16、處理標志位 usart_getitstatus 檢查指定的usart中斷發(fā)生與否 usart_clearitpendingbit 清除usartx的中斷待處理位三實驗內(nèi)容編寫主程序,初始化串口1,設(shè)置波特率為9600,無校驗,數(shù)據(jù)位8位,停止位1位。編寫中斷服務(wù)程序代碼實現(xiàn)將發(fā)送過來的數(shù)據(jù)回送。四實驗設(shè)備硬件部分:pc計算機(宿主機)、亮點stm32實驗板、jlink、示波器。軟件部分:pc機windows系統(tǒng)、mdk keil軟件、isp軟件、串口調(diào)試助手。五實驗步驟1編寫串口初始化代碼2編寫中斷服務(wù)程序代碼3編譯代碼,使用jlink或isp下載到實驗板4記錄實驗過程,撰寫實驗報告實驗四 串

17、口dma雙緩沖實驗一實驗簡介使用雙緩沖區(qū),同時進行串口數(shù)據(jù)接收和數(shù)據(jù)處理。二實驗?zāi)康募霸磉M一步掌握串口編程,進一步學(xué)習(xí)dma編程。學(xué)習(xí)使用雙緩沖兵乓操作,理解互斥資源。進一步學(xué)習(xí)使用dma和中斷,提高編程能力。原理:詳細內(nèi)容參考教材基于stm32的嵌入式系統(tǒng)原理與設(shè)計直接存儲器存取(dma)用來提供在外設(shè)和存儲器之間或者存儲器和存儲器之間的高速的無需cpu干預(yù)的數(shù)據(jù)傳輸。數(shù)據(jù)通過dma快速地移動,例如從串口到內(nèi)存,當在內(nèi)存中收到一定數(shù)量的數(shù)據(jù)時才發(fā)出一個中斷,cpu才放下手頭的工作去處理,這就節(jié)省了cpu的資源來做其他操作。 stm32有兩個dma控制器,其中dma1有7個通道,dma2有5

18、個通道,每個通道專門用來管理來自于一個或多個外設(shè)對存儲器訪問的請求。另外,還有一個仲裁器來協(xié)調(diào)各個dma請求的優(yōu)先權(quán)。stm32在硬件上設(shè)計了這么多的dma通道是煞費苦心的,用好dma控制器,可以大大的提高系統(tǒng)的吞吐量。在pc機上,將硬盤數(shù)據(jù)復(fù)制到內(nèi)存,就采用dma模式,把拷貝數(shù)據(jù)的任務(wù)交給dma來執(zhí)行,cpu就可以去做別的事情了。在stm32下也是如此,在編程中不采用dma模式,全靠cpu去辛苦勞作,是巨大的損失。要使用好dma控制器,首先要了解它。 dma框圖 stm32有一大堆的可以使用dma與內(nèi)存進行直接交互的外設(shè),但是只有2個dma控制器。這就導(dǎo)致,當外設(shè)要進行dma傳輸?shù)臅r候,首先

19、要獲得批準。當然,哪幾個外設(shè)可以使用哪些通道,是預(yù)先就設(shè)計好了的,在使用哪個通道的問題上就不需要過多考慮,但是編程人員必須認真對待這個問題,否則dma傳輸就用不起來。dma傳輸可以從內(nèi)存到外設(shè),也可以從外設(shè)到內(nèi)存,另外,內(nèi)存到內(nèi)存的dma傳輸也是允許的,這個很方便。大部分的外設(shè)是apb外設(shè),但是,也有兩個ahb外設(shè),以太網(wǎng)和usb可以參加,它們很需要高速的dma傳輸!dma傳輸要申請,有申請就得成立一個總裁機構(gòu),于是,兩個dma控制器都設(shè)立了仲裁委員會。獲得了批準的設(shè)備就可以在dma控制器的控制下,和內(nèi)存進行數(shù)據(jù)交換,但是數(shù)據(jù)傳輸?shù)姆较蛟谂鷾实臅r候就要填寫進申請表,還有一些其他的參數(shù)也要仔細填

20、寫進去(如傳輸?shù)臄?shù)據(jù)量,是按字傳輸還是半字、字節(jié)傳輸?shù)?,傳輸完成后是否發(fā)中斷等),批準后就嚴格按申請表的內(nèi)容進行數(shù)據(jù)傳輸。 當然,和一般的協(xié)議一樣,還有附加條款:當主人cpu需要訪問sram的時候,dma請求會暫停cpu訪問系統(tǒng)總線達若干個周期,總線仲裁器執(zhí)行循環(huán)調(diào)度,以保證cpu至少可以得到一半的系統(tǒng)總線(存儲器或外設(shè))帶寬。另外,可編程的數(shù)據(jù)傳輸數(shù)目最大為65535。 三實驗內(nèi)容假設(shè),有一個設(shè)備用rs232串行口以256000的波特率發(fā)送數(shù)據(jù),并且大概每80毫秒發(fā)送8個字節(jié)的數(shù)據(jù)。使用串口調(diào)試助手,仿真這個設(shè)備。要求將該設(shè)備發(fā)送的數(shù)據(jù)求平均值后送回。采用dma方式接收數(shù)據(jù),接收完成后發(fā)生中

21、斷,然后dma通道使用另一個緩沖區(qū)繼續(xù)接收數(shù)據(jù)。而這時cpu可以處理數(shù)據(jù),計算剛接收到數(shù)據(jù)的平均值。然后送回。這樣,cpu和dma并行工作。四實驗設(shè)備硬件部分:pc計算機(宿主機)、亮點stm32實驗板、jlink。軟件部分:pc機windows系統(tǒng)、mdk keil軟件、isp軟件、串口調(diào)試助手。五實驗步驟1編寫主程序代碼,創(chuàng)建2個緩沖區(qū),設(shè)置串口、dma。2編寫中斷服務(wù)程序代碼3編譯代碼,使用jlink或isp下載到實驗板4記錄實驗過程,撰寫實驗報告實驗五 i2c實驗一實驗簡介編程實現(xiàn)對使用i2c接口的epc02芯片進行寫和讀操作。二實驗?zāi)康募霸硎炀氄莆読2c編程,學(xué)會對epc02的讀寫

22、操作。原理:詳細內(nèi)容參考教材基于stm32的嵌入式系統(tǒng)原理與設(shè)計24c02是電可擦除prom,即eeprom,其容量是256 x 8bit,,即2k bits。24c02接口方式為兩線i2c接口。其總線時序如圖:圖124c02總線時序由圖可見, 24c02的讀寫時序完全采用i2c方式,因此,既然已經(jīng)實現(xiàn)了i2c驅(qū)動函數(shù),就可以調(diào)用這些函數(shù)來實現(xiàn)24c02的驅(qū)動。尋址24c02,它的地址應(yīng)該是什么呢?圖2 24c02地址格式因為在stm32實驗板上,將a2a1a0接地,那么a2,a1,a0三位都為0。最低位lsb為讀寫操作位,讀為高電平,寫為低電平。因此,寫地址為0xa0,讀地址為0xa1。如果

23、有多個24c02,那么應(yīng)該將a2a1a0連接到不同的電平,讓它們的地址不同,這樣就可以分別訪問。在寫操作的時候,首先給出啟動條件,然后向24c02發(fā)送器件地址,被尋址的24c02會應(yīng)答。在接收應(yīng)答成功后,再發(fā)送8位的字地址。24c02接收到這個地址后,會產(chǎn)生應(yīng)答, 接收到這個應(yīng)答后可以發(fā)送8位的數(shù)據(jù)。在接收到8位的數(shù)據(jù)后eeprom又會應(yīng)答,這時必須給出停止條件來結(jié)束。在進行讀操作的時候,流程基本相同,但需要在發(fā)送了器件地址和字地址,接收到應(yīng)答后,開始讀之前,發(fā)送一個啟動條件再發(fā)送一個寫地址給器件。三實驗內(nèi)容編寫i2c驅(qū)動程序,使用驅(qū)動程序初始化epc02,判斷設(shè)備正確性。寫256個0x5a到

24、epc02,讀出并發(fā)送給串口,通過串口調(diào)試助手判別是否讀到的都是0x5a.四實驗設(shè)備硬件部分:pc計算機(宿主機)、亮點stm32實驗板、jlink。軟件部分:pc機windows系統(tǒng)、mdk keil軟件、isp軟件、串口調(diào)試助手。五實驗步驟1參考教材i2c部分,編寫i2c驅(qū)動程序。2編寫主程序3編譯代碼,使用jlink或isp下載到實驗板4記錄實驗過程,撰寫實驗報告實驗六 spi flash實驗一實驗簡介編程實現(xiàn)對spi接口的w25q64進行讀寫操作。二實驗?zāi)康募霸硎炀氄莆誷pi編程,學(xué)會對的w25q64讀寫操作。原理:詳細內(nèi)容參考教材基于stm32的嵌入式系統(tǒng)原理與設(shè)計spi flas

25、h基本結(jié)構(gòu) 以spi接口的flash芯片w25q64為例來講解這一節(jié)。w25q64有32k個可編程的頁(page)組成,每個頁有256個字節(jié)??梢杂嬎阋幌拢?2k*256=8m字節(jié)。因此w25q64有8mbyte(64mbit)的可讀寫存儲空間,地址從0x0到0x7fffff。對于spi flash來說,頁是一次寫入的最小單位,編程中,一次可以對256字節(jié)的數(shù)據(jù)塊進行寫操作。16個頁組成一個扇區(qū)(sector),所以一個扇區(qū)就是4k,4096字節(jié)。在擦除操作的時候,可以一次擦除1個扇區(qū)(4k塊)、8個扇區(qū)(32kb塊)、16個扇區(qū)(64kb塊)或整個芯片!16個扇區(qū)可以組成一個64kb塊(bl

26、ock)。總結(jié)一下,在spi flash中,一個塊包含1個或多個扇區(qū),一個扇區(qū)又包含多個頁,而頁是編程的最小單位,但是擦除操作是以塊為單位的。當讀者使用不同的器件的時候,要閱讀這些器件的數(shù)據(jù)手冊??刂坪蜖顟B(tài)寄存器要對spi flash進行擦除、編程、設(shè)置等操作,就要編程讀寫其控制和狀態(tài)寄存器。對于w25q64而言,控制和狀態(tài)寄存器有sr1和sr2,其中sr2僅有最低位有效。表3w25q64控制和狀態(tài)寄存器寄存器位名稱功能描述sr2s8srp1保護方法,與wel組合可以配置為5種保護方式sr1s7srp0s6sec決定是以4kb塊還是以64kb的塊來進行保護。sec默認值是0,以64kb 的塊來

27、進行保護。 s5tb頂部/底部塊保護tb控制bp是從頂部開始還是底部開始。tb=0,從頂部開始,tb=1 從底部開始。 s4bp2寫這些位可以進行相應(yīng)的寫保護控制,讀這些位可以知道當前塊保護的狀態(tài)??梢员Wo整個芯片或者一部分,或不保護。 默認不保護s3bp1s2bp0s1welwel位當執(zhí)行完寫使能的時候置1。當芯片被寫禁止的時候清 0。也就是標志著芯片是否可寫。 s0busy忙標志當要向spi flash的指定地址寫數(shù)據(jù)的時候,首先要選中該芯片,然后透過spi接口向控制和狀態(tài)寄存器中寫寫使能指令,接著通過spi接口接收或發(fā)送數(shù)據(jù)。當執(zhí)行一個操作后,可以通過busy的狀態(tài)判斷spi flash

28、是否完成了這個操作。例如,擦除整個芯片是個非常費時的操作,可以間隔一段時間讀取busy位的狀態(tài)來判斷是否擦除完成。三實驗內(nèi)容1.編寫spi驅(qū)動程序2.初始化spi接口3.讀取spiflash的id,如果正確繼續(xù),否則報錯4.向spifalsh地址0x12ab00開始寫一串字符,再讀出比較判斷是否與寫入的一致5.向spifalsh地址0x12ab00開始寫連續(xù)256個字節(jié)的0x5a,然后讀出并發(fā)送給串口,通過串口調(diào)試助手判別是否讀到的都是0x5a.實驗原理根據(jù)教材。四實驗設(shè)備硬件部分:pc計算機(宿主機)、亮點stm32實驗板、jlink。軟件部分:pc機windows系統(tǒng)、mdk keil軟件

29、、isp軟件、串口調(diào)試助手。五實驗步驟1參考spi及spi flash部分,編寫spi及spi flash驅(qū)動程序。2編寫主程序3編譯代碼,使用jlink或isp下載到實驗板4記錄實驗過程,撰寫實驗報告實驗七 tf卡編程實驗一實驗簡介編程實現(xiàn)通過spi接口對tf卡進行讀寫操作。二實驗?zāi)康募霸盱柟蘳pi編程,學(xué)會對的tf卡讀寫操作。原理:詳細內(nèi)容參考教材基于stm32的嵌入式系統(tǒng)原理與設(shè)計tf卡即microsd卡,其體積比sd卡更小,目前廣泛應(yīng)用在嵌入式領(lǐng)域,具有體積小、速度快、存儲容量大的優(yōu)點。最典型的應(yīng)用是手機,通過tf卡來擴展存儲容量。目前市面上的tf卡容量大都在8g以上的。在第二章,設(shè)

30、計了tf卡的接口,將tf卡插入板子上的tf卡插槽,即可對其進行編程操作。tf卡可以采用spi接口,本實驗的內(nèi)容是編寫程序?qū)崿F(xiàn)使用spi接口對tf卡進行編程。將卡的重要操作的流程列出如下:1.卡的初始化流程: 1)初始化spi,將spi設(shè)置為低速模式。2) 發(fā)送至少74個周期的脈沖給tf卡。因主機上電后,所有sd 卡進入idle 狀態(tài)。至少74 個時鐘周期后才能開始總線傳輸。3)設(shè)置cs為低,發(fā)送命令cmd0,直到得到0x01的響應(yīng)信息,一直得不到則返回錯誤信息。4)發(fā)送cmd8,獲取電壓信息,查看是否為2.7到3.3,如不是則錯誤,返回錯誤信息。5)發(fā)送cmd55,然后發(fā)送acmd41,進行初

31、始化。若超時了仍不成功則返回錯誤信息,否則返回0。2.讀卡流程讀單塊流程為1)發(fā)送cmd17,收到0x00表示成功2)連續(xù)讀直到讀到開始字節(jié)0xfe3)讀512個字節(jié) 4)讀兩個crc偽crc字節(jié)(0xff)讀多塊方法: 1)發(fā)送cmd18讀,收到0x00表示成功 2)連續(xù)讀直到讀到開始字節(jié)0xfe 3)讀512字節(jié) 4)讀兩個crc字節(jié) 5)如果還想讀下一扇區(qū),重復(fù)2-4 6)發(fā)送cmd12來停止讀多塊操作3.寫卡流程寫單塊方法: 1)發(fā)送cmd24,收到0x00表示成功 2)發(fā)送時鐘,直到收到0xff 3).發(fā)送寫單塊開始字節(jié)0xfe 4).發(fā)送512個字節(jié)數(shù)據(jù) 5).發(fā)送2字節(jié)偽crc

32、0xff 6)發(fā)送0xff,如果讀到xxx00101表示數(shù)據(jù)寫入成功寫多塊方法: 1)發(fā)送cmd25,收到0x00表示成功 2)發(fā)送時鐘, 直到收到0xff 3)發(fā)送寫多塊開始字節(jié)0xfc 4)發(fā)送512字節(jié)數(shù)據(jù) 5)發(fā)送兩個crc 0xff 6)發(fā)送0xff,讀到xxx00101表示數(shù)據(jù)寫入成功 7)判斷是否讀完所有的塊,若未讀完轉(zhuǎn)到2)步驟 8)發(fā)送寫多塊停止字節(jié)0xfd來停止寫操作 9)進行忙檢測直到讀到0xff三實驗內(nèi)容1.編寫tf卡驅(qū)動程序(參考教材tf卡部分)2.tf卡檢測,檢測不到提示3.寫卡上地5個扇區(qū),寫512個0x0a 4.讀卡上低5個扇區(qū),將讀取內(nèi)容發(fā)送到串口,判斷是不是

33、512個0x0a四實驗設(shè)備硬件部分:pc計算機(宿主機)、亮點stm32實驗板、jlink。軟件部分:pc機windows系統(tǒng)、mdk keil軟件、isp軟件、串口調(diào)試助手。五實驗步驟1編寫tf卡驅(qū)動程序(可參考書上代碼)。2編寫主程序3編譯代碼,使用jlink或isp下載到實驗板4記錄實驗過程,撰寫實驗報告實驗八 tf卡fat32實驗一實驗簡介通過fat32文件系統(tǒng)實現(xiàn)對tf卡的文件操作。二實驗?zāi)康募霸盱柟蘳pi編程、tf卡讀操作。掌握fat32文件系統(tǒng),使用tinyff軟件包實現(xiàn)文件系統(tǒng)。原理:詳細內(nèi)容參考教材基于stm32的嵌入式系統(tǒng)原理與設(shè)計fatfs模塊由幾個文件組成,ff.c和

34、ff.h是比較大而全的文件,tff.c和tff.h是比較小的的袖珍版tiny fatfs,但也完全包含了文件和目錄讀寫功能且節(jié)約flash!另外就是硬件接口文件diskio.h和diskio.c。選擇袖珍版對于stm32比較合適,也完全夠用了。整理一下tiny fatfs的接口函數(shù)主要如下表所示:tiny fatfs接口函數(shù)函數(shù)名稱功能呢個fresult f_mount (byte, fatfs*)安裝或卸載邏輯驅(qū)動器fresult f_open (fil*, char*, byte)打開或創(chuàng)建文件 fresult f_read (fil*, void*, uint, uint*)讀文件fre

35、sult f_write (fil*, void*, uint, uint*)寫數(shù)據(jù)到文件fresult f_lseek (fil*, dword)移動文件指針 fresult f_close (fil*)關(guān)閉一個打開的文件 fresult f_opendir (dir*, char*)打開一個目錄fresult f_readdir (dir*, filinfo*) 讀一個目錄 fresult f_stat (char*, filinfo*)獲得文件信息 fresult f_getfree (char*, dword*, fatfs*)取得卡上剩余扇區(qū)數(shù)量 fresult f_truncate

36、 (fil*)切斷文件 fresult f_unlink (char*)刪除文件或目錄 fresult f_mkdir (char*)創(chuàng)建新的目錄fresult f_chmod (char*, byte, byte)改變文件屬性 fresult f_utime (char*, filinfo*) 修改文件或目錄的時間標簽 fresult f_rename (char*, char*) 重命名文件或目錄 tiny fatfs為stm32處理器嵌入式系統(tǒng)的文件管理提供了一種非常實用的解決方案!表中返回值fresult是一個枚舉類型,是為增強程序的可讀性,其實每個函數(shù)都返回一個整數(shù),為0表示成功,為

37、其他值時,根據(jù)返回值可以確定函數(shù)失敗的原因。三實驗內(nèi)容1.在工程中加入tff文件系統(tǒng)軟件包2.tf卡初始化并檢測,判斷tf卡類型和容量,輸出到串口 3.讀tf卡根目錄文件data.txt,用串口調(diào)試助手顯示該文件實驗原理根據(jù)教材。四實驗設(shè)備硬件部分:pc計算機(宿主機)、亮點stm32實驗板、jlink。軟件部分:pc機windows系統(tǒng)、mdk keil軟件、isp軟件、串口調(diào)試助手。五實驗步驟1參考教材tf卡fat32編程部分,編寫tf卡驅(qū)動程序(可參考書上代碼)。2編寫主程序3編譯代碼,使用jlink或isp下載到實驗板4記錄實驗過程,撰寫實驗報告實驗九 網(wǎng)絡(luò)ping實驗一實驗簡介通過u

38、ip網(wǎng)絡(luò)軟件包實現(xiàn)ping操作。二實驗?zāi)康募霸盱柟蘳pi編程。掌握通過spi接口與網(wǎng)絡(luò)接口芯片enc28j60通信。掌握使用uip實現(xiàn)arp與icmp協(xié)議, 實現(xiàn)主機ping通實驗板。原理:詳細內(nèi)容參考教材基于stm32的嵌入式系統(tǒng)原理與設(shè)計enc28j60 是帶有spi接口的獨立以太網(wǎng)控制器。 它可作為任何配備有spi 的控制器的以太網(wǎng)接口。enc28j60 符合ieee 802.3 的全部規(guī)范,采用了一系列包過濾機制以對傳入數(shù)據(jù)包進行限制。 它還提供了一個內(nèi)部dma 模塊,以實現(xiàn)快速數(shù)據(jù)吞吐和硬件支持的ip校驗和計算。 與主控制器的通信通過兩個中斷引腳和spi 實現(xiàn),數(shù)據(jù)傳輸速率高達10

39、 mb/s。兩個專用的引腳用于連接led,進行網(wǎng)絡(luò)活動狀態(tài)指示。enc28j60 由七個主要功能模塊組成:1. spi 接口充當主控制器和enc28j60 之間通信通道。2. 控制寄存器用于控制和監(jiān)視enc28j60。3. 雙端口ram緩沖器用于接收和發(fā)送數(shù)據(jù)包。4. 判優(yōu)器當dma、發(fā)送和接收模塊發(fā)出請求時對ram 緩沖器的訪問進行控制。5. 總線接口對通過spi 接收的數(shù)據(jù)和命令進行解析。6. mac (medium access control)模塊實現(xiàn)符合ieee 802.3 標準的mac 邏輯。7. phy(物理層)模塊對雙絞線上的模擬數(shù)據(jù)進行編碼和譯碼。enc28j60個寄存器說明

40、參見enc28k60數(shù)據(jù)手冊。icmp和arp是tcp/ip協(xié)議的一部分。icmp是網(wǎng)絡(luò)層的補充,可以回送報文,檢測網(wǎng)絡(luò)是否通暢。ping命令就是發(fā)送icmp的echo包,通過回送的echo relay進行網(wǎng)絡(luò)測試。通過提供icmp協(xié)議服務(wù),實現(xiàn)可以通過ping命令驗證嵌入式系統(tǒng)網(wǎng)絡(luò)的連通性。arp是地址解析協(xié)議,通過已知的ip,獲得對應(yīng)主機的mac地址。因為編程時是向目標ip地址發(fā)送數(shù)據(jù),而對方也需要知道本機的mac地址,因此必須使用arp協(xié)議。 uip可實現(xiàn)tcp/ip協(xié)議,由開源代碼組成。uip.h和uip.c為最核心的代碼,是主要的tcp/ip協(xié)議實現(xiàn)代碼。三實驗內(nèi)容在工程中加入uip

41、網(wǎng)絡(luò)軟件包編寫網(wǎng)絡(luò)接口芯片enc28j60驅(qū)動編寫uip底層移植代碼編寫代碼實現(xiàn)網(wǎng)絡(luò)連接在主程序中實現(xiàn)icmp輪詢 下載和測試四實驗設(shè)備硬件部分:pc計算機(宿主機)、stm32實驗板、jlink。軟件部分:pc機windows系統(tǒng)、mdk keil軟件、isp軟件。五實驗步驟1參考教材網(wǎng)絡(luò)編程部分,網(wǎng)絡(luò)接口芯片enc28j60驅(qū)動 (可參考書上代碼)。2.移植uip底層代碼,加入uip網(wǎng)絡(luò)軟件包到工程中3編寫主程序4編譯代碼,使用jlink或isp下載到實驗板,使用主機命令窗口向?qū)嶒灠灏l(fā)送ping命令查看反饋結(jié)果。5記錄實驗過程,撰寫實驗報告實驗十 網(wǎng)絡(luò)tcp/ip通信實驗一實驗簡介通過ui

42、p網(wǎng)絡(luò)軟件包實現(xiàn)于主機的tcp/ip通信。二實驗?zāi)康募霸盱柟蘳pi編程。掌握通過spi接口與網(wǎng)絡(luò)接口芯片enc28j60通信。掌握使用uip實現(xiàn)tcp/ip協(xié)議。原理:詳細內(nèi)容參考教材基于stm32的嵌入式系統(tǒng)原理與設(shè)計tcp是面向連接的通信協(xié)議,通過三次握手建立連接,通訊完成時要拆除連接,由于tcp是面向連接的所以只能用于點對點的通訊而不能用于廣播。tcp提供的是一種可靠的數(shù)據(jù)流服務(wù),采用“帶重傳的肯定確認”技術(shù)來實現(xiàn)傳輸?shù)目煽啃裕煽啃缘奶岣咭矌硭俣嚷娜秉c,在大量數(shù)據(jù)快速傳輸?shù)膱龊?,可以采用udp協(xié)議。對于tcp/ip協(xié)議,傳統(tǒng)的tcp/ip協(xié)議棧有很大的程序代碼段,運行時需要大量

43、的內(nèi)存資源,因此不適合運行在flash和sdram資源都有限的stm32系統(tǒng)上。如果象在pc機上開發(fā)網(wǎng)絡(luò)應(yīng)用那樣使用完整的tcp/ip協(xié)議棧,在嵌入式系統(tǒng)下行不通。因此在stm32系統(tǒng)上,既要使用tcp/ip 協(xié)議完成基本的操作,又必須適應(yīng)嵌入式系統(tǒng)開發(fā)的特殊性。采用uip來實現(xiàn)tcp/ip是一個不錯的選擇。uip是tcp/ip的子集,是專門針對嵌入式系統(tǒng)開發(fā)的,甚至在8位的單片機上都可以運行,而完全能夠處理基本的網(wǎng)絡(luò)傳輸功能。對它進行配置,可以使其在完成功能要求的基礎(chǔ)上,只占用它的幾k字節(jié)甚至幾百字節(jié)的flash和ram。uip可實現(xiàn)tcp/ip協(xié)議,由開源代碼組成。uip.h和uip.c為

44、最核心的代碼,是主要的tcp/ip協(xié)議實現(xiàn)代碼。對于uip.h和uip.c中的部分函數(shù)說明如下。要實現(xiàn)tcp/ip服務(wù)器功能,需加入tcp連接函數(shù),tcp回調(diào)函數(shù)。三實驗內(nèi)容在上一實驗工程基礎(chǔ)上,進一步編寫代碼實現(xiàn)tcp/ip網(wǎng)絡(luò)連接 使用tcp/ip協(xié)議發(fā)送和接收數(shù)據(jù)下載和測試四實驗設(shè)備硬件部分:pc計算機(宿主機)、亮點stm32實驗板、jlink。軟件部分:pc機windows系統(tǒng)、mdk keil軟件、isp軟件、網(wǎng)絡(luò)調(diào)試助手。五實驗步驟在上一實驗工程基礎(chǔ)上,進一步編寫代碼實現(xiàn)tcp/ip網(wǎng)絡(luò)連接 編寫主程序編譯代碼,使用jlink或isp下載到實驗板,使用網(wǎng)絡(luò)調(diào)試助手與實驗板建立連接

45、,向?qū)嶒灠灏l(fā)送數(shù)據(jù)和查看結(jié)果。記錄實驗過程,撰寫實驗報告實驗十一 dac單次發(fā)送實驗一實驗簡介通過dac將stm32系統(tǒng)的數(shù)字量轉(zhuǎn)換為模擬量,從端口送出。二實驗?zāi)康募霸碚莆蘸唵蔚膁ac編程。掌握對雙dac輸出端口同時操作。原理:詳細內(nèi)容參考教材基于stm32的嵌入式系統(tǒng)原理與設(shè)計stm32f103ve有2路12位帶緩沖的dac通道。adc和dac使用共同的參考輸入端vref+和vref-。dac還具有噪聲波生成和三角波生成功能. 圖dac框圖上圖為dac框圖,圖左上為觸發(fā)源選擇,右上為dac控制寄存器,最后在圖中下的dac轉(zhuǎn)換機構(gòu)進行轉(zhuǎn)換,轉(zhuǎn)換結(jié)果在dca_out引腳輸出。adc和dac使用

46、共同的參考輸入端vref+和vref-及共同的電源vdda。dac的寄存器信息,包括噪聲波生成和三角波生成功能,在stm32參考手冊有詳細介紹。dac庫函數(shù)dac庫函數(shù)在stm32f10x_dac.h中聲明,在stm32f10x_dac.c中實現(xiàn)。dac庫函數(shù)如下表所示:表3.8.1 dac庫函數(shù)一覽函數(shù)名描述dac_deinit將dac的寄存器重設(shè)為缺省值dac_init根據(jù)dac_initstruct中指定的參數(shù)初始化dac通道dac_structinit把dac_initstruct中的每一個參數(shù)按缺省值填入dac_cmd使能或者失能指定的通道xdac_itconfig使能或者失能指定的

47、通道x中斷dac_ dmacmd使能或者失能指定的dac通道的dma請求dac_softwaretriggercmd使能或者失能指定的dac通道的軟件觸發(fā)dac_dualsoftwaretriggercmd使能或者失能指定的兩個dac通道的軟件同步觸發(fā)dac_wavegenerationcmd使能或者失能指定的dac通道的波形發(fā)生器功能dac_setchannel1data設(shè)置dac通道1的數(shù)據(jù)保持寄存器dac_setchannel2data設(shè)置dac通道2的數(shù)據(jù)保持寄存器dac_setdualchanneldata設(shè)置dac通道1和2的數(shù)據(jù)保持寄存器dac_getdataoutputvalu

48、e返回dac通道上一次輸出dac_getflagstatus檢查dac標志是否設(shè)置dac_clearflag清除指定通道的dac事件等待標志dac_getitstatus檢查dac中斷是否發(fā)生dac_clearitpendingbit清除指定通道的dac中斷等待標志三實驗內(nèi)容1.編寫代碼實現(xiàn)簡單的dac單次發(fā)送。要求將0-4095的數(shù)字量依次轉(zhuǎn)換發(fā)出,步長10,發(fā)送周期1秒。2. 編譯下載到實驗板,運行調(diào)試3.撰寫實驗報告四實驗設(shè)備硬件部分:pc計算機(宿主機)、亮點stm32實驗板、jlink、萬用表。軟件部分:pc機windows系統(tǒng)、mdk keil軟件、isp軟件、串口調(diào)試助手五實驗步驟1編寫主程序2編譯代碼,使用jlink或isp下載到實驗板,使用串口調(diào)試助手跟蹤程序運行情況,使用哪個萬用表觀察輸出的電壓。3記錄實驗過程,撰寫實驗報告實驗十二 使用dac實現(xiàn)波形發(fā)生器實驗一實驗簡介通過dac將stm32系統(tǒng)的數(shù)字量轉(zhuǎn)換為模擬量,從端口送出。實現(xiàn)dac波形dma發(fā)送功能。即實現(xiàn)波形發(fā)生器。二實驗?zāi)康募霸韺W(xué)習(xí)使用dma方式發(fā)送波形數(shù)據(jù)到dac通道。原理:詳細內(nèi)容參考教材基于stm32的嵌入式系統(tǒng)原理與設(shè)計stm32的dac具有波形發(fā)生器功能,設(shè)置為波形輸出方式后就不需要象前面那樣需要cpu不停的操

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論