stm32筆記參考arm cortex m4微控制器深度實(shí)戰(zhàn)_第1頁(yè)
stm32筆記參考arm cortex m4微控制器深度實(shí)戰(zhàn)_第2頁(yè)
stm32筆記參考arm cortex m4微控制器深度實(shí)戰(zhàn)_第3頁(yè)
stm32筆記參考arm cortex m4微控制器深度實(shí)戰(zhàn)_第4頁(yè)
stm32筆記參考arm cortex m4微控制器深度實(shí)戰(zhàn)_第5頁(yè)
已閱讀5頁(yè),還剩807頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

紹ARMCortex-M4內(nèi)核的原理與結(jié)構(gòu)、開(kāi)發(fā)環(huán)境的使用、各種功能器件的應(yīng)用。制、SD卡數(shù)據(jù)讀寫、FAT文件系統(tǒng)的移植、觸摸按鍵、RTOS移植于應(yīng)用、UCGUI的移植與應(yīng)用、智能家居下常用的無(wú)線串口碼、頭編程、藍(lán)牙通信、2.4GHz通信等,而這些內(nèi)容在很多同類型書籍中并不具備,恰恰也是踏出社會(huì)工作經(jīng)常要接觸的。其NuMicroM451系列微控制器應(yīng)用技巧,并可向讀者提供配套弟”,最后衷心希望本書能對(duì)ARMCortex-M4內(nèi)核的微控制器應(yīng)用推廣起到一定的作用。 下,你會(huì)發(fā)現(xiàn)PCB設(shè)計(jì)、元件封裝、集成度、時(shí)鐘速度和內(nèi)存大小已經(jīng)經(jīng)歷了好幾代的變化。在這方面最熱門的話題之一是仍在使用8位MCU32ARMCortex-M的MCU系列。在過(guò)去幾32位MCU的遷移一直呈現(xiàn)強(qiáng)勁勢(shì)頭,采取這一行動(dòng)的最強(qiáng)有力的理由是市場(chǎng)和消費(fèi)者對(duì)嵌入式產(chǎn)品復(fù)雜性的需求大大增加。隨著嵌入式產(chǎn)品彼此互聯(lián)越來(lái)越多、功能越來(lái)越豐富,目前的8位和16位MCU已經(jīng)處理要求,即使8位16位MCU能夠滿足當(dāng)前的項(xiàng)目需求,它也存在限制未來(lái)產(chǎn)品升級(jí)和代碼重復(fù)使用的嚴(yán)重風(fēng)險(xiǎn);第二個(gè)常見(jiàn)原因是嵌入式開(kāi)發(fā)者開(kāi)32位MCU32位MCU能提供超過(guò)10倍的性能,單說(shuō)這種遷移本身就能夠帶來(lái)更低的能耗、ARMCortex-M的微控制器還具有專門針對(duì)微控制器應(yīng)新微控制器的選型以新唐公司ARMCortex-M4內(nèi)核的NuMicroM451系列微控制器為藍(lán)本,此前,本人已經(jīng)編寫了《51單片機(jī)學(xué)成功。新制、SD卡數(shù)據(jù)讀寫、FAT文件系統(tǒng)的移植、觸摸按鍵、 NuMicroM451系列微控制器應(yīng)用技巧,并可向讀者提供配套天下大,必于,無(wú)是從控制器深入角度發(fā),還從實(shí)性技術(shù)的角出發(fā)都是書的點(diǎn),以說(shuō)參與本書編寫工作的主要人員有、冼安勝、林秩謙等3人,最終方案的確定和本書的定稿全部由負(fù)責(zé);感謝新唐科技的賈雪巍先生、航空航天大學(xué)的胡曉柏,在從寫書到的過(guò)程中提出了不少有價(jià)值的參考意見(jiàn),讓表比較多,難免會(huì)有紕漏,懇請(qǐng)讀者批評(píng)指正,并且可以通過(guò)該E-mail地址:w 2016829序欣聞溫老師又完成第五本關(guān)于ARMCortex-M系列的巨作,從Cortex-M0進(jìn)展至Cortex-M4,當(dāng)前書籍內(nèi)容涵蓋從Cortex-M4內(nèi)核操作原理、各種外設(shè)范例、到實(shí)時(shí)操作系統(tǒng)、UI運(yùn)作及文件系統(tǒng)等,并輔以完整周邊的學(xué)習(xí)開(kāi)發(fā)板,由淺入深,從內(nèi)核、、系統(tǒng)到應(yīng)用,達(dá)到學(xué)習(xí)與實(shí)例相輔相成的效果。即使原廠也不容易做到如在強(qiáng)調(diào)創(chuàng)新的潮流中,MCU為開(kāi)放式創(chuàng)新的最佳平臺(tái),硬件與軟件搭配后,加上創(chuàng)意,即成創(chuàng)新產(chǎn)品。但要成就創(chuàng)新產(chǎn)品,除了產(chǎn)品想法外,另需對(duì)、系統(tǒng)有詳所需解決的問(wèn)題。創(chuàng)客除了需要簡(jiǎn)單易用的的開(kāi)發(fā)工具外,尚須加上MCU的專業(yè)知訊與感測(cè)組件所組成,其中MCU為處理運(yùn)算,需要省電與快速處理感測(cè)組件輸入的數(shù)據(jù)與通訊協(xié)議,這是32位MCU的強(qiáng)調(diào)高效能與節(jié)能的最佳應(yīng)用領(lǐng)域場(chǎng)合,我們相信32位MCU一定是物聯(lián)網(wǎng)應(yīng)用的主流。中秋佳節(jié),溫老師完成的「ARMCortex-M4微控制器深度實(shí)戰(zhàn)」一定再為32謝溫老師為32位MCU推廣的貢獻(xiàn)。21世紀(jì)是信息時(shí)代,電子技術(shù)的發(fā)展日新月異,同時(shí)各種新型數(shù)據(jù)傳輸期,世界上各大制造公司都推出了自己的單片機(jī),從8位機(jī)、16位機(jī)到多的業(yè)內(nèi)、學(xué)生、者,產(chǎn)品開(kāi)發(fā)人員掌握單片機(jī)這門技術(shù),單片機(jī)由內(nèi)僅有CPU的處理器發(fā)展而來(lái)。最早的設(shè)計(jì)理念是通過(guò)將大量設(shè)積要求嚴(yán)格的控制設(shè)備當(dāng)中如圖0.1.1。In的Z80是最早按照這種思想設(shè)計(jì)出的處理器,從此以后,單片機(jī)和處理器的發(fā) Ini960ARM系列的廣泛應(yīng)用,3216位單片機(jī)的高端地位,并且進(jìn)入主流市場(chǎng)。而傳統(tǒng)最多的“計(jì)算機(jī)”。現(xiàn)代人類生活中所用的幾乎每件電子和機(jī)械產(chǎn)品中都會(huì)集成有單片機(jī)。、、計(jì)算器、家用電器、電子玩具、PC機(jī)和其他計(jì)算機(jī)的總和,甚至比人類條件,現(xiàn)在的通信設(shè)備基本上都實(shí)現(xiàn)了單片機(jī)智能控制,從,機(jī)、小型程控交換機(jī)、樓宇自動(dòng)通信呼叫系統(tǒng)、列車無(wú)線通信、再到日常工作中隨處可見(jiàn)的移動(dòng),集群移動(dòng)通信,無(wú)線電對(duì)講機(jī)等。低功耗CMOS的各個(gè)單片機(jī)制造商基本都采用了CMOS(互補(bǔ)金屬氧化物半導(dǎo)體工藝)。像80C51就采用了HMOS(HighperformanceMetal-Oxide-Semiconductor:即高密度金屬氧化物半導(dǎo)體工藝和OS(complementaryhybrid夠高,而OS則具備了高速和低功耗的特點(diǎn),這些特征,更適合于在要求低功耗像電池供電的應(yīng)用場(chǎng)合。所以這種工藝將是今后一Memory)、并行和串行通口,中斷系統(tǒng)、定時(shí)電路、時(shí)鐘電路集成在一塊單一的上,增強(qiáng)型的單片機(jī)集成了如A/D轉(zhuǎn)換器、PMW(PulseWidthModulation:脈寬調(diào)制電路)、WDT(WatchDogTimer:看門狗定時(shí)器)LCD(液晶)驅(qū)動(dòng)電品,ATMEL公司的產(chǎn)品和中國(guó)的Winbond系列單片機(jī)。所以80C51為的單片機(jī)占據(jù)了半壁。而Microchip公司的PIC基于RISC(ReducedInstructionSetComputer)精簡(jiǎn)指令集也有著強(qiáng)勁的發(fā)展勢(shì)頭,中國(guó)的HOLTEK公司近年的單WAIT、STOP3~6V范圍內(nèi)工作。低電壓供電的單片機(jī)電源下限已可達(dá)1~2V。目前0.8V供電的單片機(jī)已經(jīng)問(wèn)世。容量是不夠的,必須進(jìn)行外接擴(kuò)充。為了適應(yīng)這種領(lǐng)域的要求,須運(yùn)用新的工藝,使片內(nèi)器大容量化。目前,單片機(jī)內(nèi)ROM最大可達(dá)64KB,RAM最大為2KB。10倍以上。由于這類單片機(jī)有極高的指令速度,就可以用軟件模擬其I/O功能,由此引入了虛擬外設(shè)的新概念,現(xiàn)在以ARM為首的尤為特出,低功耗,高性能。x86的地位。ARMARM(AdvancedRISCMachines)是微控制器行業(yè)的一家知名企業(yè),設(shè)計(jì)了大量高性能、適用于多種領(lǐng)域,比如嵌入控制、消費(fèi)/教育類多、DSP和移動(dòng)式應(yīng)用等。英文全稱:AdvancedRISC

1.1.1ARM前,總共有30家半導(dǎo)體公司與ARM簽訂了硬件技術(shù)使用協(xié)議,其中包括In 、IBM、LG半導(dǎo)體、NEC、SONY、飛利1991年ARM公司成立于英國(guó),主要設(shè)計(jì)技術(shù)的。目前,采用ARM技術(shù)知識(shí)(IP:In 制造,只將的設(shè)計(jì)方案(licensing)給其他公司,由它們來(lái)生產(chǎn)。正是這個(gè)模式,最終使得ARM遍地開(kāi)花,將封閉設(shè)計(jì)的In公司置于“人民”的大海。構(gòu)的產(chǎn)品銷量總數(shù)更是達(dá)到驚人的38億塊,相當(dāng)于每秒售出超過(guò)450塊。ARM公司是專門從事基于RISC技術(shù)設(shè)計(jì)開(kāi)發(fā)的公司,作為知識(shí)供應(yīng)商,本身不直接從事生產(chǎn),靠轉(zhuǎn)讓設(shè)計(jì)由合作公司生產(chǎn)各具特色的,世界各大半導(dǎo)體生產(chǎn)商從ARM公司其設(shè)計(jì)的ARM微控制器核,根據(jù)各自不同的應(yīng)用領(lǐng)域,加入適當(dāng)?shù)碾娐?,從而形成自己的ARM微控制器進(jìn)入市場(chǎng)。目前,全世界有幾十家大的半導(dǎo)體公司都使用ARM公司的,因此既使得ARM技術(shù)獲得的第工具、制造、軟件的支持,又使整個(gè)系統(tǒng)成本降低,使產(chǎn)品更容易進(jìn)入市場(chǎng)被消費(fèi)者所接受,更度,由合作伙伴生產(chǎn)。ARM公司本身并不靠自有的設(shè)計(jì)來(lái)制造或CPU,而是將微控制器架構(gòu)給有的廠家。ARM提供了多樣的條款,包以及針對(duì)內(nèi)含ARMCPU硅的銷售權(quán)。對(duì)于無(wú)晶圓廠的方來(lái)說(shuō),其希望能將ARM內(nèi)核整合到他們自行研發(fā)的設(shè)計(jì)中,通常受權(quán)方再次ARM架構(gòu)本身,但受權(quán)方可以任意地制品(如元件、評(píng)估板、完整系統(tǒng)等。晶圓廠是特殊例子,因?yàn)樗麄儾粌H授予能包含ARM內(nèi)核的硅晶成品,對(duì)其它客戶來(lái)講,他們通常也重制ARM內(nèi)核的權(quán)利。就像大多數(shù)知識(shí)方,ARM依照使用價(jià)值來(lái)決定知識(shí)的售價(jià)。在架構(gòu)上而言,更低效能的ARM內(nèi)核比更高效能的內(nèi)核擁有較低的費(fèi)。以硅實(shí)作而言,一顆可整合的內(nèi)核要比一顆硬件宏(黑箱)內(nèi)核要來(lái)得貴。更復(fù)雜的價(jià)位問(wèn)題來(lái)講,持有ARM的晶圓廠(例如韓國(guó)三星和富士通)可以提供更低的價(jià)格給他們的晶圓廠客戶。透過(guò)晶圓廠自有的設(shè)計(jì)技術(shù),客戶可以更低或是免費(fèi)的ARM預(yù)付費(fèi)來(lái)取得ARM內(nèi)核。相較于不具備自有設(shè)計(jì)技術(shù)的專門半導(dǎo)體晶圓廠(如臺(tái)積電和聯(lián)電),富士通/三星對(duì)每片晶圓多收取了兩至三倍的費(fèi)用。對(duì)中少量的應(yīng)用而言,具備設(shè)計(jì)部門的晶圓廠提供較低的整體價(jià)格(透過(guò)ARM費(fèi)用的。對(duì)于量產(chǎn)ARM內(nèi)核而言,由于長(zhǎng)期的成本縮減可借由更低的晶圓價(jià)格,減少ARM的NRE(NonRecurring許多半導(dǎo)體公司持有ARM 、CirrusLogic scale(于2004從摩托羅拉公司獨(dú)立出來(lái)m、富士通、英特爾(借由和Digital的調(diào)停、IBM,英飛凌科技,任,恩智浦半導(dǎo)體(于2006年從飛利浦獨(dú)立出來(lái)、OKI電氣工業(yè),三星電子,Sharp,STMicroelectronics,德州儀器和VLSI等許多這些公司均擁有各個(gè)不同形式的ARM。雖然ARM的項(xiàng)目由合約所涵蓋,在智慧財(cái)工業(yè),ARM是廣為人知最昂貴的CPU內(nèi)核之一。單一的客戶產(chǎn)品ARM公司設(shè)計(jì)的微控制器基于RISC架構(gòu),而RISC(reducedinstructionsetcomputer,精簡(jiǎn)指令集計(jì)算機(jī))是一種這樣一來(lái),它能夠以更快的速度執(zhí)行操作(每秒執(zhí)行百萬(wàn)條指令,即MIPS)。因?yàn)橛?jì)算機(jī)執(zhí)行每個(gè)指令類型都需要額外的晶體管現(xiàn)在所謂的MIPS技術(shù)的建立,它是SiliconGraphics的一部分。許多當(dāng)前的微現(xiàn)在都使用RISC概念。RISC概念已經(jīng)引領(lǐng)了微控制器設(shè)計(jì)的一個(gè)更次的思索。設(shè)計(jì)中必須考慮到:指令應(yīng)該如何較好的映射到微控制器的時(shí)鐘速度上(理想情況下,一條指令應(yīng)在一個(gè)時(shí)鐘周期內(nèi)執(zhí)行完);體系結(jié)構(gòu)需要多“簡(jiǎn)單”;以及在不訴諸于軟件的幫助下,微本身能③RISC的簡(jiǎn)單使得在選擇如何使用微控制器上的空間時(shí)擁有的自由③RISC的簡(jiǎn)單使得在選擇如何使用微控制器上的空間時(shí)擁有的自由RISCRISC微控制器不僅精簡(jiǎn)了指令系統(tǒng),采用量和超流水線結(jié)構(gòu);它們的指令數(shù)目只有幾十條,卻大大增強(qiáng)了并行處理能力。64位多處理機(jī)的主流。Microsystem公司的UltraSPARC。RISC的工作頻率一般在400MHZ數(shù)量級(jí)。時(shí)鐘頻率低,功率消耗少,溫升也少,機(jī)器不易發(fā)生故障和老化,提高了系統(tǒng)的Word)微控制器,它使用非常長(zhǎng)的指令組合,把許多條指令連在一起,以能并行執(zhí)行。VLIW微控制器的基本模型是標(biāo)量代碼的執(zhí)行模型,使每個(gè)機(jī)器周期內(nèi)有多個(gè)操作。有些RISC微控制器中也采用少數(shù)VLIW指令來(lái)提高處理速度。RISCCISC是目前設(shè)計(jì)制造微控制器的兩種典型技術(shù),雖然它們都是試圖在體系結(jié)構(gòu)、操作運(yùn)行、軟件硬件、編譯時(shí)間和運(yùn)(1)指令系統(tǒng):RISC設(shè)計(jì)者把主要精力放在那些經(jīng)常使用的指令上,盡量使它們具有簡(jiǎn)單高效的特色。對(duì)不常用的功能,常通過(guò)組合指令來(lái)完成。因此,在RISC機(jī)器上實(shí)現(xiàn)特殊功能時(shí),效率可能較低。但可以利用流水技術(shù)和量技術(shù)加以改進(jìn)和彌補(bǔ)。而CISC計(jì)算機(jī)的指令系統(tǒng)比較豐富,有指令來(lái)完成特定的功能。因此,處理特殊任務(wù)效率較高。CPU:RISCCPU包含有較少的單元電路,因而面積小、功耗低;而CISCCPU包含有豐富的電路單元,因而功能強(qiáng)、面設(shè)計(jì)周期:RISC微控制器結(jié)構(gòu)簡(jiǎn)單,布局緊湊,設(shè)計(jì)周期短,且易于采用技術(shù);CISC微控制器結(jié)構(gòu)復(fù)雜,設(shè)計(jì)周應(yīng)用范圍:由于RISC指令系統(tǒng)的確定與特定的應(yīng)用領(lǐng)域有關(guān),故RISC機(jī)器更適合于機(jī);而CISC機(jī)器則更適合目前常見(jiàn)使用RISC的微控制器包括DECAlpha、ARC、ARM、MIPS、PowerPC、SPARC和SuperHCPUCPU是怎樣從無(wú)到有,并且一步步發(fā)展起來(lái)的。In1968年,格魯夫(左、諾依斯(中)和摩爾(右)是微電子業(yè)界的夢(mèng)幻組合如圖1.2.1。19711月,In公司的霍夫(MarcianE.Hoff)4位微控制器In4004,標(biāo)志著第一代微控制器問(wèn)世,微控制器和微機(jī)時(shí)代從此開(kāi)始。因發(fā)明微控制器,霍夫被英國(guó)《》列為“二戰(zhàn)以來(lái)最有的7位科學(xué)家”之一。In40042300108KHz6萬(wàn)條指。功能比較弱且計(jì)算速度較慢只能用在計(jì)算器上。RAM、In4003移位寄存器和In4004微控制器其中In4004包含2300個(gè)晶體管,尺寸規(guī)格為3mm×4mm,計(jì)算性能遠(yuǎn)遠(yuǎn)超過(guò)當(dāng)年的ENIAC,最初售價(jià)為200。197248位微控制器In80088008采用的是P溝道MOS微控制器,因此仍屬第一代RISC微控制器。In8080第二代微控制器,1973年8月,霍夫等人研制出8位微控制器In8080,處理速度為2.64MIPS。 之作,還在各種場(chǎng)合大賣特賣。CP/M就是面向其開(kāi)發(fā)的操作系統(tǒng)。第一臺(tái)微型機(jī)器許多著名的軟件如:WORDSTAR和DBASEII

圖1.2.1 1.2.38085成為一個(gè)CPU的內(nèi)核(Die)。 單個(gè)CPU并進(jìn)行封裝,一個(gè)CPU便制造出來(lái)了。新唐M451系列如圖2.1.1,之前三代分別是Cortex-M0/M1/M3。優(yōu)化的單指令多數(shù)據(jù)(SIMD:SingleInstructionMultipleData)指令、飽和算法指令和可選擇的單精度浮點(diǎn)單元(FPUFloatPointUnit),同時(shí)保留了2.1.1Cortex-M4內(nèi)核處理的嵌套中斷向量控制器,此外還可以選擇內(nèi)存保護(hù)單元(MPU:MemoryProtectionUnit)、低成本診斷和追蹤、完整休眠狀的高性能版本則使用GlobalFoundries65nmLPe工藝生產(chǎn),動(dòng)態(tài)功耗也不超過(guò)40μW/MHz。1.25DMIPS/MHz;對(duì)性能沒(méi)有影響。提供最佳的代碼密度;工具和RTOS支持:廣泛的第工具支持、Cortex微控制器軟件接口標(biāo)

2.1.2Cortex-M42.2.1ARMARM1176、ARMCortex-M0、ARMCortex-M1屬于ARMv6體系,Cortex-A8、Cortex-R4、Cortex-M3屬于ARMv7體系。微控制器(Micro從ARMv4架構(gòu)發(fā)展到ARMv7架構(gòu),每種架構(gòu)的簡(jiǎn)要如下?支持halfword?支持byte和halfword?進(jìn)一步的明確了會(huì)引起Undefined32bit系統(tǒng)的好處。1999年推出ARMv5TE,增強(qiáng)了Thumb體系改進(jìn)了Thumb/ARM相互作用、編譯能力和混合及匹配ARM與Thumb例程,以更好地平衡代碼空間和性能并在ARMISADSP指令集,增強(qiáng)的DSP(saturatedarithmetic)70%性能?!瓻’CPUDSP能力。2000ARMv5TEJ,增加了支持Java 和Audiocodec的性能提高了4倍。Thumb-2和TrustZone技術(shù)也用于ARMv6中。ProfileA是面向復(fù)雜、基于虛擬內(nèi)存的OS所有ARMv7處理器配置都能夠?qū)崿F(xiàn)Thumb-2結(jié)語(yǔ):新架構(gòu)的出現(xiàn),意味著老的架構(gòu)被取代,就像現(xiàn)在InCPU演變出更高性能而功耗更低的Corei3/5/7系列CPU,同樣和ARMCortexM4ARMCortex-M4SIMD和兼容Cortex-3套AHB-Lite可選配的內(nèi)存保護(hù)單元MPU(MemoryProtectionARMCortex-M42.3.1ARMCortex-M4NMI&內(nèi)存保護(hù)單元總線互聯(lián)矩陣可支持bitbandingAHBtoAPB從AHB總線轉(zhuǎn)換到APB處理器沒(méi)有JTAG掃描鏈,多數(shù)調(diào)試功能通過(guò)AHB來(lái)實(shí)現(xiàn)SW-DP/SWJ-DP到AHB總線聯(lián)矩陣互聯(lián)矩陣,從發(fā)起而發(fā)起AHB內(nèi)嵌宏單元ETM(EmbeddedTrace數(shù)據(jù)觀察單元DWT(DataWatchpointand匹配命中用于產(chǎn)生一個(gè)觀察點(diǎn),激活調(diào)試器以產(chǎn)生數(shù)據(jù)信息,或讓ETM聯(lián)ARMCortexM4Corte-MCortex-MMCU和終端應(yīng)用(如智能測(cè)量、人機(jī)接口設(shè)備、汽車和工業(yè)控制系統(tǒng)、大型家用電器、消費(fèi)性產(chǎn)品和醫(yī)療器械)的混合信號(hào)設(shè)備進(jìn)行過(guò)優(yōu)化,而ARMCortex-M4屬于ARMCortex-M3的升級(jí)版,那么Cortex-M4內(nèi)核Cortex-M0/M1/M3ARMCortex-M0/M3/M4優(yōu)點(diǎn)如下表2.4.1ARMCortex-MCortex-MCortex-M處理器無(wú)縫發(fā)展到另一個(gè)成為可能,因此如果讀者閱讀過(guò)本人的ARMCortex-M0的書籍,就明白對(duì)ARMCortex-M0應(yīng)用場(chǎng)合有一定的認(rèn)識(shí),如果讀者還不知道ARM對(duì)Cortex-M系列定位的細(xì)節(jié)場(chǎng)合,那么本人就對(duì)Cortex-M0/M3/M4進(jìn)行定位分析。1)ARM處理器Cortex-M012K85μW/MHz(0.085毫瓦)56Cortex-M0指令集(如果需要)C語(yǔ)言友好體系結(jié)構(gòu)意味著這并不是必BluetoothLowEnergyBLE)、IEEE802.15Z-wave,特別是在這樣的模擬設(shè)備中:這Cortex-M0ThumbThumb-232Cortex-M3Cortex-M4支為什么選擇Cortex-具有高性能和低動(dòng)態(tài)能耗,Cortex-M390nmG12.5DMIPS/mW。將集成的睡眠模式與可選的狀態(tài)保留功能相結(jié)合,Cortex-M3處理器確保對(duì)于同時(shí)需要低能耗和出色性能的應(yīng)用不存在折衷。該處理器執(zhí)行Thumb-2指令集以獲得最佳性能和代碼大小,包括硬件除法、單周期乘法和位字段操作。Cortex-M3NVIC在設(shè)計(jì)時(shí)是高度可配置的,最多可提供240個(gè)具有單獨(dú)優(yōu)先級(jí)、動(dòng)態(tài)重設(shè)優(yōu)先級(jí)功能和集成系統(tǒng)時(shí)鐘的系統(tǒng)中斷。Cortex-M3I/OUSBOTG(On-The-Go)為什么選擇Cortex-InterfaceStandard)使信號(hào)處理算法開(kāi)發(fā)變得十分容易。處理器可以提供給開(kāi)發(fā)者業(yè)界領(lǐng)先的技術(shù)方案,在綜合能Thumb-2指令集是ARMv7架構(gòu)的新技術(shù),它兼容之前的Thumb-2Thumb-216

2.5.1Thumb-2指令集與Thumb可能有些令人意外,但事實(shí)上這卻了Cortex-M4的用情專一:在內(nèi)核水平上,就已經(jīng)為適應(yīng)單片機(jī)和小內(nèi)存器件而抉擇、取舍過(guò)了,因?yàn)門humb-2完全勝任在這個(gè)領(lǐng)域挑大梁。不過(guò),這也意味著Cortex-M4作為處理器,不是向后兼容的。因此,為內(nèi)核是紅透半邊天,此前,本人做的產(chǎn)品都是用LPC系列的,但是隨著Cortex-M內(nèi)核的發(fā)展,Cortex-M4則是的偶像,處處閃耀著青春的光芒。比如,硬件除法器被帶到Cortex-M0/M3/M4中;乘法方面,也有好幾條新指令閃亮登場(chǎng),用于提升data-crunching(數(shù)據(jù)分析)的性能。Cortex-M4的出現(xiàn),還在ARM處理器中破天荒地支持了“非對(duì)齊數(shù)據(jù)支持”。令集同時(shí)兼容了32位長(zhǎng)度的指令和16位長(zhǎng)度的指令,這樣兼顧性能的同時(shí)也節(jié)省了空間。SmartMcu專門用于ARMCortex-M4的開(kāi)發(fā)板,如下圖門ARMCortex-M4CPU:M451RG6AEFLASH:256KBRAM:32KB外接SPIFLASH:W25Q64,8M字節(jié)容量,用于大量數(shù)據(jù),常見(jiàn)用途為字庫(kù)或1個(gè)DAC支持插入SD卡,豐富了多數(shù)據(jù),支持FAT32文件系統(tǒng)自帶USB除晶振占用I/O外,其他I/OM451作為一家全球微控制器領(lǐng)先企業(yè),新唐提供基于ARMCortex-M4內(nèi)核的新一代NuMicro32Cortex-M4微控制器提供寬工作電壓(2.5V~5.5V),工業(yè)級(jí)溫度(-40℃~105℃),高精度內(nèi)部振蕩器和強(qiáng)性如圖3.1.1。M451系列產(chǎn)品特性:含有浮點(diǎn)運(yùn)算單元和DSP的ARMCortex-M4內(nèi)核,最高可運(yùn)行其它外設(shè)單元。同時(shí)還配備了大量的設(shè)備,如USBOTG、USBHost/Device、定時(shí)器、看12位DAC、觸摸按鍵傳感器,模擬比較器,溫度傳感器、低電壓復(fù)位、欠壓電壓檢測(cè)。M451系列特支持帶硬件除法器的DSPIEEE754兼容浮點(diǎn)運(yùn)算單元支持通過(guò)WFI和WFE32內(nèi)建內(nèi)置LDO(LowDropoutRegulator-低壓線性穩(wěn)壓器)2.5v5.5Flash128/256KBFlash4KBFlash支持通過(guò)SWD/ICE2線ICP(ISP2KB的flashMask16KB內(nèi)置mask支持新唐UART0SPI0I2C0CAN和USBISP/IAP支持直接從MaskROMSRAM32KB

PDMAPDMAPDMA(Peripheral+10kHz內(nèi)部低速RC振蕩器(LIRC)32.768kHz(LXT)用于RTCPLL,144MHz用于高性能的系統(tǒng)運(yùn)行,時(shí)鐘源可以選擇HIRCUART1SPI0,SPI1I2C1I2C0I/O支持強(qiáng)灌電流和強(qiáng)拉電流I/O(5V支持LQFP100/64/4885/55/42個(gè)PDMA(外設(shè)支持普通和Scatter-Gather支持單次和burst有One-shotPeriodicToggleContinuousCounting支持LIRC(默認(rèn)選擇)HCLK/2048和LXT1.6ms~26.0sec與時(shí)鐘源有關(guān))8可從Power-down或Idle支持HCLK/2048默認(rèn)選擇LIRC可從Power-down或IdleVBAT支持RTC(時(shí),分,秒和日歷計(jì)數(shù)(年,月,日支持寄存器(年,月,日,時(shí),分,秒1/1281/641/321/161/81/41/2and18支持支持多達(dá)12個(gè)獨(dú)立的16位分辨率 支持功能和每 支 支持觸發(fā)EADC/DAC支持捕捉PDMA:UART0UART1,UART2支持自動(dòng)流控功能CTS和支持IrDASIR)UART0和UART1支持LINPDMAI2C支持多地址識(shí)別功能(四個(gè)從機(jī)地址帶MASK選項(xiàng)SMBus和PMBus1路SPI控制器支持SPI主/2支持雙I/O和四I/O支持MSB或LSBPDMA3線無(wú)片選信號(hào)32MHz,16MHzMCU工作在VDD支持多達(dá)兩套SPI控制器:SPI1和4級(jí)收和發(fā)FIFOMSB或LSB336MHz18MHzMCU工作在VDD支持兩套I2S通過(guò)SPI控制器:SPI1和帶外部音頻CODEC816,2432支持PCMAPCMB,I2SMSB帶一套CANCANv2.0A和B可編程FIFO模式(報(bào)文對(duì)象禁用時(shí)間觸發(fā)CANUSB2.0全速(FullSpeed)帶一套USB2.0全速帶OTG全速主機(jī)與OpenHCI1.0與USB規(guī)范v2.0OTG與USBOTGSupplement1.3片上USB帶512字節(jié)內(nèi)部SRAM作為USB5V3.3VLDO用于USB8/16PDMA模擬輸入電壓范圍:0~Vref(Max12位分辨率的ADC支持單個(gè)ADC帶有外部參考電壓支持內(nèi)部Band-gap 觸發(fā)來(lái)啟動(dòng)A/D轉(zhuǎn)支持PDMA12位電壓型外部參考電壓緩沖模式下最大輸出電壓AVDD-通過(guò)軟件或PDMA正端點(diǎn)對(duì)應(yīng)多路I/O管腳,band-gap,Voltage分壓和DAC支持break觸發(fā) 支持四種通用多項(xiàng)式CRC-CCITTCRC-8CRC-16CRC-輸入數(shù)據(jù)和CRC輸入數(shù)據(jù)和CRC8/16/32有4個(gè)等級(jí)復(fù)位門檻電壓2.0工作溫度范圍以下是新唐M451系列選型,M4旗艦板板載新唐最高配的M453VG6AE,F(xiàn)lash256KB,引腳數(shù)目高達(dá)LQFP,并帶有CAN、USB等高級(jí)功能。外拓SPIFLASH:W25Q64,8M字節(jié)(用于大量數(shù)據(jù)1485接口,采用MAX4852個(gè)RS232(串口)接口,采用MAX2321個(gè)PS/21個(gè)數(shù)字溫濕度傳感器1個(gè)USB轉(zhuǎn)串口,采用CH340,可用于程序和代碼調(diào)1個(gè)SD卡接口(大容量數(shù)據(jù),支持Fat文件系統(tǒng)1個(gè)無(wú)線串口接口(可以與PC通信,亦可多點(diǎn)通信,實(shí)現(xiàn)無(wú)線組網(wǎng)1個(gè)VS1053B音頻編(支持MP3、WAV、WMA、FLAC等多種音頻格式,并帶有功能1個(gè)TDA1308耳機(jī)(音質(zhì)直中端1個(gè)USB從機(jī)接口(支持U盤1個(gè)USB主機(jī)/OTG接口(支持模擬為串口、U盤、鍵盤、鼠標(biāo)等多種設(shè)備1個(gè)CAN接口,1個(gè)WiFi接口,ESP8266(可連接、電腦、物聯(lián)網(wǎng)連接常用解決方案1個(gè)頭接口(默認(rèn)OV76701個(gè)FM收發(fā)器,RDA5820(用于FM頻道收音,語(yǔ)音對(duì)講機(jī)1個(gè)RTC1個(gè)復(fù)位按鈕,可用于復(fù)位除晶振占用的I/O外,其余所有的I/O引言ARM20081112日發(fā)布了ARMCortex-M微控制器軟件接口標(biāo)準(zhǔn)(CMSIS:CortexMicrocontrollerSoftwareInterfaceStandard)。CMSIS是獨(dú)立于供應(yīng)商的Cortex-M微控制器系列硬件抽象層,為廠商和中間件供應(yīng)片廠商產(chǎn)品的軟件接口標(biāo)準(zhǔn)化,制定了CMSIS標(biāo)準(zhǔn)。此舉意在降低軟件開(kāi)發(fā)成本,尤其針對(duì)新設(shè)備項(xiàng)目開(kāi)發(fā),或者將已有軟件移植.2CIS4SS中S著下一硬層實(shí),了對(duì)tMCSS4.1.2CMSIS①核內(nèi)外設(shè)層(CPAL:CorePeripheralAccessLayer):由ARM負(fù)責(zé)實(shí)現(xiàn)。包括對(duì)寄存器地址的定義,對(duì)核寄存器、NVIC、調(diào)試子系統(tǒng)的接口定義以及對(duì)特殊用途寄存器的接口(如CONTROL和xPSR)定義。由于對(duì)特殊寄存器的以內(nèi)聯(lián)方式定義,所以ARM針對(duì)不同的編譯器統(tǒng)一用INLINE來(lái)差異。該層定義的接口函數(shù)均是可重入的。②中間件層(MWAL:MiddlewareAccessLayer):由arm負(fù)責(zé)實(shí)現(xiàn),但廠商需要針對(duì)所生產(chǎn)的設(shè)備特性對(duì)該層進(jìn)行試提供標(biāo)準(zhǔn)軟件接口。該層在1.1標(biāo)準(zhǔn)中尚未實(shí)現(xiàn)。③設(shè)備外設(shè)層(DPAL:DevicePeripheralAcessLayer):由廠商負(fù)責(zé)實(shí)現(xiàn)。該層的實(shí)現(xiàn)與CPAL類似,負(fù)責(zé)對(duì)硬件寄存器地址以及外設(shè)接口進(jìn)行定義。該層可調(diào)用CPAL層提供的接口函數(shù),同時(shí)根據(jù)設(shè)備特性對(duì)異常向量表進(jìn)行擴(kuò)展,以處理RTOSDebug基CMSISCMISRA2004DoxygenC90風(fēng)格(/**C++風(fēng)格注釋),函數(shù)的注釋應(yīng)包含CMSIS4.2.1所示(NuMiroM451為例)stdint.h8位、16位、32位等類型指示符斷優(yōu)先級(jí)位數(shù)以及寄存器定義。雖然CMSIS提供的文件很多,但在應(yīng)用程序中只需包含.h。4.2.1M451CMSIS數(shù)據(jù)類型及I/OHAL層使用標(biāo)準(zhǔn)ANSIC頭文件stdint.h定義的數(shù)據(jù)類型。I/O類型限定符用于指定外設(shè)寄存器的限制,定義如4.2.1I/OIvolatileO#define#defineCM4_CMSIS_VERSION_MAIN/*!<[31:16]CMSISHALmainversion#defineCM4_CMSIS_VERSION_SUB /*!<[15:0]CMSISHALsub 4.2.1CMSIS#define ((CM4_CMSIS_VERSION_MAIN<<16)|\對(duì)于ARMCortex-M4處理器,在頭文件core_cm4.h中定義,如程序4.2.2#define /*!<Cortex-MCore#define /*!<Cortex-MCoreCMSISARMReakView(armcc)、IAREWARM(iccarm)以及GNU工具鏈(gcc)。通過(guò)在core_cm4.h中的如下定義,來(lái)一些編譯器內(nèi)置關(guān)鍵字的差異,如程序4.2.3。#if#ifdefined(CC_ARM)#defineASM #define inline/*!<asmkeywordforARM/*!<inlinekeywordforARM#defineSTATIC_INLINEstatic#elifdefined(ICCARM#define#define/*!<asmkeywordforIARCompiler/*!<inlinekeywordforIARCompiler#defineSTATIC_INLINEstatic#elifdefined(TMS470#define asm/*!<asmkeywordforTICCSCompiler#defineSTATIC_INLINEstatic#elifdefined(GNUC)#defineASM #define /*!<asmkeywordforGNU /*!<inlinekeywordforGNUCompiler#defineSTATIC_INLINEstatic#elifdefined(TASKING#define/*!<asmkeywordforTASKINGCompiler#define/*!<inlinekeywordforTASKINGCompiler#defineSTATIC_INLINEstaticCMSIS對(duì)異常和中斷標(biāo)識(shí)符、中斷處理函數(shù)名以及中斷向量異常號(hào)都有嚴(yán)格的要求。異常和中斷標(biāo)識(shí)符需加后綴_IRQn,系統(tǒng)typedefenum{/******Cortex-M4typedefenum{/******Cortex-M4ProcessorExceptionsNumbers =-14,/*!<2NonMaskable =-12,/*!<4MemoryManagement =- /*!<5BusFault =- /*!<6UsageFault =-5, /*!<11SVCallInterrupt =-4, /*!<12DebugMonitorInterrupt =-2, /*!<14PendSVInterrupt =- /*!<15SystemTick /******M451SpecificInterruptNumbers=/*!<BrownOutdetection=/*!<InternalRC=/*!<PowerDownWakeUp=/*!<SRAMparitycheckfailed=/*!<Clockfailed=/*!<RealTimeClock=/*!<Tamperdetection=/*!<WatchdogTimer=/*!<WindowWatchdogTimer=/*!<ExternalInput0=/*!<ExternalInput1=/*!<ExternalInput2=3=4=5=GPIOPortA=GPIOPortB=C=D=E=F=/*!<SPI0=/*!<SPI1=========0=1=2=3=UART=/*!<UART=/*!<I2C0=/*!<I2C1=/*!<PeripheralDMA=/*!<DAC=/*!<ADC0Source0=/*!<ADC0Source1=/*!<ogComparator01=/*!<ADC0Source2=/*!<ADC0Source3=/*!<UART2=/*!<UART3=/*!<SPI2=/*!<USBdevice=/*!<USBhost=/*!<USBOTG=/*!<CAN0=/*!<SmartCard0=/*!<TouchKey}CMSIS對(duì)系統(tǒng)異常處理函數(shù)以及普通的中斷處理函數(shù)名的定義也有所不同。系統(tǒng)異常處理函數(shù)名需加后綴“_Handler”,而普通中斷處理函數(shù)名則加后綴“_IRQHandler”。這些異常中斷處理函數(shù)被定義為weak重復(fù)定義的錯(cuò)誤。這些處理函數(shù)的地址用來(lái)填充中斷異常向量表,并在啟動(dòng)代碼中給以,例如:BOD_IRQHandler、WDT_IRQHandler、TMR0_IRQHandler、UART0_IRQHandler等。碼都基于MISRA-C2004(MotorIndustrySoftwareReliabilityAssociationfortheCprogramminglanguage)標(biāo)準(zhǔn)。MIRSA-C2004制定了一系列安全機(jī)制用來(lái)保證驅(qū)動(dòng)層軟件的安全性,是嵌入式行業(yè)都應(yīng)遵循的標(biāo)準(zhǔn)。對(duì)于不符合MISRA標(biāo)準(zhǔn) 下找到NuLink相應(yīng)的文件,如下圖5.1.1。 腳分別為VCC、DAT、CLK、RST、GND,如下圖5.1.2。5.1.2NuLink仿真器與SmartM-M451雙擊Keil圖標(biāo),會(huì)彈出顯示Keil 5.2.1Keil當(dāng)見(jiàn)到Keil的啟動(dòng)時(shí),會(huì)自動(dòng)進(jìn)入Keil的開(kāi)發(fā)環(huán)境,如圖.2Keil第二步:輸入工程名“SmartMcu”,點(diǎn)擊【保存】退出,彈出【SelectaCPUDataBaseFile “NuMicroCortex-MDataBase”.2選擇CPU第三步:在彈出的【SelectDeviceforTarget'Targe1'】 擊【OK】,如圖5.3.3。5.3.3選擇當(dāng)前第四步:SmartMcu提供的StdDriver、System文件夾到當(dāng)前工程,System文件夾包含常用的類型定義、CPU頻率初5.3.4。5.3.4System與StdDriver 左側(cè)【Project】列表框的“SmartMcu”工程,選中“OptionsforTarget'SmartMcu'”,進(jìn)入如下界面,如圖5.3.6。5.3.7勾選“CreateHEXFile),以便最大程度地優(yōu)化最后生成的二進(jìn)制代碼,最后在“IncludePaths”當(dāng)中,添加對(duì)外部文件內(nèi)容的,如System、StdDriver文件夾,詳細(xì)設(shè)置如下圖5.3.8。圖5.3.8設(shè)置優(yōu)化選項(xiàng)和添加外部文鈕,在彈出的框選擇“ChipType”為“M451”,如下圖5.3.10。圖5.3.10選擇類第十步:設(shè)置燒寫Flash的工具為NULinkDebugger,如圖5.3.11,同時(shí)點(diǎn)擊”Settings”,設(shè)置功能時(shí)必須勾選“ResetandRun”,保證程序后就復(fù)位并執(zhí)行程序,如下圖5.3.12。5.3.11設(shè)置燒寫Flash5.3.12設(shè)置功他配置選項(xiàng),詳細(xì)如下圖5.3.13。第十三步:點(diǎn)擊“Bulid”5.3.15BuildOutput窗口當(dāng)中輸出編譯信息,如當(dāng)如圖5.3.17,正確如下圖5.3.18。單片機(jī)仿真器是一種在電子產(chǎn)品開(kāi)發(fā)階段代替單片機(jī)進(jìn)行軟硬件調(diào)試的開(kāi)發(fā)工具。配合集成開(kāi)發(fā)環(huán)境使用仿真器可以對(duì)單片現(xiàn)程序中許多隱含的錯(cuò)誤,特別對(duì)于單片機(jī)開(kāi)發(fā)經(jīng)驗(yàn)不豐富的初學(xué)者來(lái)說(shuō)更加,由此可見(jiàn),單片機(jī)仿真器單片機(jī)系統(tǒng)開(kāi)發(fā)中發(fā)揮安裝NuLink章節(jié)。當(dāng)一切準(zhǔn)備后,使用SmartMcu顯示寄存器窗口、匯編窗口、調(diào)用堆棧窗口等,如下圖5.4.2。時(shí)變量g_vbTimer0Event彈出的右鍵菜單,選中“Add‘g_vbTimer0Event’到Watch1”即添加該變量到觀察窗口1,如下圖5.4.4。)0.8一般嵌入式開(kāi)發(fā)流程就是先建立一個(gè)工程,再編寫源文件,然后進(jìn)行編譯,把所有的*.s文件和*.c文件編譯成一個(gè)*.o文件,再對(duì)目標(biāo)文件進(jìn)行和定位,編譯成功后會(huì)生成一個(gè)*.hex文件和調(diào)試文件,接下來(lái)要進(jìn)行調(diào)試,如果成功的話,就可以將它到flash里面去。行點(diǎn)。比如,剛上電的過(guò)程中,我們的PC機(jī)會(huì)對(duì)系統(tǒng)的一個(gè)運(yùn)行頻率進(jìn)行鎖定在一個(gè)固定的值,這個(gè)設(shè)計(jì)頻率的過(guò)程就是在匯進(jìn)入C HEAPNOINITREADWRITE,ALIGN=3;0,8

;32為的Thumb指令,如果需要;VectorTableMappedtoAddress0at RESETDATA, EXPORTVectors EXPORTVectors_EndEXPORTVectors_Size initial_sp ; ;給標(biāo)號(hào)ResetHandler 給標(biāo)號(hào)NMIHandler ;HardFault ;MPUFault ;BusFault ;UsageFault ; ; ; ;SVCall ;DebugMonitor ; ;PendSV ;SysTick;External;0:BrownOut;1:Internal;2:Powerdownwake;3:RAMparity;4:Clockdetection;5:;6:RealTime;7:Tamper;8:Watchdog;9:Windowwatchdog;10:ExternalInput;11:ExternalInput;12:ExternalInput;13:ExternalInput;14:ExternalInput;External5;GPIOPort;GPIOPort;GPIOPort;GPIOPort;GPIOPort;GPIOPort;;;;;;;;;;;Timer;Timer;Timer;Timer;;;;;Peripheral;;ADC00;ADC01;ACMP0and;;ADC02;ADC03;;;;;;USB;USB;USB;;;;.;;;;Vectors_Size Vectors_End-Vectors |.text|,CODE,;ResetReset_Handler EXPORT 0BBL指令,則將BBL部文件。IMPORTSystemInit R0,=SystemInit ;使用“=”表示LDR目前是偽指令不是標(biāo)準(zhǔn)指令。這里是把SystemInit的地址給R0。=;BX是ARM指令集和THUMB;DummyExceptionHandlers(infiniteloopswhichcanbe EXPORT ;等同于while(1)EXPORTHardFault_Handler EXPORTMemManage_Handler EXPORTBusFault_Handler EXPORTUsageFault_Handler EXPORTSVC_Handler EXPORTDebugMon_Handler EXPORTPendSV_Handler EXPORTSysTick_Handler Default_HandlerEXPORT EXPORT EXPORT EXPORTRAMPE_IRQHandler EXPORTCLKFAIL_IRQHandler EXPORTRTC_IRQHandler EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT EXPORT ;UserInitialStack& :DEF: heap_base use_two_region_memory user_initial_stackheap R0,=LDRR1,=(Stack_Mem+Stack_Size)LDRR2,=(Heap_Mem+Heap_Size)LDRR3,=Stack_MemBX ThiscanbedefinedtoThiscanbedefinedtooverridethestandardmemorymodels'ofdeterminingwheretoputtheinitialstackandTheinputparametersR0andR2containnothinguseful.TheparametersSPandSLarethevaluesthatwereinSPandSLtheprogrambeganexecution(soyoucanreturnthemifyoutokeepthatThetwo`limit'fieldsinthereturnstructureareignoredyouareusingtheone-regionmemorymodel:thememoryregiontakentobeallthespacebetweenheap_baseandstructinitial_stackheapunsignedheap_base; /*low-addressendofinitialheap*/unsignedstack_base; /*high-addressendofinitialstack*/unsignedheap_limit; /*high-addressendofinitialheap*/unsigned /*low-addressendofinitialstackexternvalue_in_regsstructuser_initial_stackheap(unsigned/*R0*/,unsigned/*SP*/,unsigned/*R2*/,unsigned同時(shí)由于ARM應(yīng)用的靈活性,可以通過(guò)分散加載文件來(lái)定義代碼和變量的位置,所以堆棧的地址并不固定,這樣,在ARMC庫(kù)里的函數(shù)用到堆棧的地址時(shí)候,就用上面定義的變量來(lái)代替,而且一般的STARTUP.S都只初始了棧,就是SP,沒(méi)有初始堆,所以在們不大方便在C語(yǔ)言里直接取SPBmainCCmain,直接進(jìn)入main當(dāng)然是可以實(shí)現(xiàn)的。正常進(jìn)入用戶應(yīng)用程序main過(guò)程如下圖5.5.1。5.5.1在應(yīng)用程序主函數(shù)之前插入main是編譯系統(tǒng)提供的一個(gè)函數(shù),負(fù)責(zé)完成庫(kù)函數(shù)的初始化最后自動(dòng)跳向main函數(shù)。這種情況下用戶程序的主函數(shù)名字必須得是main。用戶可以根據(jù)需要選擇是否使用main。如果想讓系統(tǒng)自動(dòng)完成系統(tǒng)調(diào)用(如庫(kù)函數(shù))的初始化過(guò)程,可以直接使用main;如果所有的初始化步驟都是由用戶自己顯式地完成,則可以跳過(guò)main。當(dāng)然,使用main的時(shí)候,可能會(huì)涉及到一些庫(kù)函數(shù)的移植和重定向問(wèn)題,在mainISP程IS(nytmPormig)統(tǒng)編,一無(wú)將(如ERM)嵌式設(shè)上取就能其進(jìn)編程的過(guò)程,縮略為SP。統(tǒng)編程要在標(biāo)板有額的路完成程任。其優(yōu)是,使器焊接電路上,對(duì)其(重新)進(jìn)行編程。系統(tǒng)可編程Fah制的特(常需外電)Fah幾都用種編。配置位的功能,如下圖5.6.1。圖5.6.1ISP工第一步:當(dāng)ISP工具還沒(méi)有檢測(cè)到MCU進(jìn)入模式的應(yīng)答時(shí),“Connectioncheck”默認(rèn)狀態(tài)顯示為“Disconnected”,5.6.2。5.6.2連接狀態(tài)第二步:點(diǎn)擊【Connect】按鈕,ISP工具就不斷通過(guò)串口向MCU下發(fā)連接指令,此時(shí)手動(dòng)復(fù)位MCU(MCU已經(jīng)被正確配置為L(zhǎng)DROM啟動(dòng),并且燒寫了正確的LDROM代碼,否則不能的連接應(yīng)答。注:SmartM-M451旗艦板出貨時(shí)默認(rèn)已經(jīng)燒寫好LDROM代碼),“Connectioncheck”狀態(tài)顯示為“Connected”,如圖5.6.3。5.6.3連接狀態(tài)為第三步:點(diǎn)擊【APROM】按鈕選擇 圖5.6.4載入文”選項(xiàng),如圖TFTThinFilmTransistor薄膜場(chǎng)效應(yīng)晶體管),是指液晶顯示器上TFT(ThinFilmTransistor)LCDLCD,是有源矩采用“背透式”照射方式——TN液晶那樣從上至下,

27.1.1TFT有比TN-LCD更高的對(duì)比度和更豐富的色彩,熒屏更新頻率也更快,故TFT俗稱“真彩”。是TFT色彩較DSTN更為真的原因。TFT-LCDTFT-LCDTFT相對(duì)于上極低的成品率導(dǎo)致其高昂的價(jià)格,使得桌面型的TFT-LCD成為遙不可及的尤物。TFT-LCD在響應(yīng)時(shí)間、對(duì)比度、亮度、可視角度方面有了很大的進(jìn)步,拉近了與傳統(tǒng)CRT顯示器的差距。種,依次排列在玻璃基板上組成一組(dotpitch:點(diǎn)距)對(duì)應(yīng)一個(gè)像素每

27.1.2TFT于15英寸的顯示器來(lái)說(shuō),分辨率最大只有1280×1024。TFT般都能顯示32位顏色,約有一百萬(wàn)種以上的顏色。的任何一個(gè)顏色都可以由一組RGB值來(lái)記錄和表達(dá)。因此這紅色綠色藍(lán)色又稱為三原色光,用英文表示就是R(red)、

27.2.1RGB256×256×256=160024位色(224次方)在ledRGB三色晶片組成全彩像素。隨著這一技術(shù)的不斷成熟,led顯印刷技術(shù)當(dāng)中的RGB色彩空間主要是指加色法當(dāng)中的三度色彩空間,通過(guò)使用不同強(qiáng)度的三原色,紅、綠、藍(lán)色的光線來(lái)組合成RGBRGB是從顏色發(fā)光的原理來(lái)設(shè)計(jì)的,通俗點(diǎn)說(shuō)它的顏色混合方式就好像有紅、綠、藍(lán)三盞燈,當(dāng)它們的光相互疊合的時(shí)候,色彩RGBR、GB添加在一起(即所有光線反射回眼睛)可產(chǎn)生白色。加成色用于照明光、電RGBXXRRRRRGGGGGBBBBB(X表示不用,可以忽略#defineRGB555_MASK_RED0x7C00#defineRGB555_MASK_GREEN0x03E0#defineRGB555_MASK_BLUE0x001FRwPixel#defineRGB555_MASK_RED0x7C00#defineRGB555_MASK_GREEN0x03E0#defineRGB555_MASK_BLUE0x001FRwPixel&RGB555_MASK_RED10;0-GwPixel&RGB555_MASK_GREEN50-31B=wPixel&RGB555_MASK_BLUE;//取值范圍0-31RRRRRRRGGGGGGBBBB#defineRGB565_MASK_RED0xF800#defineRGB565_MASK_GREEN0x07E0#defineRGB565_MASK_BLUE0x001FRwPixel#defineRGB565_MASK_RED0xF800#defineRGB565_MASK_GREEN0x07E0#defineRGB565_MASK_BLUE0x001FRwPixel&RGB565_MASK_RED11;0-GwPixel&RGB565_MASK_GREEN50-63B=wPixel&RGB565_MASK_BLUE;//取值范圍0-31#defineRGB(r,g,b)(unsignedint)((r|0x08<<11)|(g|0x08<<6)|b|0x08#defineRGB(r,g,b)(unsignedint)((r|0x08<<10)|(g|0x08<<5)|b|0x08BGRBGR。通常可以使用RGBTRIPLE數(shù)據(jù)結(jié)構(gòu)來(lái)操作一個(gè)像素,它的定義為:typedeftypedefstruct{BYTErgbtBlue;//藍(lán)色分量BYTErgbtGreen;//綠色分量BYTErgbtRed; }RGB24)RGB各分量的排列順序?yàn)椋築GRABGRABGRA…RGBQUAD數(shù)據(jù)結(jié)構(gòu)來(lái)操作一個(gè)像素,它typedeftypedefstruct{BYTErgbBlue;//藍(lán)色分量BYTErgbGreen;//綠色分量BYTErgbRed;//紅色分量BYTErgb保留字節(jié)(用作Alpha通道或忽略}0000000000006.3.1TFT6.3.1TFTTFT數(shù)據(jù)引腳TFT數(shù)據(jù)引腳TFT6.3.2TFT設(shè)置TFT詳細(xì)的EBI驅(qū)動(dòng)TFT屏已經(jīng)在“EBI章節(jié)”詳細(xì)提及,讀者可閱讀作者已的《ARMCortex-M4微控制器原理與實(shí)踐》。當(dāng)前對(duì)TFT屏輸入數(shù)據(jù)時(shí)是對(duì)TFT_DB[15:0]16565位為紅色?,F(xiàn)出我們看到的色彩,若然使用262144色,反而讓TFT顯示速度更慢,需要傳輸兩次顏色數(shù)據(jù),比65536色更費(fèi)時(shí)間。6.3.3RGB565對(duì)應(yīng)引腳的數(shù)據(jù)(注:TRI0DFM為任意值)觀察圖6.3.3發(fā)現(xiàn)B0B5共用相同的藍(lán)色值,R5R0共用相同的紅色值。#defineRGB888toRGB565(r,g,b)#defineRGB888toRGB565(r,g,b)紅色RGB888toRGB565(0xFF,0x00,0x00)=0xF800綠色RGB888toRGB565(0x00,0xFF,0x00)=0x07E0藍(lán)色RGB888toRGB565(0x00,0x00,0xFF)=0x001F作贅述,詳細(xì)代碼如程序6.3.2。* 入:usData* 入:usData-寫入數(shù)* * VOIDLcdWriteBus(UINT16usData){/*寫并行數(shù)據(jù)*/}* 入:usLcdCmd-寄存器* * VOIDLcdWriteCmd(UINT16usLcdCmd){/*寫寄存器值*/}* 入:usLcdData-數(shù)據(jù)* * VOIDLcdWriteData(UINT16usLcdData){/*寫數(shù)據(jù)*/}* 入 usLcdData* * VOIDLcdWriteCmdData(UINT16usLcdCmd,UINT16{/*寫寄存器值*//*寫數(shù)據(jù)*/}要在TFT屏顯示像素點(diǎn),就得設(shè)置好顯示x坐標(biāo)、y坐標(biāo)及顏色,在TFT屏當(dāng)中找到如下圖6.3.4流程圖如下圖6.3.5x0x2B設(shè)置頁(yè)地址命令(PASETPageAddressSet)亦即設(shè)置y坐標(biāo),要設(shè)置顯示的起始地址(SP[0:15])與結(jié)束地址(EP[15:0]),如下圖6.3.6。6.3.6y起始與結(jié)束坐標(biāo)結(jié)合圖6.3.4~圖6.3.5,編寫設(shè)置顯示坐標(biāo)代碼如程序6.3.3。* 入:x1-橫坐標(biāo)y1x2y2* * VOIDLcdAddressSet(UINT16x1,UINT16y1,UINT16x2,UINT16{UINT16/*檢測(cè)屏幕是否翻轉(zhuǎn)180度*/if(g_unLcdDirectionLCD_DIRECTION_180){Lcd_x1=LCD_WIDTH-x2-1;Lcd_x2=LCD_WIDTH-x1-1;}UINT16/*檢測(cè)屏幕是否翻轉(zhuǎn)180度*/if(g_unLcdDirectionLCD_DIRECTION_180){Lcd_x1=LCD_WIDTH-x2-1;Lcd_x2=LCD_WIDTH-x1-1;}/*設(shè)置x坐標(biāo)*//*設(shè)置x坐標(biāo)起始地址*/LcdWriteData((UINT8)Lcd_x1);/*設(shè)置x坐標(biāo)結(jié)束地址*/LcdWriteData((UINT8)Lcd_x2);/*設(shè)置y坐標(biāo)*//*設(shè)置y坐標(biāo)起始地址*/LcdWriteData((UINT8)Lcd_y1);/*設(shè)置y坐標(biāo)結(jié)束地址*/LcdWriteData((UINT8)Lcd_y2);/**/}* 入:usColor* 入:usColor-顏* * VOIDLcdCleanScreen(UINT16usColor){UINT32/*/*連續(xù)地寫入數(shù)據(jù)*/{for{}}}參數(shù)unFontPos進(jìn)行決定字庫(kù)位置。 位6.3.5TFTunLcdDirection-* 出* BOOLLcdInit(UINT32unFontPos,UINT32{UINT16g_unFontPos=g_unLcdDirection={return}/*初始化ILI9341寄存器非常多,由于篇幅限制,這里進(jìn)行省略,詳細(xì)請(qǐng)看lcd.c*/ return}下程序6.3.6。程序6.3.6main函#include* * * int32_tmain(void){/*系統(tǒng)時(shí)鐘初始化*/)/*LCD初始化*//*打開(kāi)LCD*/{/*刷屏為紅色*//*刷屏為綠色*//*刷屏為藍(lán)色*/}}3)驗(yàn) 【實(shí)驗(yàn)要求】基于SmartM-M451系列開(kāi)發(fā)板:在TFT***入VOIDLcdDrawHLine(UINT16x,UINT16y,UINT16usLength,UINT16{UINT16/*判斷x{x_e=LCD_WIDTH-}/*設(shè)置顯示區(qū)域*/{/*顯示顏色*/}}* 入 * * VOIDLcdDrawVLine(UINT16x,UINT16y,UINT16usLength,UINT16{UINT16/*判斷x結(jié)束坐標(biāo)是否越界*/{y_e=LCD_HEIGHT-}/*設(shè)置顯示區(qū)域*/{/*顯示顏色*/}}* * VOIDLcdFill(UINT16x_s,UINT16y_s,UINT16x_e,UINT16y_e,UINT16{UINT32/*設(shè)置顯示區(qū)域*/{{/*顯示顏色*/}}}* 入 -橫坐標(biāo) -縱坐標(biāo)2 * * VOIDLcdDrawRectangle(UINT16x1,UINT16y1,UINT16x2,UINT16y2,UINT16{}#include*#include* * * int32_tmain(void){/*系統(tǒng)時(shí)鐘初始化*/)/*LCD初始化*//*打開(kāi)LCD*/{/*刷屏為黑色*//*顯示矩形*//*1秒*//*刷屏為黑色*//*顯示水平線*//*1秒*//*刷屏為黑色*//*顯示繪制垂直線*//*1秒*//*填充矩形*//*1}}圖6.3.5顯示紅色矩形 須通過(guò)材料科技來(lái)解決透明問(wèn)題,像數(shù)字化儀、寫字板、電梯開(kāi)關(guān),它們都不是觸摸屏;其次它個(gè)方向去,每時(shí)每刻還需要不停的給用戶反饋當(dāng)前的位置才不至于。這些對(duì)采取絕對(duì)坐標(biāo)定位的觸摸屏來(lái)說(shuō)都不需要;再其詢;此外應(yīng)用于辦公、工業(yè)控制、軍事指揮、電子游戲、點(diǎn)歌點(diǎn)菜、多教學(xué)、房地產(chǎn)預(yù)售等。將來(lái),觸摸屏還要走入家庭。多的感到使用觸摸屏的確具有相當(dāng)大的優(yōu)越性。觸摸屏出現(xiàn)市場(chǎng)上至今只有短短的幾年時(shí)間,這個(gè)新的多設(shè)備還沒(méi)有為許國(guó)多信息業(yè)正處在的階段來(lái)看,這種觀念還具有一定的普遍性。事實(shí)上,觸摸屏是一個(gè)使多信息或控制改頭換面的設(shè)備,它賦予多系統(tǒng)以嶄新的面貌,是極富的全新多交互設(shè)備。發(fā)達(dá)國(guó)家的系統(tǒng)設(shè)計(jì)師們和我國(guó)率先使用觸摸屏的系統(tǒng)設(shè)計(jì)師一點(diǎn)概括的覺(jué)效是不的,應(yīng)該少包四個(gè)特:、彩真度反光和清度,能再,比如反CD真,動(dòng)態(tài)的多圖象感覺(jué)就不是很舒服了,色彩失真度也就是圖中的最大色彩失真度自然是越小越好。平常所說(shuō)的也只能是圖中的平均,當(dāng)然是越高越好。SS觸摸屏是絕對(duì)坐標(biāo)系統(tǒng),要選哪就直接點(diǎn)那,與鼠標(biāo)這類相對(duì)的本質(zhì)區(qū)別是一次到位的直觀性。絕對(duì)坐標(biāo)系的特點(diǎn)是每一次定位坐標(biāo)與上一次定位坐標(biāo)沒(méi)有關(guān)系,觸摸屏在物理上是一套獨(dú)立的坐標(biāo),每次觸摸的數(shù)據(jù)通過(guò)校準(zhǔn)數(shù)據(jù)轉(zhuǎn)為屏幕上的表面也涂有一層涂層、在他們之間有許多細(xì)小的(1/1000英寸)的透明點(diǎn)把兩層導(dǎo)電層隔開(kāi)絕緣。當(dāng)手指觸摸屏幕時(shí),兩層技術(shù)觸摸屏都用到的主要材料,實(shí)際上電阻和電容技術(shù)觸摸屏的工作面就是ITO涂層。金導(dǎo)電層只僅僅用來(lái)當(dāng)作純導(dǎo)體,有觸摸后分時(shí)檢測(cè)內(nèi)層ITO接觸點(diǎn)X軸和Y軸電壓值5條。

不管是四線電阻觸摸屏還是五線電阻觸摸屏,它們都是一種對(duì)外界完全的工作環(huán)境,不怕灰塵和水汽,它可以用任何物體來(lái)觸摸,可以用來(lái)寫字畫畫,比較適合工業(yè)控制領(lǐng)域及內(nèi)有限人的使用。電阻觸摸屏共同的缺點(diǎn)是因?yàn)閺?fù)合薄膜的外層采用塑膠材6.4.2觸摸控制-XPT2046能通過(guò)執(zhí)行兩次A/D2.5V參考電壓可以作為輔助輸入、溫度測(cè)量和電XPT2046采用微小的封裝形式:TSSOP-16,QFN-16(0.75mm厚度)VFBGA-一、功能主要特1.5V~5.25V電平的數(shù)字I/O采用QSPI?和SPI?3線制通全兼容TSC2046,ADS7843/7846二、的基本應(yīng) (等三、的原理框

6.4.4XPT2046圖6.4.5的原理框四、的封裝與引圖6.4.6引腳與封表6.4.1引腳說(shuō)12串行數(shù)據(jù)輸入端。當(dāng)CS為低電平時(shí),數(shù)據(jù)在DCLK上升沿鎖存3時(shí)ADC451B1627384956G4789串行數(shù)據(jù)輸出端。數(shù)據(jù)在DCLK的下降沿移出,當(dāng)CS高電平時(shí)8個(gè)時(shí)鐘用來(lái)通過(guò)DIN引腳輸入控制字節(jié)。當(dāng)轉(zhuǎn)換器獲取有關(guān)下一次轉(zhuǎn)換的足夠信息后,接著根據(jù)獲得的信息設(shè)置輸入多路選擇器和參考源輸入,并進(jìn)入采樣模式,如果需要,將啟動(dòng)觸摸面板驅(qū)動(dòng)器。3個(gè)時(shí)鐘周期后,控制字節(jié)設(shè)置完成,轉(zhuǎn)換器進(jìn)入轉(zhuǎn)換換。如果是度量比率轉(zhuǎn)換方式(SER/DFR=0)13個(gè)時(shí)鐘將輸出轉(zhuǎn)換結(jié)果的最后一位。剩下的3個(gè)時(shí)鐘周期將用來(lái)完成被轉(zhuǎn)換器忽略的最后字節(jié)(DOUT置低。S1S=1XPT2046DIN引腳檢測(cè)到起始位前,所有的輸入將被力測(cè)量中,為達(dá)到最佳性能,首選差分工作模式。參考電壓來(lái)自開(kāi)關(guān)驅(qū)動(dòng)器的電壓。在單端模式下,轉(zhuǎn)換器的參考電壓固定為VREF相對(duì)于GND引腳的電壓。PD0PD16.4.3ADC的內(nèi)部參考電壓可以單獨(dú)關(guān)閉或者打開(kāi),但是,在轉(zhuǎn)換前,需要額外的時(shí)間讓內(nèi)部參考電壓穩(wěn)定到最終穩(wěn)定值;如果內(nèi)部參考源處于掉電狀態(tài),還要確保有足夠的喚醒時(shí)間。ADC要求是即時(shí)使用,無(wú)喚醒時(shí)間的。另外還得注意,當(dāng)BUSY是高電平的時(shí)候,內(nèi)部參考源進(jìn)入掉電模式。XPT2046的通道改變后,如XPT2046位7S10PIN312位/818位為轉(zhuǎn)換分辨率,為0122單端輸入方式1000而無(wú)需額外的延時(shí)。在這種模式下,Y一直處于ON狀態(tài)。01ADC10ADC11ADC-001011100101令為0xD0,即使用差分模式進(jìn)量X坐標(biāo),測(cè)量狀態(tài)為低功率狀態(tài)。因此編寫代碼的時(shí)候必須注意發(fā)送命令的細(xì)節(jié)。.1M4與XPT2046-換器的分辨率為12位,所以輸出的AD12位,因此發(fā)送和接收函數(shù)大有不同,詳見(jiàn)如下:* 入 * * VOIDXPTSpiSend(UINT8d){UINT8for(i=0;i<8;{if(d&1<<(7-{}{}XPT_CLK(0);NOP();NOP(); XPT_CLK(1);NOP();NOP();}}* * * UINT32XPTSpiRead(VOID){UINT8UINT32for(i=0;i<12;{XPT_CLK(1);XPT_CLK(0);{}6.5.2XPT204612}}* 入:x-橫坐標(biāo)數(shù)據(jù)緩沖y* 出:0* 入:x-橫坐標(biāo)數(shù)據(jù)緩沖y* 出:0-失1* 能:兩 #defineERROR_RANGE50//誤差范圍UINT8Read_ADS2(UINT32*x,UINT32{UINT32x1,y1;UINT32UINT8if(flag==0)returnif(flag==0)return{return}return} 程序6.5.4Read_ADS函* 入:x-橫坐標(biāo)數(shù)據(jù)緩沖y* 出:0-失1* UINT8Read_ADS(UINT32*x,UINT32*y){UINT32xtemp,ytemp;{return }return }XPTTouchAdjust函數(shù)是此部分最的代碼,不過(guò)由于技術(shù)原理的原因,并不能保證同一點(diǎn)觸摸每一次采樣數(shù)據(jù)相同,不能偏移量都與LCD坐標(biāo)不同,所以,需要在程序中把物理坐標(biāo)首先轉(zhuǎn)換為像素坐標(biāo),達(dá)到坐標(biāo)轉(zhuǎn)換的目的。LCDx=|PxLCDx=|Px-LCDy=|Py-* * * * #definetp_pianyi50 #definetp_xiaozhun1000//校準(zhǔn)精度VOID{FP32 UINT32unCount=0;UINT8unLcdDirectionBak= {{{}{caseLcdCleanScreen(WHITE);//清屏while(!XPT_IRQ_PIN());//等待松手caseLcdCleanScreen(WHITE);//清屏while(!XPT_IRQ_PIN());//等待松手caseLcdCleanScreen(WHITE);//清屏while(!XPT_IRQ_PIN());//等待松手caseLcdCleanScreen(WHITE);//清屏while(!XPT_IRQ_PIN());//等待松手/*全部四個(gè)點(diǎn)已經(jīng)得到*/{}{}{}{}{vx2=(StPixTbl[3].x-StPixTbl[2].x+1)*1000/(LCD_WIDTH-tp_pianyi-tp_pianyi);chx2=StPixTbl[2].x-(vx2*tp_pianyi)/1000;}{vx2=(StPixTbl[2].x-StPixTbl[3].x-1)*1000/(LCD_HEIGHT-tp_pianyi-tp_pianyi);chx2=StPixTbl[2].x+(vx2*tp_pianyi)/1000;}{}{}{ }vx=(vx1+vx2)/2;vy=(vy1+vy2)/2;}}}}main函數(shù)中完成觸摸初始化后,在while(1)循環(huán)中檢測(cè)觸摸響應(yīng),一旦檢測(cè)到觸摸響應(yīng),立即XPTTouchAdjust#include STATICFATFS * * * int32_tmain(void){UINT32UINT32/*系統(tǒng)時(shí)鐘初始化*//*串口0初始化*/)/*LCD初始化*//*打開(kāi)LCD*//*SPIFLASH初始化*/{printf("SPIFLASHInitFail\r\n");}/*掛載SPIFLASH*/f_mount(FATFS_IN_FLASH&g_fs);/*XPT2046*/LcdShowString(60,3,"TFT屏觸摸描點(diǎn)測(cè)試",YELLOW,RED);{/*if{}}}調(diào)用LcdInit函數(shù)對(duì)TFT屏進(jìn)行初始化,TFT屏顯示的文字字庫(kù)來(lái)源于SPIFLASH180調(diào)用LCD_BL函數(shù),使能TFT調(diào)用disk_initialize函數(shù)初始化SPIFLASH(注:在FATFS章節(jié)詳細(xì)講解調(diào)用f_mount函數(shù)使當(dāng)前的FAT文件系統(tǒng)掛載的器為SPIFLASH調(diào)用XPTSpiInit函數(shù)初始化連接到XPT2046在while(1)循環(huán)當(dāng)中,一旦有點(diǎn)擊操作,XPT2046的PENIRQ引腳將輸出低電平,要立即處理該點(diǎn)擊,而當(dāng)前為坐通過(guò)NuLink仿真器將程序到SmartM-M451旗艦板后,TFT屏顯示如下圖6.5.2,提示若進(jìn)入坐標(biāo)校準(zhǔn),先點(diǎn)擊屏圖6.5.3位置 圖6.5.4位置 圖6.5.5位置 圖6.5.6位置物理坐標(biāo)轉(zhuǎn)換為TFTLCDx=|PxLCDx=|Px-LCDy=|Py-我們可以按照該編寫以下轉(zhuǎn)換函數(shù)如程序6.5.7。* 入:pPix* 入:pPix獲取取樣* * PIXXPTPixConvertToLcdPix(PIXpix){PIXreturn}#include#include STATICFATFS 函 * * * VOIDLcdTouchPoint(VOID){UINT8UINT32PIXPix; {{{if(LcdGetDirection()=={Pix.x=240-Pix.x;Pix.y=320-}/*sprintf(buf,"X:%dY:%d",Pix.x,Pix.y);/*繪制觸摸點(diǎn)*/}}}}* * * int32_tmain(void){/*系統(tǒng)時(shí)鐘初始化*//*串口0初始化*/)/*LCD初始化*//*打開(kāi)LCD*//*SD初始化*/{printf("SDinitfail\r\n");}/*掛載SD*/f_mount(FATFS_IN_SD&g_fs);/*XPT2046*/{ if{}}}當(dāng)前代碼初始化部分與坐標(biāo)校準(zhǔn)初始化部分基本保持一致,在此不再贅述,只著重講解觸摸描點(diǎn)的過(guò)程,即通過(guò)NuLink仿真器將程序到SmartM-M451旗艦板后,使用手指在觸摸屏進(jìn)行滑動(dòng),能夠?qū)崟r(shí)繪制當(dāng)前的點(diǎn)與顯示當(dāng)前坐標(biāo)值,例如當(dāng)前繪制的是“M451”文字,顯示如下圖6.5.8。SDSD卡(SecureDigitalMemoryCard)中文翻譯為安全數(shù)碼卡,是一種基于半導(dǎo)體快閃器的新一代設(shè)備,它被廣泛地于便攜式裝置上使用,例如數(shù)碼SD卡在24mm×32mm×2.1mm的體積內(nèi)結(jié)合了快閃卡控制器與界面與專門的驅(qū)動(dòng)器相連接,不需要額外的電源來(lái)保持其上的信息。而且它是一

器(RCA:RelativeCardAddress)預(yù)先準(zhǔn)備好。一個(gè)附加的寄存器包括不同類型操作參數(shù),這個(gè)寄存器叫做CSD(CardSpecificData),使用SD卡線器還是寄存器的通信由SD卡標(biāo)準(zhǔn)定義如下表7.1.2。7.1.2SD7.1.1SD模式與SPISPI1234567897.1.2SDSD卡令格

表7.1.3SD卡令格760011整的CMD16,第一個(gè)字節(jié)為 ,即0x10+0x40)。字節(jié)2~5為命令參數(shù),有些命令沒(méi)有參數(shù)。表7.1.4SD卡的重?zé)o復(fù)位SD無(wú)無(wú)無(wú)無(wú)告訴SD無(wú)28.1.3單片機(jī)與SD不同令,應(yīng)答可以是R1~R7,R1的應(yīng)答,各位描述如下表所示:7.1.5R1位

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論