ARM-Cortex-M4學(xué)習(xí)與實(shí)踐-紀(jì)成解析_第1頁
ARM-Cortex-M4學(xué)習(xí)與實(shí)踐-紀(jì)成解析_第2頁
ARM-Cortex-M4學(xué)習(xí)與實(shí)踐-紀(jì)成解析_第3頁
ARM-Cortex-M4學(xué)習(xí)與實(shí)踐-紀(jì)成解析_第4頁
ARM-Cortex-M4學(xué)習(xí)與實(shí)踐-紀(jì)成解析_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

ARMCortex-M4學(xué)習(xí)與實(shí)踐山東大學(xué)智能車工作室 紀(jì)成2023年3月山東大學(xué)Kinetis培訓(xùn)——基于飛思卡爾Kinetis系列山東大學(xué)Kinetis培訓(xùn)飛思卡爾Kinetis功能特性1K60開發(fā)生態(tài)系統(tǒng)介紹2IAR+Jlink開發(fā)K60方法K60代碼框架分析K60外設(shè)資源在智能車中的應(yīng)用K60學(xué)習(xí)資源整理63451、ARM進(jìn)展史

一、飛思卡爾Kinetis功能特性山東大學(xué)Kinetis培訓(xùn)2、ARMv7處理器分類

3、ARMCortex-M4特性

4、飛思卡爾Kinetis家族介紹

5、K60內(nèi)部資源介紹

ARM進(jìn)展史山東大學(xué)Kinetis培訓(xùn)ARM架構(gòu)進(jìn)展歷程ARMv7處理器分類山東大學(xué)Kinetis培訓(xùn)ARMv7依據(jù)應(yīng)用分類:應(yīng)用處理器(Cortex-A系列)AplicationProcessor實(shí)時(shí)把握器(Cortex-R系列)Real-timeProcessor微把握器(Cortex-M系列)MicroController即最快頻率、最高性能、合理功耗實(shí)時(shí)響應(yīng)、合理性能、較低功耗一般性能、最低成本、極低功耗ARMCortex-M4特性ARMCortex-M4處理器是在M3的根底上強(qiáng)化了運(yùn)算力氣,承受一個(gè)擴(kuò)展的單時(shí)鐘周期乘法累加〔MAC〕單元,優(yōu)化的單指令多數(shù)據(jù)〔SIMD〕指令,飽和運(yùn)算指令和一個(gè)可選的單精度浮點(diǎn)單元〔FPU〕,源于Cortex-M4系列一些創(chuàng)新性的技術(shù),包括:RISC處理器內(nèi)核,高性能32位CPU、具有確定性的運(yùn)算、低延遲3階段管道,可達(dá)1.25DMIPS/MHz;Thumb-2指令集,16/32位指令的最正確混合,供給最正確代碼密度;低功耗模式,支持多種狀態(tài)低功耗模式;嵌套矢量中斷把握器〔NVIC〕,低延遲、低抖動(dòng)中斷響應(yīng)、支持以純C編寫中斷效勞例程,能精彩的完成中斷處理;廣泛的工具和RTOS支持,廣泛的第三方工具支持、Cortex微把握器軟件接口標(biāo)準(zhǔn)〔CMSIS〕最大限度縮短開發(fā)周期和難度;CoreSight調(diào)試和跟蹤,JTAG和2針串行線調(diào)試〔SWD〕連接、支持多處理器、支持實(shí)時(shí)跟蹤。山東大學(xué)Kinetis培訓(xùn)飛思卡爾Kinetis家族山東大學(xué)Kinetis培訓(xùn)飛思卡爾Kinetis家族山東大學(xué)Kinetis培訓(xùn)飛思卡爾KinetisK系列山東大學(xué)Kinetis培訓(xùn)增加段式液晶的驅(qū)動(dòng)增加USB功能增加模擬測(cè)量引擎,以太網(wǎng)和硬件加密增加USB功能增加圖形液晶驅(qū)動(dòng)增加以太網(wǎng),硬件加密,溫度檢測(cè)和DRAM把握器Kinetis命名規(guī)章山東大學(xué)Kinetis培訓(xùn)字段說明取值Q質(zhì)量狀態(tài)M=正式發(fā)布芯片;P=工程測(cè)試芯片K##Kinetis系列號(hào)K20A內(nèi)核屬性D=Cortex-M4w/DSP;F=Cortex-M4w/DSP和FPUMFlash存儲(chǔ)類型N=僅包含程序Flash;X=包含程序Flash和FlexMemoryFFF程序Flash大小32=32KB;64=64KB;128=128KB;256=256KB;512=512KB;1M0=1MBR硅材料版本空=主要使用的版本;Z=初始版本;A=主要使用版本的更新T溫度范圍V=–40到105攝氏度;C=–40到85攝氏度K60內(nèi)部資源介紹山東大學(xué)Kinetis培訓(xùn)K60內(nèi)部資源介紹山東大學(xué)Kinetis培訓(xùn)K60(K60N512VLL100)封裝LQFP100(14mm*14mm)可用IO70FLASH512kbyteRAM128kbyte非易失存儲(chǔ)無CPU類型ARMCortex-M4CPU最大速度100M完整并行IOPTC0-15,PTD0-7K60內(nèi)部資源介紹山東大學(xué)Kinetis培訓(xùn)K60(K60N512VLL100)UART4個(gè)(UART0~UART3)SPI3個(gè)(SPI0~SPI2)I2C2個(gè)(I2C0~I2C1)InputCapture輸入捕捉FlexTimer模塊,有硬件16bit計(jì)數(shù)器,至少8通道PWMFlexTimer模塊,16bit計(jì)數(shù)器FTM0——8通道FTM1——2通道FTM2——2通道SD卡控制器1個(gè)(SDHC0)外部中斷所有IO都可觸發(fā)中斷(PTA~PTE)DMA控制器56個(gè)源,16通道K60內(nèi)部資源介紹山東大學(xué)Kinetis培訓(xùn)K60(K60N512VLL100)ADC通道數(shù)4組差分輸入,24個(gè)單端ADC精度差分模式可編程16位,13位,11位和9位精度單端模式可編程為16位,12位,10位和8位精度ADC最大速度361ksps/16bit,818ksps/<=13bitADC特殊功能可編程增益的放大器(PGA)硬件平均功能(HardwareAverageFunction)DAC12bit/1通道模擬比較器3通道開發(fā)環(huán)境CW10.1、IAR、MDK山東大學(xué)Kinetis培訓(xùn)二、K60開發(fā)生態(tài)系統(tǒng)軟件應(yīng)用調(diào)試工具開發(fā)環(huán)境其他支持Kinetis開發(fā)環(huán)境支持Kinetis開發(fā)的IDE〔集成開發(fā)環(huán)境〕目前主要包括CodeWarrior10.1及以上版本,IAR6.1及以上版本和KeilMDK〔即KeilforARM〕等。山東大學(xué)Kinetis培訓(xùn)Kinetis開發(fā)環(huán)境山東大學(xué)Kinetis培訓(xùn)CodeWarrior10.2Kinetis開發(fā)環(huán)境山東大學(xué)Kinetis培訓(xùn)IAR6.3Kinetis開發(fā)環(huán)境山東大學(xué)Kinetis培訓(xùn)開發(fā)環(huán)境比照山東大學(xué)Kinetis培訓(xùn)CodewarriorIARKeilMDK優(yōu)點(diǎn)1、基于Eclipse開發(fā)平臺(tái),編輯界面交互功能強(qiáng)大;2、采用GCC編譯器和GDB調(diào)試器;3、對(duì)飛思卡爾的MCU支持較好。4、可以向?qū)Щ蓡?dòng)代碼,上手簡單。1、界面簡潔,操作方面;2、老牌編譯器廠商,自家的IAR編譯器的編譯效率較高;3、第三方插件支持豐富;4、支持在線實(shí)時(shí)仿真。1、界面簡潔而且友好,上手簡單;2、被ARM收購,編譯器對(duì)ARM內(nèi)核支持相對(duì)較好;3、可以向?qū)Щ蓡?dòng)代碼,方面開發(fā)。缺點(diǎn)成于Eclipse,也敗于Eclipse,需要運(yùn)行在java虛擬機(jī)之上,軟件體積龐大,對(duì)PC機(jī)硬件要求高。不支持生成啟動(dòng)代碼,需要自己建立開發(fā)模板,上手較難。編譯速度較慢,效率一般。Kinetis調(diào)試工具目前Kinetis的調(diào)試工具主要有飛思卡爾自己的OSBDM及USBDM、P&EMultilink、J-Link和ulink等等,其中JLink〔目前進(jìn)展到V8版本〕以其支持范圍廣、價(jià)格廉價(jià)、速度快等優(yōu)勢(shì)得到廣泛應(yīng)用。山東大學(xué)Kinetis培訓(xùn)J-LinkP&EMultilinkOSBDM山東大學(xué)智能車工作室依據(jù)開源資料,自行設(shè)計(jì)了OSBDM調(diào)試器和USBDM調(diào)試器,其中OSBDM由飛思卡爾官方開源,目前由P&E公司維護(hù),USBDM由網(wǎng)友pgo開源和維護(hù)。經(jīng)過二次設(shè)計(jì)和完善,目前山大設(shè)計(jì)的OSBDM分別支持CW、IAR和KeilMDK三種開發(fā)環(huán)境,而且支持飛思卡爾幾乎全系列MCU,包括:FreescaleHCS12/HCS12(X)/HCS08(已測(cè)試MC9S12DG128、MC9S08JM60)

FreescaleColdfireV1,V2,V3,V4〔已測(cè)試MCF52259〕

FreescaleDSC全系列(已測(cè)試MC56F8366)

FreescalePowerPC架構(gòu)的Qorivva系列〔已測(cè)試MPC5604B〕

FreescaleCortex-M4核的Kinetis系列〔已測(cè)試K10、K60〕Kinetis調(diào)試工具山東大學(xué)Kinetis培訓(xùn)Kinetis開發(fā)板山東大學(xué)Kinetis培訓(xùn)山東大學(xué)Kinetis培訓(xùn)三、IAR+Jlink開發(fā)K60方法IAR+Jlink開發(fā)K60方法山東大學(xué)Kinetis培訓(xùn)山東大學(xué)Kinetis培訓(xùn)四、K60代碼框架分析K60上電啟動(dòng)挨次山東大學(xué)Kinetis培訓(xùn)〔1〕上電起初,單片機(jī)的電壓調(diào)整器會(huì)把整個(gè)系統(tǒng)置于POR〔上電復(fù)位〕狀態(tài)的上電階段,始終到工作電壓到達(dá)了可以讓單片機(jī)正常工作的電壓閾值之后才釋放這個(gè)上電階段,進(jìn)入復(fù)位階段;〔2〕在復(fù)位保持期間,由單片機(jī)內(nèi)部的模式把握復(fù)位規(guī)律統(tǒng)籌支配整個(gè)復(fù)位階段的執(zhí)行挨次;〔3〕首先MCG模塊使能,并默認(rèn)為FEI時(shí)鐘模式;〔4〕相應(yīng)模塊的時(shí)鐘使能,包括Coreclock,Systemclock,F(xiàn)lashclock,busclock等這些不需要門控〔clock

gate,M4的特色〕把握的時(shí)鐘;〔5〕Flash把握器從復(fù)位狀態(tài)釋放〔留意這時(shí)外部RESET腳照舊保持低電平〕,并且執(zhí)行一系列的初始化操作〔由于要為接下來的代碼執(zhí)行做預(yù)備了〕;K60上電啟動(dòng)挨次山東大學(xué)Kinetis培訓(xùn)〔6〕單片機(jī)/RESET引腳釋放,但是系統(tǒng)復(fù)位狀態(tài)連續(xù)保持,始終到上面的Flash把握器初始化完畢〔假設(shè)Flash把握器提前初始化好,則/RESET引腳釋放后馬上從POR狀態(tài)糊涂〕;〔7〕Kinetis從復(fù)位狀態(tài)喚醒之后,開頭設(shè)置堆?!瞫tack〕,程序計(jì)數(shù)器〔PC〕和連接存放器〔LR〕,即從中斷向量表地址0讀取內(nèi)容給堆棧指針,地址4讀取內(nèi)容給PC指針,LR存放器設(shè)置為0xFFFF_FFFF。〔8〕上面三個(gè)存放器設(shè)置好了之后,單片機(jī)就開頭從PC指針指向的地址開頭執(zhí)行代碼了,即進(jìn)入啟動(dòng)代碼階段,最終才轉(zhuǎn)到main開頭執(zhí)行。K60啟動(dòng)代碼分析山東大學(xué)Kinetis培訓(xùn)RestHandler清零通用存放器組跳轉(zhuǎn)到Kinetis_Start_C關(guān)閉看門狗假設(shè)從ROM啟動(dòng),則復(fù)制中斷向量表到RAM中修改中斷向量表地址為RAM中的地址復(fù)制初始化數(shù)據(jù)段.data到RAM把以ram_function聲明的函數(shù)拷貝到RAM中清零RAM中初始化為0的.BSS段初始化鎖相環(huán)PLL跳轉(zhuǎn)到main函數(shù)內(nèi)存映射.map文件分析山東大學(xué)Kinetis培訓(xùn)山東大學(xué)Kinetis培訓(xùn)五、K60外設(shè)資源在智能車中的應(yīng)用K60外設(shè)資源在智能車中的應(yīng)用K60高精度高速的AD,可以有效的采集傳感器模擬參數(shù);K60的每個(gè)IO都可以設(shè)置為中斷觸發(fā)源,為智能車硬件設(shè)計(jì)供給更大的靈敏性;K60的FTM模塊可以供給PWM通道,把握智能車的舵機(jī)和電機(jī);K60的PIT模塊實(shí)現(xiàn)周期性中斷,供給時(shí)間基準(zhǔn),或者與LPTMR模塊的脈沖累加功能實(shí)現(xiàn)速度測(cè)量;K60使用ARMCortex-M4的核,具有1.25DMIPS/MHz的運(yùn)算力氣,另外還有單時(shí)鐘周期乘法累加〔MAC〕單元,優(yōu)化的單指令多數(shù)據(jù)〔SIMD〕指令、飽和運(yùn)算指令等,使更加簡潔的處理算法的實(shí)現(xiàn)成為可能。山東大學(xué)Kinetis培訓(xùn)K60外設(shè)資源山東大學(xué)Kinetis培訓(xùn)GPIO模塊山東大學(xué)Kinetis培訓(xùn)GPIO模塊需要考慮如下幾個(gè)存放器: PORTx_PCRn——端口把握存放器,治理管腳復(fù)用 GPIOx_PDDR——端口數(shù)據(jù)方向存放器 GPIOx_PDOR——端口數(shù)據(jù)輸出存放器 GPIOx_PDIR——端口數(shù)據(jù)輸入存放器 GPIOx_PTOR——端口輸出翻轉(zhuǎn)存放器GPIO模塊山東大學(xué)Kinetis培訓(xùn)PORTx_PCRMUX-管腳復(fù)用把握PE-拉電阻使能0——禁能上拉或者下拉電阻1——禁能上拉或者下拉電阻PS-拉電阻屬性設(shè)置0——使能下拉電阻1——使能上拉電阻GPIO模塊山東大學(xué)Kinetis培訓(xùn)GPIOx_PDDRGPIO模塊山東大學(xué)Kinetis培訓(xùn)GPIOx_PDORGPIO模塊山東大學(xué)Kinetis培訓(xùn)GPIOx_PDIRGPIO模塊山東大學(xué)Kinetis培訓(xùn)GPIOx_PTORGPIO模塊山東大學(xué)Kinetis培訓(xùn)例程:PORTE_PCR(10)|=PORT_PCR_MUX(1);//使能PTE10為GPIO

GPIOE_PDDR|=1<<10;//設(shè)置PTE10為輸出

GPIOE_PDOR&=~(1<<10);//設(shè)置PTE10輸出為0A/D模塊山東大學(xué)Kinetis培訓(xùn)K60的AD模塊特點(diǎn):〔1〕最高16位AD轉(zhuǎn)換精度,逐次靠近型的,所以速度沒問題,而且能做到如此精度已實(shí)屬不易了,再往高估量就該換Σ-Δ的了;〔2〕最多4對(duì)差分模擬輸入通道和24個(gè)單端模擬輸入通道,對(duì)一般工業(yè)應(yīng)用足夠了;〔3〕輸出精度可選,差分模式可編程16位,13位,11位和9位模式,單端模式可編程為16位,12位,10位和8位;〔4〕輸入時(shí)鐘可選四種時(shí)鐘,即bus_clock,bus_clock/2,ALTCK,ADACK;〔5〕內(nèi)設(shè)內(nèi)部溫度傳感器,用于監(jiān)控芯片溫度;〔6〕硬件平均功能,對(duì)AD轉(zhuǎn)換結(jié)果在隊(duì)列里平均之后輸出;〔7〕帶自校準(zhǔn)模式;〔8〕最高64倍PGA〔programablegainAmplifier〕。A/D模塊山東大學(xué)Kinetis培訓(xùn)A/D模塊需要考慮如下幾個(gè)存放器: ADCx_SC1n——ADC狀態(tài)及把握存放器1 ADCx_CFG1——ADC配置存放器1 ADCx_CFG2——ADC配置存放器2 ADCx_Rn——ADC結(jié)果存放器 ADCx_SC2——ADC狀態(tài)及把握存放器2A/D模塊山東大學(xué)Kinetis培訓(xùn)voidADC_Init1(void){SIM_SCGC3|=(SIM_SCGC3_ADC1_MASK);//翻開ADC1門控時(shí)鐘

ADC1_CFG1=ADC_CFG1_ADIV(3)//輸入時(shí)鐘8安排|ADC_CFG1_MODE(0)//8位精度|ADC_CFG1_ADICLK(0);//時(shí)鐘源為Busclk

ADC1_SC2=0;

ADC1_SC1A=ADC_SC1_ADCH(20);//選擇AD1_20通道

ADC1_SC1A&=~ADC_SC1_AIEN_MASK;//制止轉(zhuǎn)換完成中斷}ADC初始化函數(shù):A/D模塊山東大學(xué)Kinetis培訓(xùn)voidRead_ATD1(uint8*pbuf,uint16len){do{ADC1_SC1A|=ADC_SC1_ADCH(20);//寫入ADCx_SC1A觸發(fā)轉(zhuǎn)化while(!(ADC1_SC1A&ADC_SC1_COCO_MASK));*pbuf++=(uint8)ADC1_RA;}while(--len);}ADC讀函數(shù):PWM模塊山東大學(xué)Kinetis培訓(xùn)FTM模塊的特點(diǎn):1、時(shí)鐘源可選擇,F(xiàn)TM的時(shí)鐘源可以來自系統(tǒng)時(shí)鐘或外部時(shí)鐘。可對(duì)時(shí)鐘分頻,分頻比為1,2,4,8,16,32,64,128,這屬于定時(shí)器的特性;2、最多3個(gè)FTM定時(shí)器FTM0、FTM1、FTM2,即可以有3個(gè)自由計(jì)數(shù)器,也即可以存在獨(dú)立的3路PWM模塊;3、全部的通道都可以設(shè)置為中心對(duì)齊的PWM輸出模式,且某個(gè)FTM定時(shí)器中的每對(duì)通道都可以級(jí)聯(lián)以產(chǎn)生PWM信號(hào);4、PWM通道可成對(duì)工作在一樣輸出或互補(bǔ)輸出,也可各通道獨(dú)立輸出,當(dāng)通道成對(duì)互補(bǔ)輸出時(shí)可使用死區(qū)插入功能,這對(duì)一些全橋把握電路有很大意義,省去了外圍死區(qū)電路;5、可軟件把握PWM的輸出,即屏蔽或者開啟單獨(dú)某個(gè)通道。PWM模塊山東大學(xué)Kinetis培訓(xùn)PWM模塊需要考慮如下幾個(gè)存放器:PORTx_PCR——端口把握存放器FTMx_MODE——特征模式選擇存放器FTMx_SC——狀態(tài)及把握存放器FTMx_OUTINT——通道輸出初始狀態(tài)存放器FTMx_CNT——計(jì)數(shù)存放器FTMx_OUTMASK——輸出屏蔽存放器FTMx_MOD——模數(shù)存放器〔周期存放器〕FTMx_CnSC——通道狀態(tài)及把握存放器FTMx_CnV——通道值存放器〔占空比存放器〕FTMx_CNTIN——計(jì)數(shù)器初始值存放器PIT模塊山東大學(xué)Kinetis培訓(xùn)PIT模塊山東大學(xué)Kinetis培訓(xùn)PIT模塊需要考慮如下幾個(gè)存放器: PIT_MCR——PIT模塊把握存放器 PIT_LDVALn——定時(shí)器加載存放器 PIT_TCTRn——定時(shí)器把握存放器 PIT_TFLGn——定時(shí)器標(biāo)志存放器PIT模塊山東大學(xué)Kinetis培訓(xùn)PIT_MCRPIT模塊山東大學(xué)Kinetis培訓(xùn)PIT_LDVALnPIT模塊山東大學(xué)Kinetis培訓(xùn)PIT_TCTRLPIT模塊山東大學(xué)Kinetis培訓(xùn)voidPIT_Init(void){SIM_SCGC6|=SIM_SCGC6_PIT_MASK;//翻開PIT時(shí)鐘PIT_TCTRL0&=~PIT_TCTRL_TEN_MASK;

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論