版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
ARM系統(tǒng)簡介手把手教你學(xué)ARM之LPC2103入門篇Contents課程目錄從ARM架構(gòu)基礎(chǔ)到LPC2103實(shí)戰(zhàn)編程,系統(tǒng)掌握嵌入式開發(fā)核心技能。01ARM架構(gòu)體系概述02LPC2103芯片架構(gòu)與核心特性03片內(nèi)外設(shè)資源詳解04開發(fā)環(huán)境與工具鏈05實(shí)戰(zhàn)編程入門CHAPTER01ARM架構(gòu)體系概述從RISC理念到ARM7TDMI-S內(nèi)核,建立嵌入式處理器的全局認(rèn)知EMBEDDEDPROCESSORARM公司與處理器生態(tài)ARM通過IP授權(quán)模式構(gòu)建了全球最大的嵌入式處理器生態(tài),其低功耗、高性能的RISC架構(gòu)設(shè)計(jì)覆蓋了從物聯(lián)網(wǎng)終端到高性能服務(wù)器的全場(chǎng)景,全球超過95%的智能手機(jī)采用ARM架構(gòu),使其成為嵌入式開發(fā)的事實(shí)標(biāo)準(zhǔn)。ARM總部·英國劍橋ARM公司成立于1990年,總部位于英國劍橋,采用IP授權(quán)模式將處理器設(shè)計(jì)授權(quán)給NXP、高通、三星等全球半導(dǎo)體廠商1990·IPLicensingRISC精簡指令集架構(gòu)以低功耗、高代碼密度著稱,特別適合電池供電的嵌入式和移動(dòng)設(shè)備,與x86的CISC架構(gòu)形成鮮明對(duì)比RISCArchitectureARM生態(tài)覆蓋從Cortex-M系列微控制器到Cortex-A系列應(yīng)用處理器的完整產(chǎn)品線,滿足從簡單傳感器節(jié)點(diǎn)到高性能計(jì)算的全場(chǎng)景需求Cortex-M/Cortex-A全球超過2000億顆ARM芯片出貨量,開發(fā)者社區(qū)龐大、工具鏈成熟、參考資料豐富,入門門檻相對(duì)較低且職業(yè)前景廣闊2000億+出貨量ArchitectureOverviewARM處理器系列與應(yīng)用定位ARM處理器按應(yīng)用場(chǎng)景分為三大系列:Cortex-M面向微控制器的低功耗實(shí)時(shí)控制、Cortex-A面向移動(dòng)設(shè)備的高性能應(yīng)用處理、Cortex-R面向安全關(guān)鍵的硬實(shí)時(shí)系統(tǒng),LPC2103所用的ARM7TDMI-S屬于微控制器系列的經(jīng)典內(nèi)核。Cortex-M微控制器系列面向嵌入式控制場(chǎng)景,強(qiáng)調(diào)低功耗、低成本和實(shí)時(shí)中斷響應(yīng),典型應(yīng)用包括傳感器節(jié)點(diǎn)、電機(jī)控制和消費(fèi)電子包含M0/M0+、M3、M4、M7、M23、M33等多個(gè)子系列,性能從入門到高端全覆蓋,ARM7TDMI-S是其經(jīng)典前身低功耗·實(shí)時(shí)控制Cortex-A應(yīng)用處理器系列面向高性能計(jì)算場(chǎng)景,運(yùn)行Linux/Android等復(fù)雜操作系統(tǒng),支持MMU虛擬內(nèi)存和多核架構(gòu),典型應(yīng)用為智能手機(jī)和平板從A5到A78覆蓋不同性能等級(jí),旗艦芯片常采用大小核混合架構(gòu)以平衡性能與功耗高性能·多核架構(gòu)Cortex-R實(shí)時(shí)處理器系列面向安全關(guān)鍵的硬實(shí)時(shí)系統(tǒng),確定性延遲和高可靠性是核心設(shè)計(jì)目標(biāo),典型應(yīng)用包括汽車ABS制動(dòng)和磁盤控制器不配備MMU但支持MPU內(nèi)存保護(hù),保證中斷響應(yīng)時(shí)間的可預(yù)測(cè)性,滿足ASIL-D等功能安全等級(jí)要求硬實(shí)時(shí)·功能安全COREARCHITECTUREARM7TDMI-S內(nèi)核架構(gòu)詳解ARM7TDMI-S是LPC2103的核心引擎,采用三級(jí)流水線RISC架構(gòu),同時(shí)支持32位ARM指令集和16位Thumb指令集,在代碼密度與執(zhí)行效率之間取得平衡;內(nèi)置EmbeddedICE調(diào)試模塊支持JTAG片上調(diào)試,大幅降低了開發(fā)門檻。三級(jí)流水線設(shè)計(jì)取指→譯碼→執(zhí)行,每條指令平均一個(gè)時(shí)鐘周期完成,70MHz主頻下提供穩(wěn)定高效的運(yùn)算性能70MHz雙指令集架構(gòu)ARM32位指令集提供完整尋址與數(shù)據(jù)處理;Thumb16位壓縮常用操作,代碼體積減少約30%?30%寄存器與工作模式31個(gè)通用寄存器加6個(gè)狀態(tài)寄存器,支持7種工作模式切換,滿足操作系統(tǒng)和中斷處理需求37片上實(shí)時(shí)調(diào)試EmbeddedICERT提供硬件斷點(diǎn)與觀察點(diǎn),配合RealMonitor實(shí)現(xiàn)片上調(diào)試,無需外部仿真器JTAGArchitectureARM處理器七種工作模式ARM7TDMI-S支持7種工作模式,通過模式切換實(shí)現(xiàn)用戶程序與系統(tǒng)特權(quán)代碼的隔離。IRQ和FIQ是最常用的中斷響應(yīng)模式。ARM7TDMI-S七種工作模式速查表工作模式權(quán)限級(jí)別觸發(fā)方式典型應(yīng)用User(用戶模式)非特權(quán)正常程序執(zhí)行普通應(yīng)用程序運(yùn)行FIQ(快速中斷)特權(quán)FIQ異常觸發(fā)高速數(shù)據(jù)傳輸與實(shí)時(shí)處理IRQ(普通中斷)特權(quán)IRQ中斷觸發(fā)通用外設(shè)中斷服務(wù)Supervisor(管理模式)特權(quán)復(fù)位或SWI軟中斷操作系統(tǒng)內(nèi)核與系統(tǒng)調(diào)用Abort(中止模式)特權(quán)內(nèi)存訪問異常虛擬內(nèi)存與存儲(chǔ)保護(hù)Undefined(未定義)特權(quán)執(zhí)行非法指令軟件仿真與異常捕獲System(系統(tǒng)模式)特權(quán)軟件切換操作系統(tǒng)特權(quán)任務(wù)ARM7TDMI-S通過7種工作模式實(shí)現(xiàn)用戶態(tài)與內(nèi)核態(tài)隔離,嵌入式開發(fā)重點(diǎn)掌握User、IRQ和FIQ三種模式即可滿足絕大多數(shù)應(yīng)用需求ARM·ExceptionHandling異常處理與中斷響應(yīng)機(jī)制ARM異常處理通過自動(dòng)保存現(xiàn)場(chǎng)、切換模式和向量跳轉(zhuǎn)三步完成中斷響應(yīng),LPC2103集成的向量中斷控制器VIC支持32個(gè)中斷源的優(yōu)先級(jí)管理和向量地址直接跳轉(zhuǎn),使多中斷嵌套處理更加高效可靠。AUTO異常觸發(fā)四步保存返回地址至LR、備份CPSR至SPSR、切換工作模式、跳轉(zhuǎn)異常向量地址,無需軟件干預(yù)。LR/SPSRVECTORTABLE異常向量表0x00000000起始64字節(jié)空間,每類異常占4字節(jié)跳轉(zhuǎn)指令,支持Reset、SWI等7種標(biāo)準(zhǔn)異常。0x00/64BVICVIC向量中斷32個(gè)中斷源分IRQ、FIQ和向量IRQ三類,向量IRQ可配置16級(jí)優(yōu)先級(jí)并直接跳轉(zhuǎn)服務(wù)函數(shù)。32·16級(jí)NESTING中斷嵌套處理ISR中手動(dòng)重新使能IRQ位實(shí)現(xiàn)嵌套,高優(yōu)先級(jí)可打斷低優(yōu)先級(jí);退出從SPSR恢復(fù)CPSR,MOVS返回。MOVSCHAPTER02LPC2103芯片架構(gòu)與核心特性深入解讀NXPLPC2103的存儲(chǔ)體系、時(shí)鐘系統(tǒng)與通用I/O架構(gòu)OverviewLPC2103芯片總體概覽LPC2103是NXP基于ARM7TDMI-S內(nèi)核的高性價(jià)比32位微控制器,在LQFP48小封裝內(nèi)集成70MHz處理能力、32KBFlash、8KBSRAM及豐富外設(shè)資源。NXPLPC2103·LQFP48封裝實(shí)物ARM7TDMI-S內(nèi)核70MHz最高70MHz工作頻率,128位寬度Flash接口加速器保證高速代碼執(zhí)行32KBFlashISP/IAP支持在線編程,單扇區(qū)擦除100ms,256字節(jié)編程僅需1ms8KBSRAM128bitAHB滿足數(shù)據(jù)緩存與堆棧需求,128位AHB總線保證CPU高帶寬訪問LQFP48+應(yīng)用32個(gè)GPIO、13個(gè)外部中斷;覆蓋POS終端、門禁、網(wǎng)關(guān)、工業(yè)控制與醫(yī)療設(shè)備MemoryArchitecture存儲(chǔ)器架構(gòu)與地址映射LPC2103采用Flash+SRAM雙存儲(chǔ)架構(gòu),32KBFlash通過128位寬度加速器在70MHz下實(shí)現(xiàn)高效代碼執(zhí)行,8KBSRAM提供高速數(shù)據(jù)讀寫空間;內(nèi)置BootROM集成ISP/IAP服務(wù)函數(shù),支持無需編程器的在線固件更新。Flash32KB片內(nèi)Flash(地址0x00000000起)存放程序代碼,128位寬度加速接口使CPU在70MHz主頻下實(shí)現(xiàn)接近零等待的代碼讀取性能。SRAM8KB片內(nèi)SRAM(地址0x40000000起)用于運(yùn)行時(shí)變量和堆棧,通過AHB高性能總線與內(nèi)核直連,支持單周期全速讀寫。BootROMISP/IAPBootROM位于片內(nèi)高地址空間,集成ISP/IAP服務(wù)例程,開發(fā)者可通過調(diào)用ROM函數(shù)實(shí)現(xiàn)Flash的扇區(qū)擦除和字節(jié)編程。AddressMapAPB/AHB外設(shè)寄存器區(qū)(APB總線0xE0000000起)和GPIO快速端口(AHB總線0xFFE00000起),各區(qū)域訪問速度不同需合理分配。ClockArchitecture時(shí)鐘系統(tǒng)與PLL鎖相環(huán)配置LPC2103的時(shí)鐘系統(tǒng)以PLL鎖相環(huán)為核心,支持1-25MHz外部晶振輸入并倍頻至最高70MHzCPU時(shí)鐘,100微秒快速建立;外設(shè)時(shí)鐘分頻器VPBDIV提供靈活的分頻配置,在性能與功耗之間實(shí)現(xiàn)精細(xì)平衡。1–70MHzPLL鎖相環(huán)倍頻配置片內(nèi)PLL接受1MHz至25MHz外部晶振輸入,通過配置倍頻系數(shù)M和分頻系數(shù)P,將CPU時(shí)鐘頻率設(shè)定在10MHz到70MHz之間的任意值。100μs快速喚醒恢復(fù)PLL建立時(shí)間約100微秒,從低功耗掉電模式喚醒時(shí)可快速恢復(fù)全速運(yùn)行,配合外部中斷或RTC喚醒機(jī)制實(shí)現(xiàn)低功耗設(shè)計(jì)。?·?·1×VPBDIV外設(shè)分頻VPBDIV外設(shè)時(shí)鐘分頻器支持將APB總線時(shí)鐘設(shè)置為系統(tǒng)時(shí)鐘的1/4、1/2或1倍,降低外設(shè)總線頻率可有效減少動(dòng)態(tài)功耗。44.2MHz典型串口配置方案11.0592MHz晶振配合PLL倍頻系數(shù)4得到44.2368MHz主頻,該頻率可被常見波特率精確整除,便于UART串口通信。LPC2103·PERIPHERALGPIO通用輸入輸出端口LPC2103的32個(gè)GPIO引腳(P0端口)支持5V容忍輸入和引腳功能復(fù)用,通過IODIR/IOSET/IOCLR/IOPIN四個(gè)寄存器即可完成方向配置和電平控制;引腳連接模塊PINSEL可將GPIO切換為UART、SPI、I2C等外設(shè)功能。015V容忍設(shè)計(jì):32個(gè)GPIO引腳均為5V容忍,3.3V供電下可直接與5V邏輯器件互連,簡化混合電壓系統(tǒng)接口設(shè)計(jì)。02四寄存器控制:IODIR配置方向,IOSET/IOCLR置高/清零輸出,IOPIN讀取引腳實(shí)際電平狀態(tài)。03PINSEL功能復(fù)用:每2位控制一個(gè)引腳,可在GPIO與UART、SPI、I2C等三檔外設(shè)功能間靈活切換。04快速GPIO:位于AHB總線地址空間,相比APB標(biāo)準(zhǔn)GPIO訪問更快,適合時(shí)序敏感的高速位操作應(yīng)用。GPIO引腳連接LED實(shí)驗(yàn)·開發(fā)板實(shí)拍PowerManagement電源管理與低功耗模式LPC2103提供空閑、RTC主動(dòng)和掉電三種節(jié)電模式,配合外設(shè)時(shí)鐘單獨(dú)使能/禁止機(jī)制,可實(shí)現(xiàn)從輕度省電到深度休眠的多級(jí)功耗管理;RTC主動(dòng)模式下僅消耗微安級(jí)電流,通過外部中斷或RTC鬧鐘可快速喚醒恢復(fù)正常工作。空閑模式CPU內(nèi)核停止但外設(shè)時(shí)鐘和中斷系統(tǒng)保持運(yùn)行,功耗降至mA級(jí)別,任一使能中斷均可立即喚醒CPU恢復(fù)執(zhí)行mA級(jí)RTC主動(dòng)模式僅保留RTC實(shí)時(shí)時(shí)鐘運(yùn)行,主時(shí)鐘和外設(shè)全部關(guān)閉,功耗降至微安級(jí),可由RTC鬧鐘或外部中斷引腳喚醒μA級(jí)掉電模式片內(nèi)振蕩器停止,所有功能模塊斷電,僅保留SRAM數(shù)據(jù)不丟失,需外部中斷觸發(fā)喚醒并等待PLL重新鎖定SRAM保持PCONP外設(shè)電源控制PCONP寄存器可單獨(dú)使能或禁止每個(gè)外設(shè)模塊的時(shí)鐘供給,關(guān)閉未使用模塊可減少20%-40%的動(dòng)態(tài)功耗20–40%VPBDIV總線分頻外設(shè)時(shí)鐘分頻器可降低APB總線頻率,在不影響CPU性能的前提下減少外設(shè)總線切換功耗,適合低功耗優(yōu)先的設(shè)計(jì)場(chǎng)景APB分頻多級(jí)功耗策略三種節(jié)電模式與外設(shè)精細(xì)控制組合使用,可在性能需求與能耗之間靈活取舍,覆蓋從實(shí)時(shí)響應(yīng)到深度休眠的完整場(chǎng)景3+2Chapter03片內(nèi)外設(shè)資源詳解定時(shí)器、ADC、UART、SPI、I2C等核心外設(shè)的原理與配置方法LPC2103TimerSystem定時(shí)器與計(jì)數(shù)器系統(tǒng)LPC2103配備2個(gè)32位定時(shí)器和2個(gè)16位定時(shí)器,每個(gè)32位定時(shí)器擁有4路匹配通道和4路捕獲通道,支持精確延時(shí)、PWM波形生成、外部事件計(jì)數(shù)和脈沖寬度測(cè)量等多種功能,是嵌入式實(shí)時(shí)控制和信號(hào)處理的核心外設(shè)。PWM匹配01匹配寄存器×PWM輸出32位定時(shí)器Timer0/Timer1各含4個(gè)匹配寄存器(MAT0.0-MAT0.3),計(jì)數(shù)匹配時(shí)可觸發(fā)中斷、復(fù)位計(jì)數(shù)器或翻轉(zhuǎn)對(duì)應(yīng)引腳電平,實(shí)現(xiàn)精確PWM輸出。匹配功能支持電平翻轉(zhuǎn)、置位、復(fù)位及定時(shí)器復(fù)位等多種操作模式。MAT0.0—MAT0.3捕獲通道02捕獲通道與事件記錄捕獲通道(CAP)可記錄外部事件發(fā)生時(shí)的精確計(jì)數(shù)器值,支持上升沿、下降沿或雙邊沿觸發(fā),適用于頻率測(cè)量和脈寬分析。捕獲值可用于計(jì)算信號(hào)周期、占空比等關(guān)鍵參數(shù)。CAP·雙邊沿觸發(fā)預(yù)分頻器03預(yù)分頻與分辨率調(diào)節(jié)預(yù)分頻器PR寄存器將PCLK分頻后作為定時(shí)器計(jì)數(shù)時(shí)鐘,通過設(shè)定PR值可靈活調(diào)節(jié)定時(shí)器分辨率,例如PR=99時(shí)每個(gè)計(jì)數(shù)代表1微秒(PCLK=100MHz時(shí))。預(yù)分頻器擴(kuò)展了定時(shí)器的定時(shí)范圍。PR=99→1μs16位定時(shí)器0416位定時(shí)器·輕量方案16位定時(shí)器Timer2/Timer3各含3路捕獲和7路比較通道,資源開銷更小,適合周期性中斷和簡單事件計(jì)時(shí)等基礎(chǔ)定時(shí)任務(wù)。16位架構(gòu)在保持功能完整的同時(shí)降低了系統(tǒng)復(fù)雜度。Timer2/Timer3Analog-to-DigitalConverter10位ADC模數(shù)轉(zhuǎn)換器LPC2103集成10位ADC,8路模擬輸入,單次轉(zhuǎn)換低至2.44μs,獨(dú)立結(jié)果寄存器減少中斷開銷,勝任傳感器采集與信號(hào)分析。模擬信號(hào)采集場(chǎng)景·傳感器與ADC元器件0110位分辨率提供1024級(jí)量化精度,3.3V參考電壓下最小步長約3.22mV,滿足工業(yè)傳感器與消費(fèi)類信號(hào)采集需求028路模擬輸入(AD0.0–AD0.7)支持軟件逐通道與硬件自動(dòng)掃描,自動(dòng)模式依次轉(zhuǎn)換并存入獨(dú)立結(jié)果寄存器03單次轉(zhuǎn)換低至2.44μs,連續(xù)采樣率超400kSPS,應(yīng)對(duì)音頻信號(hào)采集與中速工業(yè)過程監(jiān)控的實(shí)時(shí)性需求04每通道結(jié)果寄存器含DONE與OVERRUN標(biāo)志位,支持輪詢或中斷方式判斷轉(zhuǎn)換狀態(tài),避免數(shù)據(jù)丟失LPC2103·SerialCommunicationUART通用異步收發(fā)器LPC2103集成兩個(gè)兼容16C550標(biāo)準(zhǔn)的UART串口,支持靈活的波特率配置和FIFO緩沖,UART1額外提供Modem硬件流控接口;UART是嵌入式調(diào)試輸出和設(shè)備間數(shù)據(jù)通信最基礎(chǔ)、最常用的串行通信方式。UART0基礎(chǔ)串口01兼容16C550工業(yè)標(biāo)準(zhǔn),支持5-8位數(shù)據(jù)位、1-2位停止位和奇偶校驗(yàn)位配置,通過DLL/DLM除數(shù)寄存器靈活設(shè)定常用波特率(9600/115200等)02內(nèi)置16字節(jié)FIFO緩沖,配合接收觸發(fā)級(jí)別設(shè)置可減少中斷次數(shù),在高波特率通信時(shí)有效降低CPU中斷負(fù)載UART1增強(qiáng)型串口03增加Modem接口,支持CTS/RTS/DSR/DTR/DCD/RI硬件流控,適合長距離通信和與Modem設(shè)備互聯(lián)04Modem狀態(tài)中斷,可檢測(cè)DCD、RI等信號(hào)變化,配合DMA傳輸實(shí)現(xiàn)大批量數(shù)據(jù)高效可靠傳輸,無需CPU逐字節(jié)參與串口功能對(duì)比兩個(gè)UART共享相同的基礎(chǔ)架構(gòu),UART1在此基礎(chǔ)上擴(kuò)展了Modem控制信號(hào),滿足不同通信場(chǎng)景需求。數(shù)據(jù)位5–8bit停止位1/2bitFIFO緩沖16Byte波特率9600/115200硬件流控UART1Only16C550IndustryStandardCompatibleSERIALBUSINTERFACEI2C與SPI/SSP串行總線LPC2103同時(shí)集成雙路I2C(400kbit/s快速模式)和SPI/SSP高速同步串行接口,I2C以兩線制和地址尋址適合多從機(jī)低速通信,SPI以四線制全雙工適合高速數(shù)據(jù)傳輸,兩者互補(bǔ)覆蓋板級(jí)芯片間通信的全部需求。I2C總線接口01集成I2C0和I2C1兩個(gè)獨(dú)立接口,支持標(biāo)準(zhǔn)模式100kbit/s和快速模式400kbit/s,可作為主機(jī)或從機(jī)運(yùn)行027位地址尋址機(jī)制允許在同一總線上掛載多達(dá)127個(gè)從設(shè)備,僅需SDA和SCL兩根信號(hào)線即可實(shí)現(xiàn)多設(shè)備通信03內(nèi)置數(shù)據(jù)緩沖和可變數(shù)據(jù)長度功能,支持重復(fù)啟動(dòng)條件和總線仲裁檢測(cè),滿足復(fù)雜多主機(jī)總線拓?fù)湫枨骃PI與SSP接口01SPI接口支持主從全雙工通信,MOSI/MISO/SCK三線制加SSEL片選信號(hào),時(shí)鐘頻率可達(dá)數(shù)十MHz,適合高速數(shù)據(jù)吞吐02SSP(同步串行端口)兼容SPI和Microwire協(xié)議,具備8位FIFO緩沖和可編程幀格式(4-16位),靈活性高于標(biāo)準(zhǔn)SPI接口03支持硬件流控制和DMA傳輸,可實(shí)現(xiàn)無CPU干預(yù)的高速連續(xù)數(shù)據(jù)交換,顯著降低處理器負(fù)載并提升系統(tǒng)實(shí)時(shí)響應(yīng)能力PERIPHERALMODULESRTC實(shí)時(shí)時(shí)鐘與看門狗定時(shí)器RTC實(shí)時(shí)時(shí)鐘具有獨(dú)立電源和專用32.768kHz振蕩器,主電源斷電后仍可維持計(jì)時(shí)并支持鬧鐘喚醒;看門狗定時(shí)器作為系統(tǒng)可靠性的最后防線,在程序異常跑飛時(shí)自動(dòng)復(fù)位芯片,兩者共同保障嵌入式系統(tǒng)的持續(xù)運(yùn)行和故障自恢復(fù)能力。RTC·電源與計(jì)時(shí)獨(dú)立電源持續(xù)計(jì)時(shí)獨(dú)立VBAT電源引腳和專用32.768kHz時(shí)鐘輸入,主電源掉電后依靠紐扣電池繼續(xù)計(jì)時(shí),時(shí)間信息不丟失32.768kHzRTC·鬧鐘喚醒完整日歷與鬧鐘中斷支持秒/分/時(shí)/日/月/年完整日歷功能和鬧鐘匹配中斷,可設(shè)定特定時(shí)間觸發(fā)中斷將芯片從掉電模式喚醒ALARMWAKE-UPWDT·超時(shí)配置可編程超時(shí)周期超時(shí)周期可通過WDTV寄存器設(shè)定為256到232個(gè)PCLK周期之間的任意值,超時(shí)后觸發(fā)芯片復(fù)位或中斷256—232WDT·喂狗機(jī)制周期性喂狗保障可靠性正常程序中需周期性寫入WDFEED寄存器重置計(jì)數(shù)器,若程序異常未能及時(shí)喂狗則觸發(fā)系統(tǒng)復(fù)位,保障無人值守設(shè)備可靠性WDFEEDRESETLPC2103·FLASHPROGRAMMINGISP/IAP在系統(tǒng)與在應(yīng)用編程ISP通過串口實(shí)現(xiàn)無需編程器的固件下載,IAP允許應(yīng)用程序運(yùn)行時(shí)修改Flash內(nèi)容,兩者結(jié)合使LPC2103支持現(xiàn)場(chǎng)固件升級(jí)與遠(yuǎn)程OTA更新,大幅降低了生產(chǎn)燒錄和后期維護(hù)成本。ISP在系統(tǒng)編程上電時(shí)P0.14引腳為低電平則進(jìn)入BootROM的ISP模式,通過UART0串口接收固件數(shù)據(jù)并寫入Flash,無需外部編程器即可完成程序燒錄P0.14+UART0IAP在應(yīng)用編程應(yīng)用程序運(yùn)行中可調(diào)用BootROM中的IAP函數(shù)執(zhí)行Flash扇區(qū)擦除和字節(jié)編程,實(shí)現(xiàn)運(yùn)行時(shí)固件更新和參數(shù)存儲(chǔ)256B/1msPROTECTIONFlash扇區(qū)保護(hù)扇區(qū)保護(hù)機(jī)制防止意外擦除Boot區(qū)域,IAP命令包含準(zhǔn)備、復(fù)制、比較和校驗(yàn)等操作,確保固件更新的完整性和安全性Boot區(qū)鎖定APPLICATIONOTA固件升級(jí)遠(yuǎn)程設(shè)備通過UART或SPI接收新固件包,存入SRAM緩沖區(qū)后調(diào)用IAP寫入Flash指定區(qū)域,實(shí)現(xiàn)無需物理接觸的OTA固件升級(jí)UART/SPIChapter04開發(fā)環(huán)境與工具鏈IDE選擇、編譯器配置、調(diào)試器連接與工程模板搭建全流程DEVELOPMENTTOOLCHAIN主流開發(fā)工具鏈選型KeilMDK是LPC2103開發(fā)的首選工具鏈,μVisionIDE集成編譯、鏈接和調(diào)試功能,免費(fèi)Lite版32KB代碼限制恰好匹配LPC2103的Flash容量;開源GCC-ARM工具鏈可作為替代方案,J-Link和ULINK調(diào)試器提供完整的片上調(diào)試能力。KeilMDK開發(fā)套件μVisionIDE提供代碼編輯、項(xiàng)目管理、編譯鏈接和圖形化調(diào)試一站式環(huán)境,ARM編譯器優(yōu)化等級(jí)高,生成代碼體積小、執(zhí)行效率高M(jìn)DK-Lite免費(fèi)版代碼限制32KB恰好滿足LPC2103全部Flash空間,內(nèi)置μVision調(diào)試器支持?jǐn)帱c(diǎn)、單步、變量觀察和內(nèi)存查看等完整調(diào)試功能Keil提供MCB2103評(píng)估板和豐富的示例代碼(含看門狗、定時(shí)器等外設(shè)示例),配套R(shí)TX實(shí)時(shí)操作系統(tǒng)可直接集成使用開源替代方案GCC-ARMEmbedded工具鏈完全免費(fèi)開源,配合VSCode+Cortex-Debug插件可實(shí)現(xiàn)接近商業(yè)IDE的開發(fā)體驗(yàn),適合追求開放生態(tài)的開發(fā)者OpenOCD作為開源JTAG調(diào)試服務(wù)端,支持J-Link、ST-Link等多種調(diào)試器硬件,通過GDB遠(yuǎn)程協(xié)議與IDE連接實(shí)現(xiàn)片上調(diào)試EMBEDDEDDEVELOPMENTKeilMDK工程創(chuàng)建與配置在KeilMDK中創(chuàng)建LPC2103工程需要完成目標(biāo)設(shè)備選擇、晶振頻率設(shè)定、調(diào)試器綁定和啟動(dòng)代碼添加四個(gè)關(guān)鍵步驟;良好的工程目錄結(jié)構(gòu)和鏈接腳本配置是保證代碼正確編譯和下載的基礎(chǔ),建議從官方示例工程模板起步修改。目標(biāo)設(shè)備選擇NewProject中選擇NXPLPC2103目標(biāo)設(shè)備,μVision自動(dòng)加載設(shè)備數(shù)據(jù)庫中的Flash/SRAM地址范圍和寄存器定義文件,為編譯和調(diào)試提供硬件參數(shù)LPC2103晶振頻率設(shè)定Target配置頁設(shè)定外部晶振頻率,該值影響PLL配置代碼和UART波特率計(jì)算的準(zhǔn)確性,務(wù)必與實(shí)際硬件一致11.0592MHz調(diào)試器綁定Debug配置頁綁定調(diào)試器類型,F(xiàn)lashDownload配置頁添加LPC2103的Flash編程算法并勾選ResetandRun實(shí)現(xiàn)下載后自動(dòng)運(yùn)行J-Link啟動(dòng)代碼與鏈接腳本startup.s定義Reset、IRQ、FIQ等異常向量表和初始堆棧設(shè)置,鏈接腳本指定Flash和SRAM的起始地址與大小,共同構(gòu)成程序加載的底層框架startup.sDebugging調(diào)試器連接與調(diào)試技巧J-Link/ULINK調(diào)試器通過JTAG接口提供LPC2103的完整片上調(diào)試能力,掌握斷點(diǎn)設(shè)置、單步執(zhí)行、寄存器觀察和Watch變量跟蹤四項(xiàng)基本調(diào)試技能,可大幅提升嵌入式代碼的排錯(cuò)效率和問題定位速度。01JTAG調(diào)試接口使用TCK、TMS、TDI、TDO四根信號(hào)線加GND和VREF共6根連線,調(diào)試器通過JTAG協(xié)議與ARM7TDMI-S內(nèi)核的EmbeddedICE模塊通信02硬件斷點(diǎn)由EmbeddedICE模塊實(shí)現(xiàn),最多支持2個(gè)硬件斷點(diǎn)和2個(gè)觀察點(diǎn),不消耗Flash空間且不影響程序執(zhí)行速度,優(yōu)于軟件斷點(diǎn)方案03單步執(zhí)行(StepInto/Over/Out)配合反匯編窗口可逐指令追蹤程序流程,SystemViewer面板實(shí)時(shí)顯示所有外設(shè)寄存器的當(dāng)前值和位字段狀態(tài)04邏輯分析儀功能可追蹤GPIO引腳、定時(shí)器輸出等信號(hào)的變化時(shí)序,配合示波器對(duì)比實(shí)際波形可快速定位硬件接口和時(shí)序配置問題SEGGERJ-Link調(diào)試器·JTAG/SWD調(diào)試接口REGISTERACCESS頭文件與寄存器訪問機(jī)制LPC2103.H將外設(shè)寄存器映射為C語言指針和宏定義,通過位操作控制硬件;良好驅(qū)動(dòng)封裝在寄存器之上抽象功能函數(shù),提升可讀性與可移植性。寄存器映射定義LPC2103.H定義所有外設(shè)寄存器的基地址和位字段宏,如PINSEL0、IODIR0、U0DLL,通過volatile指針保證編譯器不優(yōu)化硬件訪問volatile*位操作核心模式讀取當(dāng)前值→按位修改目標(biāo)位→寫回新值,如IODIR0|=(1<<7)將P0.7配置為輸出而不影響其他引腳Read→Modify→Write驅(qū)動(dòng)封裝實(shí)踐將寄存器操作封裝為GPIO_SetDir()、UART_SendByte()等功能函數(shù),主程序只調(diào)用接口不直接操作寄存器地址APIAbstraction位段宏定義技巧BIT(n)、SET_BIT(reg,bit)、CLR_BIT(reg,bit)等常用宏簡化位操作書寫,提高代碼可讀性與復(fù)用性#defineMACROCHAPTER05實(shí)戰(zhàn)編程入門從GPIO點(diǎn)燈到中斷、定時(shí)器、串口通信,完整代碼實(shí)例與逐行解析Hands-onLab實(shí)戰(zhàn)一:GPIO控制LED閃爍GPIO控制LED閃爍是嵌入式開發(fā)入門的第一個(gè)實(shí)驗(yàn),通過PINSEL引腳選擇→IODIR方向配置→IOSET/IOCLR電平操作三步完成硬件控制,掌握這一流程后所有數(shù)字量輸出外設(shè)均可觸類旁通。程序初始化流程PINSEL—引腳功能選擇PINSEL0&=~(0x03<<14)將P0.7引腳的功能選擇位清零,設(shè)為GPIO模式而非UART/SPI等復(fù)用功能。這是使用GPIO前的必要步驟,確保引腳被正確配置為通用輸入輸出功能。IODIR—方向配置IODIR0|=(1<<7)方向寄存器對(duì)應(yīng)位置1配置為輸出模式;IOSET0/IOCLR0分別控制高電平和低電平。方向配置決定引腳是輸出驅(qū)動(dòng)外設(shè)還是讀取外部信號(hào)。主循環(huán)與延時(shí)控制LOOP—主循環(huán)控制IOSET0/IOCLR0主循環(huán)中交替執(zhí)行點(diǎn)亮和熄滅LED,每次狀態(tài)切換后調(diào)用Delay()軟件延時(shí)控制閃爍頻率。IOSET置位輸出高電平點(diǎn)亮LED,IOCLR清零輸出低電平熄滅LED。DELAY—延時(shí)控制voidDelay(uint32_tms)通過空循環(huán)實(shí)現(xiàn)軟件延時(shí),精度受編譯器優(yōu)化等級(jí)和CPU頻率影響。后續(xù)可替換為定時(shí)器硬件延時(shí)以獲得精確毫秒級(jí)控制,滿足實(shí)時(shí)性要求更高的場(chǎng)景。EMBEDDEDSYSTEMS·LAB02實(shí)戰(zhàn)二:外部中斷按鍵檢測(cè)外部中斷編程是理解嵌入式實(shí)時(shí)響應(yīng)機(jī)制的核心實(shí)驗(yàn),通過配置EINT引腳、VIC控制器和ISR三步,建立完整中斷鏈路。引腳配置與觸發(fā)PINSEL將P0.14配置為EINT1功能,EXTMODE設(shè)邊沿觸發(fā),EXTPOLAR設(shè)下降沿,按鍵按下瞬間產(chǎn)生中斷請(qǐng)求信號(hào)PINSEL·EINT1·下降沿VIC向量控制器VICIntSelect分配IRQ類別,VICVectCntls設(shè)置優(yōu)先級(jí)與中斷號(hào),VICVectAddr0寫入ISR地址實(shí)現(xiàn)向量跳轉(zhuǎn)IRQ·優(yōu)先級(jí)·向量跳轉(zhuǎn)ISR中斷服務(wù)函數(shù)執(zhí)行LED狀態(tài)翻轉(zhuǎn)后,清除EXTINT中斷標(biāo)志位并寫入VICVectAddr=0通知VIC中斷處理完成EXTINT·VICVectAddr中斷使能與功耗__enable_irq()使能CPSR的I位,主循環(huán)可進(jìn)入空閑等待降低功耗,完全由中斷事件驅(qū)動(dòng)執(zhí)行CPSR·空閑模式嵌入式系統(tǒng)實(shí)戰(zhàn)·第30頁實(shí)戰(zhàn)三:定時(shí)器中斷與系統(tǒng)滴答通過配置Timer0預(yù)分頻器和匹配寄存器產(chǎn)生精確的1ms周期性中斷,建立全局系統(tǒng)滴答計(jì)數(shù)器SysTick,為嵌入式程序提供精確的時(shí)間基準(zhǔn)。預(yù)分頻器與匹配寄存器PR設(shè)為PCLK/1000?1(如PCLK=11.0592MHz時(shí)PR=11058),每計(jì)數(shù)代表1ms;MR0匹配值設(shè)為0并配置MCR產(chǎn)生中斷與復(fù)位。預(yù)分頻器將系統(tǒng)時(shí)鐘分頻至1kHz,匹配寄存器控制中斷周期。PR=11058中斷服務(wù)與SysTick遞增VIC注冊(cè)Timer0ISR,中斷內(nèi)遞增volatile全局變量SysTick并清除T0IR標(biāo)志位,主循環(huán)檢查SysTick實(shí)現(xiàn)非阻塞延時(shí)。中斷響應(yīng)時(shí)間直接影響系統(tǒng)實(shí)時(shí)性。Timer0_ISR延時(shí)與超時(shí)函數(shù)封裝封裝DelayMs(ms)阻塞延時(shí)與TimeoutExpired(start,timeout)異步超時(shí)判斷,后者適合多任務(wù)環(huán)境中的超時(shí)檢測(cè)。合理選擇阻塞或異步模式優(yōu)化CPU利用率。TimeoutExpired()時(shí)間片輪轉(zhuǎn)調(diào)度器在1ms滴答基礎(chǔ)上實(shí)現(xiàn)簡易時(shí)間片輪轉(zhuǎn)調(diào)度,為每個(gè)任務(wù)分配固定時(shí)間片,實(shí)現(xiàn)多任務(wù)偽并行,為移植RTOS鋪墊。理解調(diào)度原理有助于后續(xù)FreeRTOS等系統(tǒng)學(xué)習(xí)。Round-RobinEMBEDDEDSYSTEMS·PRACTICAL04實(shí)戰(zhàn)四:UART串口收發(fā)通信UART串口是嵌入式調(diào)試和設(shè)備間通信最常用的接口,通過PINSEL引腳配置、波特率除數(shù)計(jì)算和FIFO緩沖設(shè)置完成初始化,結(jié)合中斷驅(qū)動(dòng)的環(huán)形緩沖區(qū)接收機(jī)制可實(shí)現(xiàn)高效可靠的全雙工異步數(shù)據(jù)收發(fā)。UART初始化與波特率配置01PINSEL0配置P0.0/P0.1為TXD0/RXD0功能,LCR設(shè)置8N1數(shù)據(jù)格式(8位數(shù)據(jù)、無校驗(yàn)、1位停止位),F(xiàn)CR使能16字節(jié)FIFO緩沖并設(shè)定接收觸發(fā)級(jí)別02波特率計(jì)算:DLL+DLM×256=PCLK/(16×Baudrate),11.0592MHzPCLK下115200bps對(duì)應(yīng)除數(shù)值6,該晶振頻率可精確生成標(biāo)準(zhǔn)波特率無誤差數(shù)據(jù)收發(fā)與中斷驅(qū)動(dòng)01發(fā)送流程:輪詢LSR寄存器等待THRE標(biāo)志位置位(發(fā)送保持寄存器空),將數(shù)據(jù)寫入U(xiǎn)0THR即可,大數(shù)據(jù)量發(fā)送時(shí)可用FIFO減少輪詢次數(shù)02中斷接收:使能UART0的RBR中斷并在VIC中注冊(cè)ISR,中斷觸發(fā)時(shí)循環(huán)讀取U0RBR存入環(huán)形緩沖區(qū),主程序從緩沖區(qū)取數(shù)據(jù)處理,避免數(shù)據(jù)丟失EXPERIMENT·嵌入式實(shí)踐實(shí)戰(zhàn)五:ADC模擬信號(hào)采集與輸出ADC采集實(shí)驗(yàn)將模擬世界與數(shù)字系統(tǒng)連接,通過配置AD0CR控制寄存器啟動(dòng)轉(zhuǎn)換、輪詢結(jié)果寄存器DONE標(biāo)志獲取10位數(shù)字量,結(jié)合UART串口輸出可實(shí)時(shí)觀察傳感器數(shù)據(jù)變化,是構(gòu)建數(shù)據(jù)采集系統(tǒng)的核心技能。電位器模擬信號(hào)接入嵌入式開發(fā)板ADC通道實(shí)拍01AD0CR寄存器配置SEL位選通道(SEL=0x01→AD0.0),CLKDIV設(shè)分頻(目標(biāo)≈4.5MHz),PDN=1使能ADC電源02軟件觸發(fā)啟動(dòng)轉(zhuǎn)換START=001啟動(dòng)一次轉(zhuǎn)換,輪詢ADDR寄存器Bit31DONE標(biāo)志判斷轉(zhuǎn)換完成0310位數(shù)據(jù)解析RESULT位于ADDRBit6-15,原始值×VREF/1024得電壓:VREF=3.3V時(shí),512→1.65V04綜合應(yīng)用:定時(shí)器+UART定時(shí)器ISR周期觸發(fā)ADC,結(jié)果經(jīng)UART發(fā)至PC串口助手,配合繪圖工具實(shí)時(shí)顯示波形LAB·I2CINTERFACE實(shí)戰(zhàn)六:I2C總線讀取傳感器I2C總線通信以起始信號(hào)、地址幀、數(shù)據(jù)幀和停止信號(hào)的標(biāo)準(zhǔn)化序列實(shí)現(xiàn)主從設(shè)備交互,通過封裝I2C_Start/SendByte/ReceiveByte/Stop四個(gè)基礎(chǔ)函數(shù)可大幅簡化上層傳感器讀取代碼,是連接各類I2C數(shù)字傳感器的通用接口技能。I2C初始化與基礎(chǔ)操作01I2C0SCLH/I2C0SCLL寄存器設(shè)定SCL時(shí)鐘高低電平持續(xù)時(shí)間,兩者之和決定I2C總線速率(如各設(shè)為56時(shí)約400kHz快速模式)02I2CONSET置位STA產(chǎn)生起始信號(hào),I2CONCLR清除SI位推進(jìn)狀態(tài)機(jī),I2STAT狀態(tài)碼(如0x08起始已發(fā)、0x18從機(jī)ACK)驅(qū)動(dòng)通信流程控制傳感器讀取流程01完整讀取序列:Start→發(fā)送設(shè)備地址+寫位→ACK→發(fā)送寄存器地址→ACK→ReStart→發(fā)送設(shè)備地址+讀位→ACK→讀取數(shù)據(jù)→NACK→Stop02封裝為ReadI2CReg(devAddr,regAddr)函數(shù),內(nèi)部自動(dòng)處理狀態(tài)機(jī)流轉(zhuǎn)和錯(cuò)誤檢測(cè)(如從機(jī)NACK時(shí)返回錯(cuò)誤碼),上層調(diào)用一行代碼即可完成傳感器數(shù)據(jù)讀取PRACTICAL07實(shí)戰(zhàn)七:PW
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 審計(jì)專業(yè)技術(shù)資格(初級(jí))歷年真題匯編(完整版)
- 精算師考試精算師考試易混題(含解析)
- 導(dǎo)游證面試綜合問答模擬題及要點(diǎn)
- 導(dǎo)游證科目三模擬卷
- 計(jì)算機(jī)技術(shù)與軟件專業(yè)技術(shù)資格(高級(jí))綜合知識(shí)練習(xí)冊(cè)(完整版)
- 藥品禁忌癥用藥總結(jié)2026
- 2026 秋季一年級(jí)新生家長會(huì)家校攜手護(hù)航入學(xué)成長
- 幼兒主動(dòng)物品自理能力科普課
- 小區(qū)公共物業(yè)費(fèi)收支明細(xì)科普宣講課
- 2026 年臺(tái)風(fēng)防御誤區(qū)科普與正確做法
- 債務(wù)轉(zhuǎn)讓合同范本
- 滬粵版九年級(jí)物理 12.3 研究物質(zhì)的比熱容(學(xué)習(xí)、上課課件)
- 2024年中遠(yuǎn)海運(yùn)物流所屬寧波中遠(yuǎn)海運(yùn)物流有限公司招聘筆試參考題庫含答案解析
- 輸變電工程“7S”管理策劃
- 家庭醫(yī)生簽約服務(wù)考核表
- 綠色施工管理制度匯編
- 酒店禮儀禮節(jié)培訓(xùn)
- 景觀設(shè)計(jì)任務(wù)書(參考模板)
- QD系列切丁機(jī)說明書
- 煙花爆竹倉庫安全風(fēng)險(xiǎn)分級(jí)管控和隱患排查治理雙體系方案資料(2020-2021)
- 第二章 疾病概論 -北京大學(xué)病理生理學(xué)課件
評(píng)論
0/150
提交評(píng)論