




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、基于stm32的溫度測量系統畢業設計1緒論12系統分析32stm32芯片32.2 ds18b2052.3 tftlcd62.4 atk-hc05 藍牙串口73便件設計83.1 mcu83.2 jtag 設計93.3 tftlcd電路設計94軟件設計104.1系統初始化104.1.1時鐘的初始化104.1.2 i/o 初始化114.1.3串口初始化134.1.4 dma 初始化154.1.5中斷初始化174.2模塊功能設計184.2.1 ds18b20 溫度模塊184.2.2 tftlcd 模塊設計214.2.3 atk-hc05 藍牙模塊245結果與總結26參考文獻301緒論隨著現代工業的不斷
2、發展,生產技術的不斷進步,對于產品的精度要求也不斷提高, 而溫度是人們生產生活屮十分關注的參數,對溫度的測量以及監控就顯得i分重要。在某 些行業中對溫度的要求較高,由于工作環境溫度的偏茅進而引發事故。如化工業中做酶的 發酵,必須吋刻了解所發酵酶的溫度才可以得到所需酶;文物的保護同樣也離不開溫度的 采集,不僅在文物出土的時刻,在i専物館和檔案館中,溫度的控制也是藏品保存關鍵,所 以溫度的檢測對其也是具有重要意義的;另外大型機房的溫度的采集,超出此范圍會影響 服務器或系統的止常工作等等。傳統方式監控溫度往往很耗費人力,而且實時性并。木文 就設計了一個基于stm32的溫度測量系統,在測量溫度的同時能
3、實現無線傳輸與控制。早期使用的是模擬溫度傳感器,如熱敏電阻,隨著環境溫度的變化,它的阻值也發生 線性變化,用處理器采集電阻兩端的電壓,然后根據某個公式就可計算出當前環境溫度。 而現在的溫度傳感器已經走向數字化,木次設計選用美國dallas半導體公司推出的數字 化溫度傳感器ds18b20,該芯片采用單-總線協議,僅占用一個i/o 口,直接將環境溫度轉 化成數字信號,以數字碼方式串行輸出。ds18b20數字溫度傳感器接線方便,封裝成后可 應用于多種場合,如管道式,螺紋式,磁鐵吸附式,不銹剛封裝式,型號多種多樣,有 ltm88th ltm8874等等。主要根據應用場合的不同而改變其外觀。封裝后的ds
4、18b20 耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設備數字測溫和控制 領域,如電纜溝測溫,高爐水循環測溫,鍋爐測溫,機房測溫,農業大棚測溫,潔凈室測 溫,彈藥庫測溫等各種非極限溫度場合mcu選用stm32rbt6,有測量精度高、操作簡單、價格低廉等優點。stm32系列基 于專為要求高性能、低成木、低功耗的嵌入式應用專門設計的arm cortex-m3內核。按性 能分成兩個不同的系列:stm32f103"增強型”系列和stm32f101 “基木型"系列。增強型系 列時鐘頻率達到72mhz,是同類產品中性能最高的產品;基本型時鐘頻率為36mhz,以 16位
5、產品的價格得到比16位產品大幅提升的性能,是16位產品用戶的最佳選擇。兩個系 列都內置32k到128k的閃存,不同的是sram的最大容量和外設接口的組合。吋鐘頻率 72mhz時,從閃存執行代碼,stm32功耗36ma,是32位市場上功耗最低的產品。同時 在編程方面stm32也具有和其他單片機的優勢之處,如51單片機必須從最底層開始編程, 而stm32所有的初始化和一些驅動的程序都是以模板的形式提供給開發者,在此開發者 只需要了些其他的模塊功能和工作方式和少量的語法知識便可以進行編程,此優勢不但節 約了時間,也為stm32的發展做出了強有力的鋪墊,而& stm32 g前是剛剛被作為主流
6、開發的單片機,所以其前景是無可估量的,這次畢業設計也是看好了其優越的發展趨勢來 選擇的。無線傳輸采用藍牙技術,將采集的溫度傳輸至終端,以此實現遠程監控。利用“藍牙" 技術,能夠在10米的半徑范圍內實現單點對多點的無線數據傳輸,其數據傳輸帶寬可達 imbpso通訊介質為頻率在2.402ghz到2.480ghz之間的電磁波。用跳頻頻譜擴展技術, 把頻帶分成若干個跳頻信道,在一次連接中,無線電收發器按偽隨機碼序列不斷地從一個 信道“跳''到另一個信道。硬件設計使用的是altium designer軟件,altium designer是原protel軟件開發商 altium公
7、司推出的一體化的電子產品開發系統。這套軟件把原理圖設計、電路仿真、pcb 繪制編輯、拓撲邏輯白動布線、信號完整性分析和設計輸出等技術進行了完美融合,使用 起來很方便。通過原理圖的繪制,對整體的結構有了更深一步的了解。軟件部分則是通過realview mdk來設計的,它是arm于2006年1月30 口推出的 針對各種嵌入式處理器的軟件開發工具。realview mdk集成了業內領先的技術,包括keil u vision3集成開發環境與realview編譯器。支持最新的cortex-m3核處理器,口動配置 啟動代碼,集成flash燒寫模塊,強犬的simulation設備模擬,可進行軟件仿真。軟件仿
8、 真時可以查看很多硬件相關的寄存器,通過觀察這些寄存器,就能很容易的檢杳代碼的功 能是否符合設計要求,出現錯誤時也方便找出原因。通過"ink連接處理器后,還能進行在 線調試,就能實時跟蹤程序在硬件上的執行狀況,可以進行復位、執行到斷點處、掛起、 執行進去、執行過去、執行出去等豐富的操作,例如,單步執行程序,就可以看到每一行 代碼在硬件的所起的效果,這樣更直觀,更方便對程序進行改進。這個功能在軟件設計的 過程中給予我極大的幫助,stm32的寄存器比較繁雜,使用時很容易遺漏某些部分,而在 線調試就容易找出問題所在,從而進行糾正。最后的成品較好的完成了預定的設計要求,能準確的顯示溫度數據,
9、能與移動終端實 現異步雙工通信,達到傳輸溫度和遠程控制的目的。通過本次設計,更加深入的理解了 stm32的相關寄存器,并掌握其工作原理。更加深 入的學習和應用一些工具軟件,如altium designer> realview mdk,通過對這些軟件的使 用,也加深了對相關知識的理解。本次的畢業設計題冃相關的知識包括:電路原理、模擬 電路、數字電路、c語言、單片機原理、通信原理等,有效的培養分析和解決實際問題的 綜合能力,得到更加全面的培養和鍛煉,使大學所學的基礎和專業知識可以再解決實際問 題中得到綜合的應用。2系統分析本系統是基于stm32微控制器所設計的溫度測量系統,通過溫度芯片ds1
10、8b20測量 溫度,微控制器張動液晶模塊顯示當前測得的溫度,然后由藍才將溫度信息發送至手機終 端,同時接收終端反饋的控制信息。整個系統模塊分為四個模塊:主芯片模塊、ds 18b20溫度模塊、液晶顯示、藍才模塊。 mcu是stm32主芯片的最小板,上面有芯片工作需要的最少資源:時鐘控制電路、復 位電路、jtag控制口以及與外圍電路相連的接口。ds 18b20和液晶分別是溫度測量、控 制顯示部分。而藍牙模塊負責完成與移動終端的異步雙工通信。2.1 stm32 芯片stm32系列基于專為耍求高性能、低成本、低功耗的恢入式應用專門設計的arm cortex-m3內核。按性能分成兩個不同的系列:stm3
11、2f103 “增強型”系列和stm32f101 “基木型”系列。增強型系列時鐘頻率達到72mhz,是同類產品中性能最高的產品;基木 型時鐘頻率為36mhz,以16位產品的價格得到比16位產品大幅提升的性能,是16位產 品用戶的最佳選擇。兩個系列都內置32k到128k的閃存,不同的是sram的最大容量和 外設接口的組合。時鐘頻率72mhz時,從閃存執行代碼,stm32功耗36ma,是32位市 場上功耗最低的產品,相當于0.5ma/mhzostm32的高性能cortex-m3內核為1.25dmips/mhz;含有一流的外設:lus的雙12 位adc, 4兆位/秒的uart, 18兆位/秒的spl
12、18mhz的i/o翻轉速度;在72mhz時消 耗36ma,待機時下降的2uao內核:arm32 位 cortex-m3 cpu,最高工作頻率 72mhz, 1.25dmips/mhz。單周期 乘法和便件除法。存儲器:片上集成32-512kb的flash存儲器。6-64kb的sram存儲器。時鐘、復位和電源管理:2.0-3.6v的電源供電和i/o接口的驅動電壓。por、pdr和 可編程的電壓探測器(pvd)。4-16mhz的晶振。內眾出廠而調校的8mhz rc振蕩電路。 內部40 khz的rc振蕩電路。用于cpu時鐘的pllo帶校準用于rtc的32khz的晶振。低功耗:3種低功耗模式:休眠,停止
13、,待機模式。為rtc和備份寄存器供電的vbato 調試模式:串行調試(swd)和jtag接口。dma: 12通道dma控制器。支持的外設:定時器,adc, dac, spi, iic和usart。 2個12位的us級的a/d轉換器(16通道):a/d測量范圍:0-3.6 vo雙采樣和保持 能力。片上集成一個溫度傳感器。2 通道 12 位 d/a 轉換器:stm32f103xc,stm32f103xd,stm32f103xe 獨有。最多高達112個的快速i/o端口:根據型號的不同,有26, 37, 51, 80,和112的i/o 端口,所有的端口都可以映射到16個外部中斷向量。除了模擬輸入,所有
14、的都可以接受5v以內的輸入。最多多達11個定時器:4個16位定時器,每個定時器有4個1c/oc/pwm或者脈沖 計數器。2個16位的6通道高級控制定時器:最多6個通道可用于pwm輸出。2個看門 狗定時器(獨立看門狗和窗口看門狗)。systick定時器:24位倒計數器。2個16位基木定 時器用于驅動daco最多多達 13 個通信接口: 2 個 iic 接口 (smbus/pmbus)o 5 個 us art 接 口(iso7816 接口, lin, irda兼容,調試控制)。3個spi接口 (18 mbit/s),兩個和iis復用。can 接口(2.0b)。usb 2.0 全速接口。sdio 接
15、口。ecopack封裝:stm32f103xx系列微控制器采用ecopack封裝形式。集成嵌入式flash和sram存儲器的arm cortex-m3內核。和8/16位設備相比,arm cortex-m3 32位risc處理器提供了更高的代碼效率。stm32f103xx微控制器帶有一個嵌 入式的arm核,所以可以兼容所有的arm工貝和軟件。嵌入式flash存儲器和ram存儲器:內置多達512kb的嵌入式flash,可用于存儲程 序和數據。多達64kb的域入式sram可以以cpu的時鐘速度進行讀寫(不待等待狀態)。可變靜態存儲器(fsmc): fsmc 嵌入在 stm32f103xc,stm32
16、f103xd,stm32f103xe 中,帶有4個片選,支持四種模式:flash,ram,psram,nor和nand。3個fsmc中斷 線經過or后連接到nvic。沒有讀/寫fifo,除pccard之外,代碼都是從外部存儲器 執行,不支持boot,目標頻率等于sysclk/2,所以當系統時鐘是72mhz時,外部訪問 按照36mhz進行。嵌套矢量中斷控制器(nvic):可以處理43個可屏蔽中斷通道(不包括cortex-m3 的16根中斷線),提供16個中斷優先級。緊密耦合的nvic實現了更低的中斷處理延遲, 直接向內核傳遞中斷入口向量表地址,緊密耦合的nvic內核接口,允許中斷提前處理, 對后
17、到的更高優先級的中斷進行處理,支持尾鏈,自動保存處理器狀態,中斷入口在中斷 退出時門動恢復,不需耍指令干預。外部中斷/事件控制器(exti):外部中斷/事件控制器由用于19條產生中斷/事件請求 的邊沿探測器線組成。每條線可以被單獨配置用于選擇觸發事件(上升沿,下降沿,或者 兩者都可以),也可以被單獨屏蔽。有一個掛起寄存器來維護中斷請求的狀態。當外部線 上出現長度超過內部apb2時鐘周期的脈沖時,exti能夠探測到。多達112個gpio連接 到16個外部中斷線。時鐘和啟動:在啟動的時候還是耍進行系統時鐘選擇,但復位的時候內部8mhz的晶 振被選用作cpu時鐘。可以選擇一個外部的4-16mhz的時
18、鐘,并ii會被監視來判定是否 成功。在這期間,控制器被禁止并且軟件中斷管理也隨后被禁止。同時,如杲有需要(例 如碰到一個間接使用的晶振失敗),pll時鐘的中斷管理完全町用。多個預比較器叮以用 于配置ahb頻率,包括高速apb(pb2)和低速apb (apb1),高速apb最高的頻率為 72mhz,低速apb最高的頻率為36mhzoboot模式:在啟動的時候,boot引腳被用來在3種boot選項種選擇一種:從用戶flash 導入,從系統存儲器導入,從sram導入。boot導入程序位于系統存儲器,用于通過 usart1重新對flash存儲器編程。電源供電方案:vdd ,電壓范圍為2.0v-3.6v
19、,外部電源通過vdd引腳提供,用于 i/o和內部調壓器。vssa和vdda,電壓范圍為2.0-3.6v,外部模擬電壓輸入,用于adc, 復位模塊,rc和pll,在vdd范圍之內(adc被限制在2.4v), vssa和vdda必須 相應連接到vss和vdd.vbat,電壓范圍為1&3.6v,當vdd無效時為rtc,外部32khz 晶振和備份寄存器供電(通過電源切換實現)。電源管理:設備有一個完整的上電復位(por)和掉電復位(pdr)電路。這條電路 一宜有效,用于確保從2v啟動或者掉到2v的時候進行一些必要的操作。當vdd低于一 個特定的卜限vpor/pdr時,不需耍外部復位電路,設備也
20、可以保持在復位模式。設備特 有一個嵌入的可編程電壓探測器(pvd), pvd用于檢測vdd,并且和vpvd限值比較, 當vdd低于vpvd或者vdd大于vpvd時會產生一個中斷。中斷服務程序可以產生一 個警告信息或者將mcu置為一個安全狀態。pvd由軟件使能。電壓調節:調壓器有3種運行模式:主(mr),低功耗(lpr)和掉電。mr用在傳 統意義上的調節模式(運行模式),lpr用在停止模式,掉電用在待機模式:調壓器輸出 為高阻,核心電路掉電,包括零消耗(寄存器和sram的內容不會丟失)。低功耗模式:stm32f103xx支持3種低功耗模式,從而在低功耗,短啟動時間和叮用 喚醒源z間達到一個最好的
21、平衡點。休眠模式:只有cpu停止工作,所有外設繼續運行, 在中斷/事件發生時喚醒cpu;停止模式:允許以最小的功耗來保持sram和寄存器的內 容。1.8v區域的時鐘都停止,pll, hsi和hserc振蕩器被禁能,調壓器也被置為止常 或者低功耗模式。設備可以通過外部中斷線從停止模式喚醒。外部中斷源可以使16個外 部中斷線pvd輸出或者trc警告。待機模式:追求最少的功耗,內部調壓器被關 閉,這樣1.8v區域斷電。pll,hsi和hserc振蕩器也被關閉。在進入待機模式之后,除 了備份寄存器和待機電路,sram和寄存器的內容也會丟失。當外部復位(nrst引腳), iwdg復位,wkup引腳出現上
22、升沿或者trc警告發生時,設備退出待機模式。進入停 止模式或者待機模式時,trcjwdg和相關的時鐘源不會停止。選型片的原則是:看功耗,本次設計的溫度系統需要在外場長時間工作,那么就需要 功耗較低;看成本,在能滿足性能耍求的而提下,選擇成本較低的。從這兩個方面來看,stm32功耗36ma,是32位市場上功耗最低的產品,相當于 0.5ma/mhz,時鐘頻率為36mhz,以16位產品的價格得到比16位產品大幅提升的性能, 綜合考慮,本次設計選用的mcu為stm32rbt6o2.2 ds18b20ds18b20是由dallas半導體公司推出的一種的“一線總線”接口的溫度傳感器。與 傳統的熱敏電阻等測
23、溫元件相比,它是一種新型的體積小、適用電壓寬、與微處理器接口 簡單的數字化溫度傳感器。一線總線結構具有簡潔且經濟的特點,可使用戶輕松地組建傳 感器網絡,從而為測量系統的構建引入全新概念。現場溫度直接以“一線總線”的數字方 式傳輸,大大提高了系統的抗干擾性。它能直接讀出被測溫度,并且可根據實際耍求通過 簡單的編程實現912位的數字值讀數方式。它工作在355 v的電壓范圍,采用多種封 裝形式,從而使系統設計靈活、方便,設定分辨率及用戶設定的報警溫度存儲在eeprom 中,掉電后依然保存。目而常用的單片機與外設z間進行數據傳輸的串行總線主要有i2c, spi和sci總線。 其中12c總線以同步串行二
24、線方式進行通信:一條時鐘線,一條數據線。spi總線則以同 步串行三線方式進行通信:一條時鐘線,一條數據輸入線,一條數據輸出線。sci總線是 以異步方式進行通信:一條數據輸入線,一條數據輸出線。而ds18b20的單總線采用單條 信號線,既可傳輸時鐘,又可傳輸數據,而且數據傳輸是雙向的,因而具冇線路簡單,駛 件開銷少,成本低廉,便于總線擴展和維護等優點。rom中的64位序列號是出廠前被光記好的,它可以看作是該ds18b20的地址序列碼, 每ds18b20的64位序列號均不相同。64位rom的排列是:前8位是產品家族碼,接著 48位是ds18b20的序列號,最后8位是詢面56位的循環冗余校驗碼(cr
25、c二x8+x5 +x4+1)。 rom作用是使每一個ds18b20都各不相同,這樣就可實現-根總線上掛接多個。ds18b20適應屯壓范圍寬,電壓范圍在3.05.5v,在寄生屯源方式下可由數據線供屯。 在使用中不需要任何外圍元件,全部傳感元件及轉換屯路繼承在形如一只三極管的集成屯 路內。可編程分辨率為912位,對應的可分辨溫度分別為0.5度,0.25度,0.125度,0.0625 度,可實現高精度測溫。2.3 tftlcdtft-lcd即薄膜晶體管液晶顯示器。其英文全稱為:thin film transistor-liquid crystal displayo液晶先后避開了困難的發光問題,利用液
26、晶作為光閥的優良特性把發光顯示器件 分解成兩部分,即光源和對光源的控制。作為光源,無論從發光效率、全彩色,還是壽命, 都已取得了輝煌的成果,而且還在不斷深化之屮。lcd發明以來,背光源在不斷地進步, 由單色到彩色,由厚到薄,由側置熒光燈式到平板熒光燈式。在發光光源方面取得的最新 成果都會為lcd提供新的背光源。隨著光源科技的進步,會有更新的更好的光源出現并 為lcd所應用。余下的就是對光源的控制,把半導體大規模集成電路的技術和工藝移植 過來,研制成功了薄膜晶體管(tft)生產工藝,實現了對液晶光閥的矩陣尋址控制,解 決了液晶顯示器的光閥和控制器的配合,從而使液晶顯示的優勢得以實現。tft-lc
27、d與無源tnlcd、stn-lcd的簡單矩陣不同,它在液晶顯示屏的每一個象 素上都設置有一個薄膜晶體管(tft),可有效地克服非選通時的串擾,使顯示液晶屏的靜 態特性與掃描線數無關,因此大大提高了圖像質量。tft-lcd也被叫做真彩液晶顯示器。tft實際上指的是薄膜晶體管,可以對屏幕上的各個獨立的像素進行控制。顯示屏由 許多可以發出任意顏色的光線的像索組成,只要控制各個像索顯示相應的顏色就能達到目 的了。在tftlcd中采用背光技術,為了能精確地控制毎一個像素的顏色和亮度就需要 在每一個像素之后安裝一個類似百葉窗的開關,當“百葉窗”打開時光線叮以透過來,而 “百葉窗”關上后光線就無法透過來。技
28、術上的實現就是利用了液品的特:性,在上卜兩層 都有溝槽,上層的是縱向排列,下層的是橫向排列,當不加電壓時液晶處于自然狀態,通 過適當的結構設計,光線從上層通過夾層后會發生90度的扭曲,從而能在下層順利通過, 加上電壓就會生成一個電場,使得液晶都垂宜排列,這時光線就無法通過下層。2.4 atk-hc05 藍牙串口atk-hc05模塊,是一款高性能主從一休藍牙串口模塊,可以同各種帶藍牙功能的電 腦、藍牙主機、手機、pda、psp等智能終端配對,該模塊支持非常寬的波特率范圍: 48001382400,并且模塊兼容5v或3.3v單片機系統,使用非常靈活、方便。在微微網建立之前,所有設備都處于就緒狀態。
29、在該狀態下,未連接的設備每隔1.28s 監聽一次消息,設備一旦被喚醒,就在預先設定的32個跳頻頻率上監聽信息。連接進程 由主設備初始化。如果一個設備的地址已知,就采用頁信息建立連接;如果地址未知,就 采用緊隨頁信息的查詢信息建立連接。在微微網中,無數據傳輸的設備轉入節能工作狀態。 主設備可將從設備設置為保持方式,此時,只有內部定時器工作;從設備也可以要求轉入 保持方式。設備由保持方式轉出后,可以立即恢復數據傳輸。連接兒個微微網或管理低功 耗器件時,常使用保持方式。監聽方式和休眠方式是另外兩種低功耗工作方式。藍牙基帶 技術支持兩種連接方式:面向連接(sco)方式,主要用于語音傳輸;無連接(acl
30、)方 式,主要用于分組數據傳輸。溫度數據就通過無連接方式傳輸。藍牙采用的是跳頻和時分多址技術。跳頻就是用偽隨機碼序列進行移頻鍵控,使載波 頻率不斷跳變而擴展頻譜的一種方法。在傳統的定頻通信系統屮,發射機屮的主振蕩器的 振蕩頻率是固定設置的,因而它的載波頻率是固定的。為了得到載波頻率是跳變的跳頻信 號,要求主振蕩器的頻率應能遵照控制指令而改變。這種產生跳頻信號的裝置叫跳頻器。 通常,跳頻器是由頻率合成器和跳頻指令發生器構成的。如果將跳頻器看作是主振蕩器, 則與傳統的發信機沒有區別。被傳送的信息可以是模擬的或數字的信號形式,經過調制器 的相應調制,便獲得副載波頻率固定的已調波信號,再與頻率合成器輸
31、出的主載波頻率信 號進行混頻,其輸出的已調波信號的載波頻率達到射頻通帶的要求,經過高通濾波器后饋 至天線發射出去。這就是定頻信號的發送過程。而時分多址就是把時間分割成互不重疊的 幀,再將幀分割成互不重疊的時隙(信道)與用戶具有一一對應關系,依據時隙區分來自 不同地址的用戶信號,從而完成的多址連接。3硬件設計3.1 mcumcu選用的stm32rbt6, 64引腳。排阻p3和pl分別用于porta和portb的io 口引出,其中p2還有部分用于portc 口的引出。porta和portb都是按順序排列的。p2連接了 ds18b20的數據口以及紅外傳感器的數據線,它們分別對應著pa0和pa1, 只
32、需要通過跳線帽將p2和p3連接起來就可以使用了。這里不直接連在一起的原因有二: 1,防止紅外傳感器和ds18b20對這兩個io 口作為其他功能使用的時候的影響;2,ds18b20 和紅外傳感器還可以用來給其他板子提供輸入。p4 口連接了 pl2303的串口輸出,對應著stm32的串口 1 (pa9/pa10),在使用的時 候,也是通過跳線帽將這兩處連接起來。這樣設計使得pa9和pa10用作其他用途使用的 時候,不受到pl2303的影響。p5 口是另外一個10引出排陣,將portc和portd等的剩余10 口從這里引出。“ovt 3lookrooto 三1c0ktatjitzh7if)0礙5a7
33、":a:fmts xumgxdal2pa0-wkupfbopa1pb19a1pb2 boot1pa3pb3 e>0pa41b4 jxtkstpa5fb5皿fb<<wzupbs3pa10>biopa1:mi;a:1fb:2pb:3rrckswcuc皿4paisrroio乂 » toopcoo5c olttd1fc1fd2fc22bootofc4pxjist心pc"pc3ppc10pctlpcupc:3.tamp£kjttc心40乂32聲vbat25602 oltvdd 1vu 1bd 2vss 2vdd 3vu 3vdd 4vss
34、4vddavisatci>pt7oot:.m jjcxczmlci>.d5 孚工lci> h滬.x妄1亡>12n>-zh325d2d:4tcd"d:5gd10443:«-c1jlcicl<2 - _|104104 3 3三於hcsoo- »»t*t-4 -5 - 6 =tci> wk孕.kilci> blc2122圖3.1 mcu原理圖3.2 jtag 設計jtag(joint test action group;聯合測試行動小組)是一種國際標準測試協議(ieee 1149.1兼容),主要用于芯片內部測試。
35、標準的jtag接口是4線:tms、tck、tdl tdo, 分別為模式選擇、吋鐘、數據輸入和數據輸出線。gnd圖3. 2 jtag原理圖3.3 tftlcd電路設計tftlcd采用34引腳,部分對應關系為:lcd_led對應pc10; lcd_cs對應pc9;lcd.rs 對應 pc8; lcd.wr 對應 pc7; lcd.rd 對應 pc6; lcd_d17: 1;對應 pb15:0t_pen 嚴4.tcgndc29 lufr31iklcd cs 1reset tlcd_d15t,cdzd3 ? t,cdzd51 lcdzdht lcdzdqjt t.cddirlcd d1k>lcd
36、_d131t,cdzbi23vcc3.3 ?77tflso29t cs 33lcd_csrswrclkrdrstdb1db2db3db4db5db6db7db8db10dbudb12db13db14db15de 16db17gndblvdd3.3vdd3.3gndgndel-vddnflsomosit-penmot csclklcd1tft lcd2_lcdrs4 lcd"rd6 lcd do8 lcd_d2 u) lcdzd4u lcdj>6 "14 lcdzds "16 lcdidiou lcdzd12 20 lcd"d1422 102324
37、vcc3 .31042628 vcc5k30i30 t mosi11043234 t sckgnd圖3.3 tftlcd原理圖4軟件設計軟件設計部分,包插兩大部分:初始化和功能性設計。4.1系統初始化4.1.1時鐘的初始化時鐘是mcu的驅動源,而stm32有三種不同的時鐘源來驅動系統時鐘:hsi振蕩器 時鐘、hse振蕩器時鐘、pll時鐘。hsi時鐘信號由內部8mhz的rc振蕩器產生,可在 2分頻后作為pll輸入,hse即高速外部時鐘信號由兩種時鐘源產生:hse外部晶體/陶 瓷諧振器、hse用戶外部時鐘。而我選用的是pll時鐘。主pll以hsi時鐘除以2或hse 通過一個可配置分頻器的pll2時
38、鐘來倍頻后輸出。pll2和pll3由hse通過一個可配置 的分頻器提供時鐘。必須在使能每個pll之前完成pll的配置(選擇時鐘源、預分頻系數 和倍頻系數等),同時應該在它們的輸入時鐘穩定(就緒位)后才能使能。一旦使能了 pll, 這些參數將不能再被改變。當改變主pll的輸入時鐘源時,必須在選中了新的時鐘源(通 過時鐘配置寄存器(rcc_cfgr)的pllsrc位)z后才能關閉原來的時鐘源。時鐘中斷寄存 器(rcc_cir),可以在pll就緒時產生一個中斷。其代碼如下:系統時鐘初始化函數pll:選擇的倍頻數,從2開始,最大值為16void stm32_clock_init(u8 pll)unsi
39、gned char temp=0;myrcc_deinit(); 復位并配置向量表 rcc->cr|=0x00010000; 外部高速時鐘使能 hseon while(!(rcc->cr»17);/等待外部時鐘就緒 rcc->cfgr=0x00000400; /apb 1/2=div2;ahb=div1;pll-=2;/抵消2個單位rcc->cfgr|=pll«1 & 設置 pll 值 216 rcc->cfgr|=1«16; /pllsrc on flash>acr|=0x32; /flash 2 個延時周期 rcc-
40、>cr|=0x01000000; /pllon while(!(rcc->cr»25);/等待 pll 鎖定 rcc->cfgr|=0x00000002;/pll 作為系統時鐘 while(temp!=0x02)/等待pll作為系統時鐘設置成功temp=rcc->cfgr»2; temp&=oxo3;stm32_clock_init函數只有一個變量pll,就是用來配置時鐘的倍頻數的,當前所用 的晶振為8mhz, pll的值設為9,那么stm32將運行在72m的速度卜此外,在程序中經常用到延時函數,利用cm3內核的處理器內部包含的systick
41、定時 器來實現延時,它是一個24位的倒計數定時器,當記到0時,將從reload寄存器中自 動重裝載定時初值。只要不把它在systick控制及狀態寄存器中的使能位清除,就永不停 息。使用systick來實現延時,既不占用中斷,也不占用系統定時器。4.1.2 i/o初始化每個gpi/o端口有兩個32位配置寄存器(gpiox_crl, gpiox_crh),兩個32位數據 寄存器(gpiox_idr和gpiox_odr), 個32位置位/復位寄存器(gpiox_bsrr), 一個16 位復位寄存器(gpiox_brr)和一個32位鎖定寄存器(gpiox_lckr)。gpio端口的毎個位可以由軟件分別
42、配置成多種模式:輸入浮空、輸入上拉、輸入 下拉、模擬輸入、開漏輸岀、推挽式輸出、推挽式復用功能、開漏復用功能。每個i/o 端口位可以自由編程,然而i/o端口寄存器必須按32位字被訪問(不允許半字或字節訪問)。 gpiox_bsrr和gpiox_brr寄存器允許對任何gpio寄存器的讀/更改的獨立訪問;這樣, 在讀和更改訪問之間產生irq時不會發生危險。下圖給出了一個i/o端口位的基本結構。,模擬輸入 至片上外設:復用功能輸入讀出ttl肖特基 觸發器"ivss _ _vss推挽開漏 或關閉j輸出 控制vddi保護二極管 i/o引腳a保護 丁二極管 vss來自片上外設復用功能輸出ai 1
43、4781圖4.1 i/o端口結構首先為了方便函數的編寫,進行io 口的地址映射,如下(列舉部分):#define bitband(addr , bitnum) (addr &0xf0000000)+0x2000000+(addr& 0xfffff)«5)+(bitnum«2)#define mem_addr(addr) (volatile unsigned long *)(addr)#define bit_addr(addr, bitnum) mem_addr(bitband(addr, bitnum)/io i地址映射 #define gpioa_odr_
44、addr (gpioa_base+12) /0x4001080c #define gpiob_odr_addr (gpiob_base+12) /0x40010c0c在使用io 口前需要使能相應端口的時鐘,然后配置它的模式。與配置相關的兩個寄 存器位crl, crh,其結構如卜所示31302928272625242322212019181716cnf71:om0de7l:0cnf6l:0m0de6l:0cnf5l:0m0de5l:0cnfl11:0m0de4l:0rwrw1514rwrw1312rwrw11 10rwrw98rwrw76rwrw54rwrw32rwrw1 0cnf31:om0d
45、e3l:0cnf21:om0de2l:0cnfl1:0mode11:0cnfo1:omodeo1:orwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw位31:3027:2623:2219:1815:1411:107:63:2cnfyfl :0:端口x配置位在輸入模式下(mode1:o=oo):00:模擬輸入模式01:浮空輸入模式10:±拉/下拉輸入模式11:保留在輸出模式下(m0del:0>00):00:通用推挽輸出模式01:通用開漏輸出模式10:復用功能推挽輸出模式11:復用功能開漏輸出模式位29:2825:2421:2017:1613:12 9:8 5:41:
46、0m0deyl:0;nx 的模式位00:輸入模式01:輸出模式,最大速度10mhz10:輸出模式,最大速度2mhz11:輸岀模式,最大速度50mi1z圖4.2 crl/crh寄存器結構該寄存器的復位值為0x4444 4444,從上圖可以看到,復位值英實就是配置端口為浮空 輸入模式。從上圖述可以得出:stm32的crl控制著每個io端口(ag)的低8位的模 式。每個10端口的位占用crl的4個位,高兩位為cnf,低兩位為modeo這里我們可 以記住幾個常用的配置,比如0x0表示模擬輸入模式(adc用)、0x3表示推挽輸出模式 (做輸出口用,50m速率)、0x8表示上/下拉輸入模式(做輸入口用)、
47、0xb表示復用輸iii (使用io 口的第二功能,50m速率)。crh的作用和crl完全一樣,只是crl控制的是低8位輸出口,而crh控制的是 高8位輸出口。rcc->apb2enr|=1«2; 使能 porta 時鐘 rcc->apb2enr|=1«5; 使能 portd 時鐘gpioa->cr h&=0xfffffff0; gpioa->crh|=0x00000003;/pa8 推挽輸出 gpioa->odr|=1 «8;/pa8 輸出高gpiod->crl&二 0xfffff0ff; gpiod->c
48、rl|=0x00000300;/pd2 推挽輸出 gp1od->odr|= 1 «2;/pd2 輸出高這里pa2與pd2分別對應led0和ledk此外,按鍵的初始化也就是對i/o進行設 置,keyo與keyl分別對應pa13和pa15,都設置為上拉輸入。rcc->apb2enr|=1«2; /使能 porta 時鐘gpioa->crh&=0x000fffff;gpioa->crh|=0x80800000; /pa13,15 設置為輸入 gp1oa->odr|=1«13;/pa 13 上拉gpioa->odr|=1
49、1;15;/pa 15 上拉4.1.3串口初始化本次設計屮藍牙的收發都是通過串口傳至stm32內,串口最基本的設置,就是波特 率的設置。stm32的串口使用需要開啟了串口時鐘,并設置相應10 口的模式,然后配置 一下波特率,數據位長度,奇偶校驗位等信息。具體步驟如下。串口時鐘使能。串口作為stm32的一個外設,其時鐘由外設時鐘使能寄存器控制, 其中串口 1是在apb2enr寄存器的第14位。除了串口 1的時鐘使能在apb2enr寄存器, 其他串口的時鐘使能位都在apb1enr寄存器。串口復位。當外設出現異常的時候可以通過復位寄存器里面的對應位設置,實現該外 設的復位,然后重新配置這個外設達到讓
50、其重新工作的目的。一般在系統剛開始配置外設 的時候,都會先執行復位該外設的操作。串口 1的復位是通過配置apb2rstr寄存器的第 14位來實現的。串口波特率設置。每個串口都有一個自己獨立的波特率寄存器usart_brr,通過設 置該寄存器就可以達到配置不同波特率的目的。串口控制。stm32的每個串口都有3個控制寄存器usart_cr13,串口的很多配置 都是通過這3個寄存器來設置的。2a 222120】9 1r 1716保留沾 14131213|l» b 765432 i gdepceffiureiehiepxxeteresbk圖4.3 usart.cr寄存器各位描述該寄存器的高1
51、8位沒有用到,低14位用于串口的功能設置。ue為串口使能位,通 過該位置1,以使能串口。m為字長選擇位,當該位為0的時候設置串口為8個字長外加 n個停止位,停止位的個數(n)是根據usart_cr2的13:12位設置來決定的,默認為0。 pce為校驗使能位,設置為0,則禁止校驗,否則使能校驗。ps為校驗位選擇,設置為0 則為偶校驗,否則為奇校驗。txie為發送緩沖區空中斷使能位,設置該位為1,當 usart.sr屮的txe位為1時,將產生串口中斷。tcie為發送完成屮斷使能位,設置該 位為1,當usart_sr中的tc位為1時,將產生串口中斷。rxneie為接收緩沖區非空 中斷使能,設置該位為
52、1,當usart_sr中的ore或者rxne位為1時,將產生串口屮 斷。te為發送使能位,設置為1,將開啟串口的發送功能。re為接收使能位,用法同te。數據發送與接收。stm32的發送與接收是通過數據寄存器usart_dr來實現的,這 是一個雙寄存器,包含了 tdr和rdr。當向該寄存器寫數據的時候,串口就會自動發送, 當收到收據的時候,也是存在該寄存器內。該寄存器的各位描述如下圖所示::i:waw27ytn呂凡工増 *譽 ml2f* in in 17 m保留3au13ubl40um.7an.43u1ciortsr 01r*w rw r*wr*wi*wrwi*wrwi*w圖4.4 usart_
53、dr寄存器各位描述串口狀態。串口的狀態可以通過狀態寄存器usartsr讀取。usartsr的各位描 述如下圖所示:ni27sfian242322 212f>upi a17ifi保留21 lia1311inq7afl13j1nctslddtxetcrxnefdu-orefepe圖4.5 usart_sr寄存器各位描述rxne(讀數據寄存器非空),當該位被置1的時候,就是提示己經有數據被接收到了, 并且可以讀出來了。這時候我們耍做的就是盡快去讀取usart_dr,通過讀usart_dr 可以將該位清零,也可以向該位寫0,宜接清除。tc (發送完成),當該位被置位的時候,表示usart.dr內
54、的數據已經被發送完成了。如 果設置了這個位的中斷,則會產生中斷。該位也有兩種清零方式:1)讀usart_sr,寫 usart_dro 2)直接向該位寫0。代碼如下:void uart_init(u32 pclk2,u32 bound)float temp;ul6 mantissa;ul6 fraction;temp=(float)(pclk2*1000000)/(bound* 16);/得到 usartdiv mantissa=temp;得到整數部分fraction=(temp-mantissa) *16;/ 得到小數部分mantissa«=4;mantissa+=fraction;
55、rcc->apb2enr|=1«2; 使能 porta 口時鐘 rcc->apb2enr|= 1«14; 使能串 口時鐘gpioa->crh&=oxfffffoof;/io 狀態設置gpioa->crh|=0x000008b0;rcc->apb2rstr|= 1«14;復位串口 1rcc->apb2rstr&二(1«14);/停止復位波特率設置usartl->brr=mantissa; /波特:率設置usartl->crl|=0x200c; 1 位停止,無校驗位#ifen_usartl_rx
56、使能接收中斷usart1->cr1|=1«8; /pe 中斷使能usart1->cr1|=1«5;接收緩沖區非空中斷使能my_nvic_init(3,3,usartl_irqchannel,2);/組 2,最低優先級#endif4.1.4 dma初始化dma全稱為:direct memory access,即直接存儲器訪問。dma傳輸方式無需cpu 直接控制傳輸,也沒有像中斷處理方式那樣保留現場和恢復現場的過程,而是通過碩件為 ram與i/o設備開辟一條直接傳送數據的通路。本次設計在發送藍牙數據時就采用了 dma 方式。stm32rbt6有一個dma控制器,dma有7個通道,每個通道專門用來管理來自于 一個或多個外設對存儲器訪問的請求。此外,還有一個仲裁器來協調齊個dma請求的優 先權。在發生一個事件后,外設向dma控制器發送一個請求信號。dma控制器根據通道 的優先權處理請求。當dma控制器開始訪問發出請求的外設時,dma控制器立即發送給 它一個應答信號。當從dma控制器得到應答信號時,外設立即釋放它的請求。一旦外設 釋放了這個請求,dma控制器同時撤銷應答信號。如果有更多的請求時,外設可以啟動 下一個周期。總體來說,每次dma傳送由以下操作組成:從外設
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權】 ISO/IEC GUIDE 51:2014 EN Safety aspects - Guidelines for their inclusion in standards
- 小草的力量議論文題材作文(9篇)
- 體育產業市場規模預測表
- 印章管理考試試題及答案
- 六一兒童節公司活動方案
- 六一創意班級活動方案
- 六一活動陪玩活動方案
- 六一游學活動方案
- 六一美甲店活動方案
- 六一節活動餐飲活動方案
- DL-T5002-2021地區電網調度自動化設計規程
- 2024年個人信用報告(個人簡版)樣本(帶水印-可編輯)
- 走近攝影智慧樹知到期末考試答案2024年
- 浙江省杭州市上城區2022-2023學年六年級下學期期末語文試題
- 寧德時代2024年社招測評題庫
- 大學生就業指導智慧樹知到期末考試答案2024年
- 試驗檢測單位安全培訓課件
- JBT 9848-2023 氣鎬 標準(正式版)
- 說寫做一致暨工藝紀律遵守課件
- 《國家電網公司電力安全工作規程(水電廠動力部分)》(一)
- 無菌技術操作規范護理課件
評論
0/150
提交評論