




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
第7單元:閃燈的設計與實現(xiàn)第8單元:開關(guān)狀態(tài)指示燈的設計與實現(xiàn)第9單元:利用定時中斷實現(xiàn)頻閃燈第10單元:利用PWM實現(xiàn)小燈亮度控制第11單元:利用UART實現(xiàn)上位機和下位機的通信第12單元:利用ADC設計簡易數(shù)字電壓表汽車嵌入式技術(shù)基礎篇
第7單元
閃燈的設計與實現(xiàn)
在汽車中,燈光除了用于照明,還被廣泛用于狀態(tài)指示(如交通信號燈、汽車指示燈、設備狀態(tài)指示燈等)。在嵌入式系統(tǒng)中,LED小燈是必備的狀態(tài)指示設備。【單元導讀】
單元學習目標:通過編程,使微控制器點亮一個LED小燈,在此基礎上再實現(xiàn)流水燈的效果。第7單元
閃燈的設計與實現(xiàn)
單元學習任務:(1)熟悉嵌入式系統(tǒng)的組成以及嵌入式技術(shù)學習方法。(2)熟悉車規(guī)級微控制器KEA128的芯片資源和硬件最小系統(tǒng)。(3)理解通用輸入/輸出(GPIO)的通用知識,掌握GPIO底層驅(qū)動構(gòu)件頭文件的使用方法。(4)掌握小燈硬件構(gòu)件和軟件構(gòu)件的使用方法。(5)掌握在嵌入式軟件最小系統(tǒng)的框架下實現(xiàn)LED小燈閃爍的應用層程序設計方法,并在此基礎上,自行完成流水燈的應用層程序設計。(6)掌握嵌入式軟件集成開發(fā)環(huán)境KeilMDK及目標程序下載軟件J-Flash的使用方法,以便為后續(xù)的學習奠定良好的基礎。任務7.1熟悉嵌入式系統(tǒng)的組成及嵌入式技術(shù)學習方法7.1.1嵌入式系統(tǒng)的組成
目前,ARM主要有以下3個系列的內(nèi)核,對應不同的應用領域:(1)Cortex-A內(nèi)核的應用處理器(ApplicationProcessor,AP),主要面向智能手機、平板電腦、智能終端等多媒體領域;(2)Cortex-R內(nèi)核的實時處理器(Real-TimeProcessor,RTP),主要面向汽車電子等對實時性要求很高的領域;(3)Cortex-M內(nèi)核的微控制器(MicroControllerUnit,MCU,國內(nèi)也稱為單片機),主要面向汽車電子、工業(yè)控制、農(nóng)業(yè)控制、智能儀器儀表、智能家電、機電產(chǎn)品等測控領域。
在緒論中,曾介紹過嵌入式系統(tǒng)的概念。目前,以32位/64位ARM微處理器為核心的嵌入式系統(tǒng)應用越來越廣泛。1、ARM微處理器的分類7.1.1嵌入式系統(tǒng)的組成2、MCU的基本結(jié)構(gòu)
MCU的基本含義:在一塊芯片上集成了CPU、ROM、RAM、定時/計數(shù)器、中斷系統(tǒng)、看門狗及通用輸入輸出(GPIO)、模/數(shù)(A/D)轉(zhuǎn)換、數(shù)/模(D/A)轉(zhuǎn)換、串行通信I/O等多種輸入輸出接口的比較完整的數(shù)字處理系統(tǒng)。CPU與其他部件交互是通過MCU內(nèi)部總線實現(xiàn)的。任務7.1熟悉嵌入式系統(tǒng)的組成及嵌入式技術(shù)學習方法7.1.1嵌入式系統(tǒng)的組成3、以MCU為核心的嵌入式系統(tǒng)的基本組成任務7.1熟悉嵌入式系統(tǒng)的組成及嵌入式技術(shù)學習方法7.1.2嵌入式系統(tǒng)的知識體系和學習建議任務7.1熟悉嵌入式系統(tǒng)的組成及嵌入式技術(shù)學習方法
嵌入式硬件構(gòu)件設計主要包括MCU硬件最小系統(tǒng)(硬件核心構(gòu)件)設計和應用外設硬件構(gòu)件(小燈LIGHT、蜂鳴器BZ、開關(guān)SW、鍵盤KB、數(shù)碼管LED、液晶LCD等)設計。
嵌入式軟件構(gòu)件設計采用分層設計思想,自下而上依次是“底層驅(qū)動構(gòu)件”、“應用外設軟件構(gòu)件”和“應用層軟件構(gòu)件”共3層軟件設計。為了實現(xiàn)嵌入式系統(tǒng)設計的可移植和可復用,大幅度降低嵌入式技術(shù)學習難度和開發(fā)難度,嵌入式硬件和軟件均需采用“構(gòu)件化”設計。
其中底層驅(qū)動構(gòu)件和應用外設軟件構(gòu)件都包括對應的.h頭文件和.c源文件,而應用層軟件構(gòu)件包括總頭文件includes.h、主程序源文件main.c和中斷服務程序源文件isr.c。
通用軟件構(gòu)件與CPU和MCU基本無關(guān),是服務于以上3層軟件設計的。
隨著技術(shù)的發(fā)展,MCU的硬件集成度越來越高,使得嵌入式硬件設計難度不斷降低,因此嵌入式軟件設計在整個嵌入式系統(tǒng)開發(fā)中所占的分量越來越大。7.1.2嵌入式系統(tǒng)的知識體系和學習建議任務7.1熟悉嵌入式系統(tǒng)的組成及嵌入式技術(shù)學習方法
嵌入式軟件設計主要采用C語言及少量的匯編語言。
嵌入式軟件設計與調(diào)試是在嵌入式硬件的基礎上協(xié)同進行的,其過程是在PC上利用嵌入式軟件開發(fā)環(huán)境(如KeilMDK、IAR等)進行程序的編輯、編譯和連接,生成工程對應的目標代碼;最后將生成的目標代碼通過寫入器下載到嵌入式芯片中運行與調(diào)試。MCU寫入器任務7.2熟悉KEA128資源和硬件最小系統(tǒng)KinetisEA(簡稱KEA)系列MCU是恩智浦公司開發(fā)的基于ARMCortex-M0+(簡稱CM0+)內(nèi)核的車規(guī)級MCU。任務7.2熟悉KEA128資源和硬件最小系統(tǒng)
片內(nèi)Flash區(qū)(0x0000_0000~0x0001_FFFF),共128KB,一般被用來存放中斷向量、程序代碼、常數(shù)等,其中前192B為中斷向量表(中斷函數(shù)的入口地址)。
片內(nèi)RAM區(qū)(0x1FFF_F000~0x2000_2FFF),共16KB,一般被用來存儲全局變量、靜態(tài)變量、臨時變量(堆??臻g)等。1、KEA128的存儲映像
KEA128把CM0+內(nèi)核之外的模塊用類似存儲器編址的方式統(tǒng)一分配地址。在4GB的存儲映像空間內(nèi),分布著片內(nèi)Flash、RAM、系統(tǒng)配置寄存器及其他外設等,以便CPU通過直接地址進行訪問。任務7.2熟悉KEA128資源和硬件最小系統(tǒng)2、KEA128的引腳功能
從需求和供給的角度,把MCU的引腳分為硬件最小系統(tǒng)引腳和I/O端口資源類引腳兩大類。(1)硬件最小系統(tǒng)引腳:需要服務的引腳,包括電源、復位、晶振、程序?qū)懭虢涌冢⊿WD)等引腳。任務7.2熟悉KEA128資源和硬件最小系統(tǒng)2、KEA128的引腳功能
從需求和供給的角度,把MCU的引腳分為硬件最小系統(tǒng)引腳和I/O端口資源類引腳兩大類。(2)I/O端口資源類引腳:對外提供服務。
I/O引腳一般具有多個復用功能,詳見附錄D的KEA128引腳功能分配表,在實際應用時只能使用其中的一個功能。在嵌入式系統(tǒng)設計中,需要根據(jù)所使用的外設(含片內(nèi)外設)對MCU的引腳資源進行統(tǒng)籌規(guī)劃,以免多個外設使用相同的引腳而相互沖突。任務7.2熟悉KEA128資源和硬件最小系統(tǒng)3、KEA128的硬件最小系統(tǒng)
MCU硬件最小系統(tǒng)是可以使MCU內(nèi)部程序正常運行的最小規(guī)模的電路,主要包括MCU和電源、晶振、復位、寫入調(diào)試器接口等外圍電路。見圖7-6。
需要說明的是,若使用MCU內(nèi)部的時鐘作為系統(tǒng)時鐘源,則外部晶振電路可省略。【課后作業(yè)】同步練習7-1:鞏固知識。任務7.3
掌握GPIO底層驅(qū)動構(gòu)件的使用方法7.3.1GPIO的通用知識1、GPIO概念
GPIO(GeneralPurposeInputOutput
),通用輸入/輸出,它是I/O的最基本形式。
MCU的大多數(shù)GPIO引腳可以通過編程來設定其工作方式為輸入或輸出,稱之為雙向GPIO。
某個引腳作為通用輸入引腳,MCU可以通過讀取其內(nèi)部寄存器的值“1”或“0”,以確定該引腳的輸入狀態(tài)是高電平還是低電平,即開關(guān)量輸入。
某個引腳作為通用輸出引腳,MCU可以通過向其內(nèi)部寄存器寫“1”或“0”,以控制該引腳輸出高電平或低電平,即開關(guān)量輸出。7.3.1GPIO的通用知識2、上拉電阻、下拉電阻與輸入引腳的基本接法任務7.3
掌握GPIO底層驅(qū)動構(gòu)件的使用方法
若MCU的某個引腳通過一個電阻接電源(VCC),則該電阻被稱為“上拉電阻”。
若MCU的某個引腳通過一個電阻接地(GND),則該電阻被稱為“下拉電阻”。7.3.1GPIO的通用知識3、輸出引腳的基本接法任務7.3
掌握GPIO底層驅(qū)動構(gòu)件的使用方法
作為通用輸出引腳,MCU內(nèi)部程序向該引腳輸出高電平或低電平驅(qū)動外部設備工作,即開關(guān)量輸出。輸出引腳O1和O2分別采用了直接驅(qū)動和放大驅(qū)動方式。任務7.3
掌握GPIO底層驅(qū)動構(gòu)件的使用方法7.3.2KEA128的GPIO底層驅(qū)動構(gòu)件及使用方法
為了實現(xiàn)程序的可移植和可復用,減小重復勞動,MCU底層驅(qū)動程序封裝成構(gòu)件。GPIO底層驅(qū)動構(gòu)件由gpio.h頭文件和gpio.c源文件組成,若要使用GPIO底層驅(qū)動構(gòu)件,只需將這兩個文件添加到所建工程的04_Driver(MCU底層驅(qū)動構(gòu)件)文件夾中,即可實現(xiàn)對GPIO引腳的操作。見工程文件:..EmbeddedSource\03-Software\KEA128\KEA128.uvprojx
其中,gpio.h頭文件主要包括相關(guān)頭文件的包含、一些必要的宏定義、對外接口函數(shù)的聲明,而gpio.c源文件則是對外接口函數(shù)的具體實現(xiàn),初學者不必深究。
用戶只要熟悉gpio.h頭文件的內(nèi)容,即可使用GPIO底層驅(qū)動構(gòu)件進行編程,實現(xiàn)通過GPIO對不同外設進行檢測或控制的功能(如檢測開關(guān)的狀態(tài)、控制小燈的亮滅等)。任務7.4小燈構(gòu)件化設計及閃燈的實現(xiàn)
為了實現(xiàn)嵌入式系統(tǒng)設計在不同MCU和不同應用場合中的可移植和可復用,降低嵌入式技術(shù)學習難度和開發(fā)難度,嵌入式硬件和軟件均需采用“構(gòu)件化”設計?,F(xiàn)以小燈構(gòu)件設計為例,說明嵌入式硬件構(gòu)件和軟件構(gòu)件的設計方法。7.4.1小燈硬件構(gòu)件和軟件構(gòu)件的設計及使用方法1、小燈硬件構(gòu)件及使用方法a)小燈硬件構(gòu)件b)小燈硬件構(gòu)件與MCU的引腳連接
圖中虛線框內(nèi)的粗體標識為硬件構(gòu)件的接口注釋,以便于理解該接口的含義和功能;虛線框外的正體標識為硬件構(gòu)件的接口網(wǎng)標,具有電氣連接特性,表示硬件構(gòu)件的接口與MCU的引腳相連接。硬件構(gòu)件在不同應用系統(tǒng)中移植和復用時,僅需修改接口網(wǎng)標。7.4.1小燈硬件構(gòu)件和軟件構(gòu)件的設計及使用方法2、小燈軟件構(gòu)件的設計及使用方法
任務7.4小燈構(gòu)件化設計及閃燈的實現(xiàn)
小燈軟件構(gòu)件由
light.h
頭文件
和
light.c
源文件組成,若要使用小燈軟件構(gòu)件,只需將這兩個文件添加到所建工程的05_App(應用外設軟件構(gòu)件)文件夾中即可實現(xiàn)對小燈的控制。
其中,light.h
頭文件主要包括相關(guān)頭文件的包含、小燈硬件構(gòu)件相關(guān)的宏定義、小燈構(gòu)件對外接口函數(shù)的聲明。light.c
源文件是小燈構(gòu)件對外接口函數(shù)的具體實現(xiàn)。見工程文件:..EmbeddedSource\03-Software\KEA128\KEA128.uvprojx用戶只要熟悉light.h頭文件的內(nèi)容,即可使用小燈軟件構(gòu)件進行編程。7.4.2嵌入式軟件最小系統(tǒng)設計——實現(xiàn)閃燈1、嵌入式軟件最小系統(tǒng)任務7.4小燈構(gòu)件化設計及閃燈的實現(xiàn)
在嵌入式基礎實踐中,一般以“MCU控制小燈閃爍”作為入門實驗,對應的程序框架稱為“嵌入式軟件最小系統(tǒng)”(具體解釋詳見表7-5)。
在此框架下可通過添加其他軟件構(gòu)件和修改應用層程序(工程源程序)完成不同功能的軟件設計。
對初學者,學習重點是:①熟悉04_Driver(MCU底層驅(qū)動構(gòu)件)、05_App(應用外設軟件構(gòu)件)和
06_Soft(通用軟件構(gòu)件)這幾個文件夾中的頭文件內(nèi)容,掌握對外接口函數(shù)的調(diào)用方法;②根據(jù)系統(tǒng)功能需求,進行應用層程序設計和優(yōu)化,即設計07_Source(應用層軟件構(gòu)件)文件夾中的文件。見工程文件:..EmbeddedSource\03-Software\KEA128\KEA128.uvprojx
其中,“04底層驅(qū)動構(gòu)件”、“05應用外設軟件構(gòu)件”、“06通用軟件構(gòu)件”、“07應用層軟件構(gòu)件”的文件都是由本構(gòu)件的.h和.c文件組成。
7.4.2嵌入式軟件最小系統(tǒng)設計——實現(xiàn)閃燈2、閃燈的應用層程序設計任務7.4小燈構(gòu)件化設計及閃燈的實現(xiàn)
在嵌入式軟件最小系統(tǒng)框架下,設計07_Source(應用層軟件構(gòu)件)的文件,以實現(xiàn)小燈閃爍的效果。1)工程總頭文件includes.h:包含04、05、06文件夾中的頭文件2)主程序源文件main.c:
小燈初始化,在主循環(huán)中實現(xiàn)閃燈效果在工程文件中分析代碼并編程:..EmbeddedSource\03-Software\KEA128\KEA128.uvprojx7.4.3程序的下載與測試1.編譯工程文件,生成MCU可執(zhí)行的代碼文件(.hex文件)任務7.4小燈構(gòu)件化設計及閃燈的實現(xiàn)2.將編譯生成的.hex文件下載至目標MCU中,運行程序【同步練習7-2】請通過修改主程序的代碼,分別完成:(1)改變小燈閃爍的頻率;(2)控制其他小燈閃爍;(3)實現(xiàn)流水燈的效果。第7單元:閃燈的設計與實現(xiàn)第8單元:開關(guān)狀態(tài)指示燈的設計與實現(xiàn)第9單元:利用定時中斷實現(xiàn)頻閃燈第10單元:利用PWM實現(xiàn)小燈亮度控制第11單元:利用UART實現(xiàn)上位機和下位機的通信第12單元:利用ADC設計簡易數(shù)字電壓表汽車嵌入式技術(shù)基礎篇
第8單元
開關(guān)狀態(tài)指示燈的設計與實現(xiàn)【單元導讀】
在汽車上有很多開關(guān)(switch),可以通過開關(guān)控制用電設備。例如,在大眾車系中,汽車ECU(J519)通過獲取車燈開關(guān)的狀態(tài)而控制對應的車燈。
單元學習任務和目標:在第7單元的基礎上,實現(xiàn)通過指示燈反映開關(guān)狀態(tài)的功能。在本單元中,重點掌握開關(guān)硬件構(gòu)件和開關(guān)軟件構(gòu)件的設計及使用方法,并在此基礎上學會開關(guān)檢測與控制功能的應用層程序設計方法。任務8.1掌握開關(guān)硬件構(gòu)件和軟件構(gòu)件的設計及使用方法1、開關(guān)硬件構(gòu)件的設計及使用方法a)開關(guān)硬件構(gòu)件b)開關(guān)硬件構(gòu)件與MCU的引腳連接2、開關(guān)軟件構(gòu)件的設計及使用方法
任務8.1掌握開關(guān)硬件構(gòu)件和軟件構(gòu)件的設計及使用方法
開關(guān)軟件構(gòu)件由
sw.h頭文件
和
sw.c
源文件組成,若要使用開關(guān)軟件構(gòu)件,只需將這兩個文件添加到所建工程的05_App(應用外設軟件構(gòu)件)文件夾中,即可實現(xiàn)對開關(guān)的操作。
其中,sw.h
頭文件主要包括相關(guān)頭文件的包含、開關(guān)硬件構(gòu)件相關(guān)的宏定義、開關(guān)構(gòu)件對外接口函數(shù)的聲明。sw.c
源文件是開關(guān)構(gòu)件對外接口函數(shù)的具體實現(xiàn)。見工程文件:..EmbeddedSource\03-Software\KEA128\KEA128.uvprojx用戶只要熟悉sw.h
頭文件的內(nèi)容,即可使用開關(guān)軟件構(gòu)件進行編程。任務8.2開關(guān)狀態(tài)指示燈的應用層程序設計
利用小燈軟件構(gòu)件和開關(guān)軟件構(gòu)件,編程實現(xiàn)開關(guān)狀態(tài)檢測與控制功能:開關(guān)SW1閉合時,小燈LIGHT1亮;SW1斷開時,小燈LIGHT1滅。任務8.2開關(guān)狀態(tài)指示燈的應用層程序設計見工程文件:..EmbeddedSource\03-Software\KEA128\KEA128.uvprojx
在嵌入式軟件最小系統(tǒng)框架下,設計07_Source(應用層軟件構(gòu)件)的文件,以實現(xiàn)開關(guān)狀態(tài)檢測與控制功能。1)工程總頭文件includes.h:包含04、05、06文件夾中的頭文件2)主程序源文件main.c:
初始化,在主循環(huán)中查詢開關(guān)狀態(tài),并控制小燈亮、滅【同步練習8】
實現(xiàn):多路開關(guān)狀態(tài)指示功能,即4個開關(guān)SW1、SW2、SW3、SW4的狀態(tài)分別由小燈LIGHT1、LIGHT2、LIGHT3、LIGHT4指示。第7單元:閃燈的設計與實現(xiàn)第8單元:開關(guān)狀態(tài)指示燈的設計與實現(xiàn)第9單元:利用定時中斷實現(xiàn)頻閃燈第10單元:利用PWM實現(xiàn)小燈亮度控制第11單元:利用UART實現(xiàn)上位機和下位機的通信第12單元:利用ADC設計簡易數(shù)字電壓表汽車嵌入式技術(shù)基礎篇
第9單元利用定時中斷實現(xiàn)頻閃燈
在第7單元中,利用軟件延時Delay_ms函數(shù)(循環(huán)計數(shù))實現(xiàn)閃燈的效果。
該方式有兩大缺點:
①軟件延時一般用于粗略延時的場合;
②執(zhí)行延時子程序期間,CPU一直被占用而不能做其他事情,從而降低了CPU的利用率?!締卧獙ёx】第9單元利用定時中斷實現(xiàn)頻閃燈
為此,可使用MCU內(nèi)部可編程的定時/計數(shù)器實現(xiàn)延時。用戶根據(jù)需要設置定時時間,并啟動定時/計數(shù)器計數(shù),當定時時間到時,它將自動產(chǎn)生一個定時輸出信號(通常是中斷請求信號)告知CPU,使CPU轉(zhuǎn)去執(zhí)行定時中斷服務程序,從而實現(xiàn)某些定時功能(如改變小燈的狀態(tài))。定時/計數(shù)器在計數(shù)期間,與CPU并行工作,不占用CPU的工作時間。該方式通過簡單的程序設置即可實現(xiàn)準確的定時。單元學習任務和目標:(1)理解定時器的定時原理。(2)理解中斷的通用知識,熟知使用非內(nèi)核中斷的嵌入式應用層程序構(gòu)成。(3)熟悉MCU內(nèi)部定時器的功能特性,掌握MCU內(nèi)部定時器底層驅(qū)動構(gòu)件頭文件的使用方法。(4)學會利用MCU內(nèi)部定時中斷實現(xiàn)頻閃燈或流水燈的應用層程序設計方法。任務9.1理解中斷的通用知識1、中斷的含義
中斷,是指MCU在正常運行程序時,由于MCU內(nèi)核異常(內(nèi)核中斷)或
MCU各功能模塊發(fā)出請求事件(非內(nèi)核中斷),使MCU停止正在運行的程序,而轉(zhuǎn)去處理異常(使芯片復位或使MCU做出其他處理)或
執(zhí)行處理內(nèi)核外部事件的程序(中斷服務程序)。2、中斷源
引起MCU中斷的事件稱為中斷源。MCU的中斷源分為兩類:內(nèi)核中斷源和非內(nèi)核中斷源。KEA128的中斷源見表9-1。任務9.1理解中斷的通用知識4、使用非內(nèi)核中斷的嵌入式應用層程序設計方法
(1)在main.c文件的主程序中,進行非內(nèi)核中斷模塊初始化,并使能模塊中斷(使CPU能夠響應模塊發(fā)出的中斷請求,轉(zhuǎn)去執(zhí)行中斷服務函數(shù))。
(2)在isr.c文件中,設計中斷服務程序函數(shù),在中斷服務函數(shù)中實現(xiàn)某些中斷功能(如改變小燈狀態(tài)等)。3、使用非內(nèi)核中斷的嵌入式應用層程序構(gòu)成
使用中斷的嵌入式應用層程序,共有兩條獨立的程序運行線:
(1)main.c文件中的主程序運行線;
(2)isr.c文件中的中斷服務程序運行線。任務9.2利用FTM定時中斷實現(xiàn)頻閃燈定時器本質(zhì)上是一個對計數(shù)時鐘進行周期統(tǒng)計的計數(shù)器。
上圖中,計數(shù)器采用增1計數(shù)。計數(shù)器從初值0開始計數(shù),每經(jīng)過一個計數(shù)時鐘周期,計數(shù)器的值就加1,若計數(shù)器的值達到終值4,則在下一個時鐘到來時,計數(shù)器溢出,計數(shù)器的值恢復至初值0,然后進行下一輪的加1計數(shù),如此重復。
定時器每一輪的定時時間t=
計數(shù)次數(shù)×計數(shù)時鐘周期
上圖中,一輪的計數(shù)次數(shù)是5,若計數(shù)時鐘頻率為1kHz(計數(shù)時鐘周期為1ms),則一輪的定時時間為5ms。任務9.2利用FTM定時中斷實現(xiàn)頻閃燈對于n位(二進制)定時/計數(shù)器,計數(shù)器的終值最大值為2n-1,結(jié)合上圖,定時/計數(shù)器一輪計數(shù)次數(shù)最大值為2n。n位定時/計數(shù)器一輪的最大定時時間t:
t=2n×計數(shù)時鐘周期
=2n/計數(shù)時鐘頻率
f若
f=
時鐘源頻率/分頻系數(shù),則
t=2n/(時鐘源頻率/分頻系數(shù))
【同步練習9-1】計算定時時間范圍。
任務9.2利用FTM定時中斷實現(xiàn)頻閃燈
當計數(shù)器溢出時,定時器可向CPU發(fā)出中斷請求信號,使CPU暫停當前的工作,而轉(zhuǎn)去執(zhí)行中斷服務程序,在中斷服務程序中實現(xiàn)具體的定時功能(如改變小燈的狀態(tài)等)。任務9.2利用FTM定時中斷實現(xiàn)頻閃燈
KEA128芯片的FTM(FlexTimer)是一個具有基本定時、脈寬調(diào)制(PWM)、輸入捕捉和輸出比較等多種功能的綜合定時器。KEA128芯片中有3個FTM模塊,分別是FTM0、FTM1和FTM2,它們均是16位定時器。本單元只學習FTM模塊的基本定時功能,其PWM功能將在第10單元介紹。任務9.2利用FTM定時中斷實現(xiàn)頻閃燈9.2.1FTM基本定時底層驅(qū)動構(gòu)件的使用方法
FTM基本定時底層驅(qū)動構(gòu)件由ftm_timer.h頭文件和ftm_timer.c源文件組成,若要使用FTM基本定時底層驅(qū)動構(gòu)件,只需將這兩個文件添加到所建工程的04_Driver(MCU底層驅(qū)動構(gòu)件)文件夾中即可實現(xiàn)對FTM定時器的操作。見工程文件:..EmbededSource\03-Software\KEA128\KEA128.uvprojx
用戶只要熟悉ftm_timer.h頭文件的內(nèi)容,即可使用FTM基本定時底層驅(qū)動構(gòu)件進行編程。
其中,ftm_timer.h頭文件主要包括相關(guān)頭文件的包含、相關(guān)的宏定義、對外接口函數(shù)的聲明;而ftm_timer.c源文件是對外接口函數(shù)的具體實現(xiàn),初學者不必深究。任務9.2利用FTM定時中斷實現(xiàn)頻閃燈9.2.2利用FTM定時中斷實現(xiàn)頻閃燈的應用層程序設計
在嵌入式軟件最小系統(tǒng)框架下,設計07_Source(應用層軟件構(gòu)件)的文件,以實現(xiàn)小燈閃爍的效果。1)工程總頭文件includes.h:
包含04、05、06文件夾中的頭文件2)主程序源文件main.c:
定義全局變量;初始化;使能定時器中斷;
在主循環(huán)中,根據(jù)全局變量的值,改變小燈的狀態(tài)在工程文件中分析代碼并編程:..EmbeddedSource\03-Software\KEA128\KEA128.uvprojx3)中斷服務程序源文件isr.c:聲明全局變量;實現(xiàn)定時功能(更新全局變量的值)
【同步練習9-2】通過修改main.c的代碼,分別完成:
①改變小燈閃爍的頻率。
②控制其他小燈閃爍。
③實現(xiàn)流水燈的效果。汽車計算機基礎
配套教材:索明何、汪東明
等編著多資源、立體化、新形態(tài)教材《汽車計算機基礎》機械工業(yè)出版社,2023ISBN:978-7-111-72416-2
本書結(jié)合汽車技術(shù)電動化、智能化、網(wǎng)聯(lián)化、共享化的“四化”發(fā)展和汽車類專業(yè)特點,按照“由簡到難、循序漸進”的原則,共設置了“緒論”“汽車程序設計基礎篇”“汽車嵌入式技術(shù)基礎篇”“車載網(wǎng)絡技術(shù)基礎篇”4部分內(nèi)容。通過本書的學習,可以從整體上加深理解汽車電子控制系統(tǒng)的組成和工作原理,對汽車電子控制技術(shù)和智能網(wǎng)聯(lián)汽車技術(shù)學習奠定良好的汽車計算機基礎。
本書特色:任務驅(qū)動,理實一體,學以致用。內(nèi)容組織由簡到難、循序漸進,靈活采用對比法、類比法、啟發(fā)法、實驗法等多種教學方法,有效降低教學難度和學習難度。
本書可作為高職院校汽車類專業(yè)的汽車計算機基礎教材,也可供從事相關(guān)技術(shù)的工程人員參考。第7單元:閃燈的設計與實現(xiàn)第8單元:開關(guān)狀態(tài)指示燈的設計與實現(xiàn)第9單元:利用定時中斷實現(xiàn)頻閃燈第10單元:利用PWM實現(xiàn)小燈亮度控制第11單元:利用UART實現(xiàn)上位機和下位機的通信第12單元:利用ADC設計簡易數(shù)字電壓表汽車嵌入式技術(shù)基礎篇
第10單元利用PWM實現(xiàn)小燈亮度控制
脈寬調(diào)制(PulseWidthModulation,PWM)信號是一個高電平和低電平重復交替的輸出信號,PWM廣泛應用于電動機轉(zhuǎn)速控制、車燈亮度控制等領域。當車燈開關(guān)閉合時,如果MCU通過PWM控制車燈逐漸點亮,則可以延長車燈的壽命?!締卧獙ёx】
單元學習任務和目標:首先理解PWM的通用知識,包括PWM的相關(guān)概念、技術(shù)指標及應用場合;然后掌握PWM底層驅(qū)動構(gòu)件頭文件的使用方法;最后學會利用PWM實現(xiàn)小燈亮度控制的應用層程序設計方法。任務10.1理解PWM的通用知識
PWM信號是一個高電平和低電平重復交替的輸出信號。
目前經(jīng)常使用的PWM信號主要是通過MCU編程實現(xiàn)的。利用MCU輸出PWM信號時,需要一個產(chǎn)生PWM信號的時鐘源,設其周期為TCLK。1、
PWM的基本概念與技術(shù)指標任務10.1理解PWM的通用知識1、
PWM的基本概念與技術(shù)指標(1)周期:持續(xù)的時鐘周期個數(shù)。
TPWM=8
TCLK(2)脈寬:一個PWM周期內(nèi)PWM信號
處于高電平的時間。
圖(a):2
TCLK
圖(b):4
TCLK
圖(c):6
TCLK(3)占空比:脈寬/周期,百分比
圖(a):25%
圖(b):50%
圖(c):75%任務10.1理解PWM的通用知識(4)極性:決定了PWM信號的有效電平
正極性:PWM信號的有效電平為高電平,平時電平(空閑電平)為低電平;
負極性:PWM信號的有效電平為低電平,平時電平(空閑電平)為高電平。1、
PWM的基本概念與技術(shù)指標任務10.1理解PWM的通用知識2、
PWM的應用場合
(1)利用PWM為其他設備產(chǎn)生類似于時鐘的信號。例如,PWM可用來控制燈以一定的頻率閃爍。
(2)利用PWM控制輸入到某個設備的平均電流或電壓。例如,PWM可用來控制直流電動機轉(zhuǎn)速。
(3)利用PWM控制命令字編碼。例如,用不同的脈寬代表不同的命令,控制無線遙控車做不同的動作(左轉(zhuǎn)、右轉(zhuǎn)、前進等)。1、KEA128的FTM_PWM模塊
在KEA128芯片中,可利用FTM定時器實現(xiàn)PWM功能,其中FTM的FTM0和FTM1各有2個通道,F(xiàn)TM2有6個通道??梢耘渲脼镕TM通道的引腳見表10-1,具體使用的引腳,可參照ftm_pwm.h頭文件中的相關(guān)宏定義。任務10.2掌握FTM_PWM底層驅(qū)動構(gòu)件的使用方法任務10.2掌握FTM_PWM底層驅(qū)動構(gòu)件的使用方法2、KEA128的FTM_PWM底層驅(qū)動構(gòu)件及使用方法【同步練習10-1】計算PWM信號周期的合理范圍。
FTM_PWM底層驅(qū)動構(gòu)件由ftm_pwm.h頭文件和ftm_pwm.c源文件組成,若要使用FTM_PWM底層驅(qū)動構(gòu)件,只需將這兩個文件添加到所建工程的04_Driver(MCU底層驅(qū)動構(gòu)件)文件夾中,即可實現(xiàn)對FTM_PWM的操作。見工程文件:..EmbeddedSource\03-Software\KEA128\KEA128.uvprojx
其中,ftm_pwm.h頭文件主要包括相關(guān)頭文件的包含、一些必要的宏定義、對外接口函數(shù)的聲明,而ftm_pwm.c源文件則是對外接口函數(shù)的具體實現(xiàn),初學者不必深究。
用戶只要熟悉ftm_pwm.h頭文件的內(nèi)容,即可使用FTM_PWM底層驅(qū)動構(gòu)件進行編程。任務10.3利用PWM實現(xiàn)小燈亮度控制的應用層程序設計
在嵌入式軟件最小系統(tǒng)框架下,設計07_Source(應用層軟件構(gòu)件)的文件,以實現(xiàn):利用PWM控制與PWM通道引腳相連接的小燈的亮度。1)工程總頭文件includes.h:
包含04、05、06文件夾中的頭文件2)主程序源文件main.c:
初始化(PWM)在工程文件中分析代碼并編程:..EmbeddedSource\03-Software\KEA128\KEA128.uvprojx【同步練習10-1】
(1)將ftm_pwm_init函數(shù)中的占空比參數(shù)依次改為100、75、50、25、0,分別運行其對應的程序,觀察小燈亮度的變化情況。
(2)使用ftm_pwm.h文件中的ftm_pwm_update函數(shù),分別實現(xiàn)頻閃燈和小燈逐漸變亮的效果。第7單元:閃燈的設計與實現(xiàn)第8單元:開關(guān)狀態(tài)指示燈的設計與實現(xiàn)第9單元:利用定時中斷實現(xiàn)頻閃燈第10單元:利用PWM實現(xiàn)小燈亮度控制第11單元:利用UART實現(xiàn)上位機和下位機的通信第12單元:利用ADC設計簡易數(shù)字電壓表汽車嵌入式技術(shù)基礎篇
第11單元利用UART實現(xiàn)上位機和下位機的通信
為了實現(xiàn)上位機PC和下位機MCU之間的通信,可采用UART、USB、Ethernet等多種通信方式,其中UART是最簡單的通信方式,也是學習其他通信方式的基礎。
單元學習任務和目標:
(1)理解UART的通用知識,包括UART硬件、UART通信的數(shù)據(jù)格式和數(shù)據(jù)通信的波特率。(2)掌握UART底層驅(qū)動構(gòu)件頭文件的使用方法。(3)掌握PC和MCU的串口通信與調(diào)試方法,重點掌握UART應用層程序設計方法,包括主程序設計和UART接收中斷服務程序設計。(4)掌握通過UART實現(xiàn)利用格式化輸出函數(shù)(printf)向PC輸出數(shù)據(jù)的方法?!締卧獙ёx】任務11.1理解UART的通用知識
UART(UniversalAsynchronousReceiver/Transmitter,通用異步收發(fā)器)可實現(xiàn)異步串行通信功能。有時還將UART稱為SCI(SerialCommunicationInterface,串行通信接口),簡稱串口。1、UART硬件
MCU的UART通信一般只需3根線:發(fā)送線TxD、接收線RxD和地線GND。
MCU可通過TTL-USB轉(zhuǎn)換器連接到PC的USB接口,在PC上安裝相應的驅(qū)動軟件,就可實現(xiàn)MCU與PC之間的串口通信。2、UART通信的數(shù)據(jù)幀格式
UART通信的特點:數(shù)據(jù)以字節(jié)為單位,按位的順序(如最低位優(yōu)先)從一條傳輸線上發(fā)送出去。
(1)發(fā)送1位起始位——邏輯“0”,用于通知接收方通信同步。
(2)依次發(fā)送8位數(shù)據(jù)D0~D7(低位在前、高位在后)。
(3)發(fā)送1位奇偶校驗位(可選),便于接收方檢測數(shù)據(jù)發(fā)送是否正確。
(4)發(fā)送1~2位停止位——邏輯“1”,用于通知接收方該幀數(shù)據(jù)已發(fā)送完成。
若發(fā)送方無數(shù)據(jù)發(fā)送,則通信線路上保持空閑狀態(tài)——邏輯“1”。若發(fā)送方發(fā)送下一個UART數(shù)據(jù)幀,則要重新發(fā)送起始位,然后發(fā)送一字節(jié)的新數(shù)據(jù)。任務11.1理解UART的通用知識3、數(shù)據(jù)通信的波特率
波特率:每秒鐘傳輸二進制數(shù)碼的位數(shù),單位是bit/s。波特率越高,數(shù)據(jù)傳輸?shù)乃俣染驮娇?。只有通信雙方的波特率相同時才可以正常通信。
串口通信常用的波特率:1200、1800、2400、4800、9600、19200、38400、57600、115200等(bit/s)。任務11.2掌握UART底層驅(qū)動構(gòu)件的使用方法1、KEA128的UART模塊
KEA128芯片中共有3個UART模塊:UART0、UART1和UART2。每個UART模塊的發(fā)送數(shù)據(jù)引腳為UART_TX,接收數(shù)據(jù)引腳為UART_RX??梢耘渲脼閁ART模塊的引腳見表11-1,具體使用的引腳,可參照uart.h頭文件中的相關(guān)宏定義。任務11.2掌握UART底層驅(qū)動構(gòu)件的使用方法2、KEA128的UART底層驅(qū)動構(gòu)件及使用方法
UART具有初始化、發(fā)送和接收三種基本操作。其中,UART發(fā)送是主動任務,不必采用中斷方式;而UART接收是被動任務,為了確保及時接收到對方發(fā)送來的每幀數(shù)據(jù),一般采用中斷方式。
UART底層驅(qū)動構(gòu)件由uart.h頭文件和uart.c源文件組成,若要使用UART底層驅(qū)動構(gòu)件,只需將這兩個文件添加到所建工程的04_Driver(MCU底層驅(qū)動構(gòu)件)文件夾中,即可實現(xiàn)對UART的操作。見工程文件:..EmbeddedSource\03-Software\KEA128\KEA128.uvprojx
其中,uart.h頭文件主要包括相關(guān)頭文件的包含、一些必要的宏定義、對外接口函數(shù)的聲明,而uart.c源文件則是對外接口函數(shù)的具體實現(xiàn),初學者不必深究。
用戶只要熟悉uart.h頭文件的內(nèi)容,即可使用UART底層驅(qū)動構(gòu)件進行編程。任務11.3掌握PC與MCU的串口通信與調(diào)試方法11.3.1UART通信的應用層程序設計
在嵌入式軟件最小系統(tǒng)框架下,設計07_Source(應用層軟件構(gòu)件)的文件,以實現(xiàn):上位機PC
與
下位機MCU之間的串口通信。1)工程總頭文件includes.h:包含04、05、06文件夾中的頭文件2)主程序源文件main.c:
定義字符數(shù)組(存放待發(fā)送的字符型數(shù)據(jù));
初始化;使能UART接收中斷;
在主循環(huán)中,MCU通過UART使用發(fā)送函數(shù)向PC發(fā)送數(shù)據(jù)在工程文件中分析代碼并編程:..EmbeddedSource\03-Software\KEA128\KEA128.uvprojx3)中斷服務程序源文件isr.c:在UART接收中斷服務程序中,MCU使用UART接收函數(shù)
接收PC發(fā)來的數(shù)據(jù),并向PC回送接收到的字符任務11.3掌握PC與MCU的串口通信與調(diào)試方法11.3.2UART通信的測試方法
(1)將USB-TTL轉(zhuǎn)換器TTL端的RX、TX、GND端子分別與MCU的TX、RX、GND引腳(參照uart.h中的引腳宏定義)相連接,將USB-TTL轉(zhuǎn)換器的USB端與PC的USB接口連接;
(2)打開PC串口調(diào)試軟件,打開串口,并且設置與MCU的UART相同的波特率;
(3)運行MCU程序,通過PC串口調(diào)試窗口查看MCU發(fā)送給PC的信息;
(4)在PC串口調(diào)試窗口中寫入字符或字符串并發(fā)送給MCU,在串口調(diào)試窗口中查看是否有MCU回送到PC的信息;
(5)調(diào)試結(jié)束后,先在PC串口調(diào)試軟件中關(guān)閉串口,然后將USB-TTL轉(zhuǎn)換器從PC的USB接口斷開。任務11.3掌握PC與MCU的串口通信與調(diào)試方法11.3.3使用printf函數(shù)輸出數(shù)據(jù)1、通過UART使用printf函數(shù)的方法
使用printf函數(shù)時,需要將printf軟件構(gòu)件對應的printf.h頭文件和printf.c源文件添加到所建工程的06_Soft(通用軟件構(gòu)件)文件夾中。在printf.h頭文件中,添加了以下兩條預處理命令:
任務6.3學習PC與MCU的串口通信與調(diào)試方法2、通過UART使用printf函數(shù)輸出數(shù)據(jù)的應用層程序設計【同步練習11】
通過PC串口調(diào)試窗口向MCU發(fā)送不同的字符,控制小燈的狀態(tài)。1)工程總頭文件includes.h:包含04、05、06文件夾中的頭文件2)主程序源文件main.c:
定義局部變量(存放待發(fā)送的數(shù)據(jù));
初始化;MCU通過UART使用printf函數(shù)向PC發(fā)送數(shù)據(jù)在工程文件中分析代碼并編程:..EmbeddedSource\03-Software\KEA128\KEA128.uvprojx11.3.3使用printf函數(shù)輸出數(shù)據(jù)第7單元:閃燈的設計與實現(xiàn)第8單元:開關(guān)狀態(tài)指示燈的設計與實現(xiàn)第9單元:利用定時中斷實現(xiàn)頻閃燈第10單元:利用PWM實現(xiàn)小燈亮度控制第11單元:利用UART實現(xiàn)上位機和下位機的通信第12單元:利用ADC設計簡易數(shù)字電壓表汽車嵌入式技術(shù)基礎篇
第12單元利用ADC設計簡易數(shù)字電壓表
在汽車測控系統(tǒng)中,往往需要通過模/數(shù)轉(zhuǎn)換器(AnalogtoDigitalConverter,ADC)將模擬輸入量轉(zhuǎn)換為數(shù)字量,以供MCU接收和處理。單元學習任務和目標:(1)理解ADC的通用知識,包括ADC的相關(guān)概念和最簡單的A/D轉(zhuǎn)換采樣電路。(2)熟悉MCU的ADC主要特性和引腳,掌握ADC底
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 供方采購合同范本
- 企業(yè)項目合資合同范本
- 浙江長興縣龍山中學人教版七年級下冊歷史與社會第八單元第三課 中華文明探源教學設計
- 2024年韶關(guān)市曲江區(qū)住房和城鄉(xiāng)建設管理局招聘筆試真題
- 公司英文合同范本
- 農(nóng)田路養(yǎng)護合同范本
- 前臺收銀合同范本
- 包材銷售合同范本
- 2024年金昌市金川區(qū)圖書館招聘筆試真題
- 農(nóng)村自建住宅買賣合同范本
- 兒童體液平衡及液體療法課件
- 勞動防護用品培訓試卷帶答案
- ORACLE執(zhí)行計劃和SQL調(diào)優(yōu)
- 2024年鐘山職業(yè)技術(shù)學院高職單招(英語/數(shù)學/語文)筆試歷年參考題庫含答案解析
- 2024年湖南交通職業(yè)技術(shù)學院高職單招(英語/數(shù)學/語文)筆試歷年參考題庫含答案解析
- 研究生導師談心談話記錄內(nèi)容范文
- 小學機器人課題報告
- 《字體設計》課程標準
- 圖像生成中的風格遷移方法研究
- 寒假社會實踐大學生返鄉(xiāng)
- 站樁的知識講座
評論
0/150
提交評論