91網站在線觀看視頻_欧美最猛性开放2Ovideos_av在线免费国产_精品久久久亚洲一区_日韩国产变态无码大秀精品_视频爽爽免费二区_亚洲第一级av无码毛片_亚洲日本高清综合_国产三级网站免费看_特黄特色一级特色大片app

當(dāng)前位置:看商機(jī) > 行業(yè)資訊 > 資訊 > 教你如何在短時(shí)間內(nèi)快速掌握一款新的MCU

教你如何在短時(shí)間內(nèi)快速掌握一款新的MCU

發(fā)布時(shí)間:2020-12-28 11:13:03 點(diǎn)擊次數(shù):406

任何MCU,其基本原理和功能都是相似的,唯一的區(qū)別是外圍功能模塊,命令系統(tǒng)等的配置和數(shù)目。關(guān)于命令系統(tǒng),盡管形式似乎有很大不同,但實(shí)質(zhì)上只是記號(hào)的區(qū)別。意義,要完成的功能和尋址方法基本相似,因此對(duì)于MCU,應(yīng)主要從以下幾個(gè)方面進(jìn)行理解和掌握:

*MCU的功能:要了解MCU,首先需要了解其ROM空間,RAM空間,IO口quantity,定時(shí)器量子和時(shí)間以及所提供的外圍功能模塊(PeripheralCircuit),中斷源,工作電壓和功耗等。

*了解完這些MCU功能之后,下一步就是將所選的MCU功能與實(shí)際項(xiàng)目開發(fā)所需的功能進(jìn)行比較,并確保當(dāng)前需要這些資源,而在本項(xiàng)目中未使用這些資源。對(duì)于需要在項(xiàng)目中使用但未提供所選MCU的功能,您需要仔細(xì)了解MCU的相關(guān)信息才能間接實(shí)現(xiàn)。例如,已開發(fā)的項(xiàng)目需要鏈接到pcCOM口進(jìn)行通信,并且所選的MCU不提供UART口,可以考慮使用外部中斷來實(shí)現(xiàn);

*對(duì)于項(xiàng)目開發(fā)所需的資源,您需要仔細(xì)理解和閱讀手冊(cè),并且可以忽略或?yàn)g覽不必需的功能模塊。對(duì)于MCUlearning,應(yīng)用程序是關(guān)鍵和主要目的。

*在明確MCU的相關(guān)功能后,您可以開始下一步編程。對(duì)于初次使用MCU的初學(xué)者或設(shè)計(jì)師,他們?cè)贛CU的功能描述中可能會(huì)相遇很多歧義。對(duì)于此類疑問,有兩種解決方法,一種是編寫特別的驗(yàn)證程序以了解材質(zhì)中描述的功能;另一種可以暫時(shí)性忽略,根據(jù)您當(dāng)前的理解編寫程序設(shè)計(jì),調(diào)試時(shí)可以進(jìn)行修改和完善。前一種方法適用于時(shí)間相對(duì)寬松的項(xiàng)目和初學(xué)者,而后一種方法適用適用于具有一定MCUdevelopment經(jīng)驗(yàn)的人員或項(xiàng)目進(jìn)度緊急的狀況;

*絕不花時(shí)間去理解命令系統(tǒng)。指示系統(tǒng)只是邏輯描述的象征。在編程過程中,只能根據(jù)自己的邏輯和程序的邏輯要求檢視相關(guān)指示。隨著編程的進(jìn)行,您將愈發(fā)通曉指示系統(tǒng),甚至?xí)蛔杂X地記住它。

MCU的基本功能:

對(duì)于大多數(shù)MCU,以下功能是最常見和最基本的。對(duì)于不同的MCU,描述方法可能不同,但本質(zhì)上是相同的:

*Timer(定時(shí)器):Timer的類型很多,但可以概括為兩類:一類是Timer,具有固定的時(shí)間間隔,即其時(shí)間由系統(tǒng)設(shè)置。用戶程序不可控。系統(tǒng)僅提供幾個(gè)固定的時(shí)間間隔供用戶程序選擇,例如32hz,16hz,8Hz等。此類Timer在4位MCU中更加常見,因此可以用來實(shí)現(xiàn)時(shí)鐘,計(jì)時(shí)等相關(guān)功能;另一個(gè)類型是ProgrammableTimer(programmable定時(shí)器),顧名思義,這種Timer的時(shí)間可以由用戶程序控制。包括:時(shí)鐘源選擇,分頻數(shù)(Prescale)選擇和預(yù)設(shè)編號(hào)設(shè)置等。一些MCU同時(shí)具有全部三個(gè),有些可能是其中的一個(gè)或兩個(gè)。這種類型的Timer應(yīng)用程序十分靈活,實(shí)際使用也在不停變動(dòng)。最常見的應(yīng)用之一是使用它來實(shí)現(xiàn)PWM的輸出(稍后將介紹特定的應(yīng)用)。由于可以自由選擇時(shí)鐘源,因此Timer通常與EventCounter結(jié)合使用(event計(jì)數(shù)器);

*IO口:任何MCU都有一定數(shù)目的io端口,如果沒有io端口,則MCU將失掉與外界的通信通道,根據(jù)io端口的可配置性可以分成以下幾種類型:

1.純輸入或純輸出端口:此類io端口具有MCU硬件設(shè)計(jì)決定,只能輸入或輸出,并且軟件不能用于實(shí)時(shí)設(shè)置;

2.直接讀寫io端口:MCS-51等io端口屬于此類io端口。執(zhí)行readioport命令時(shí)為輸入端口;當(dāng)執(zhí)行writeioport命令時(shí),它自動(dòng)是輸出端口

3.通過程序編程來設(shè)置輸入和輸出方向:此類io端口的輸入或輸出由程序根據(jù)實(shí)際需要設(shè)置,應(yīng)用更為靈活,可以實(shí)現(xiàn)某些總線級(jí)的應(yīng)用。

例如I2C總線,各種LCD,ledDriver控制總線等;

對(duì)于io端口的使用,必須銘記一個(gè)著重:對(duì)于輸入端口,必須有一個(gè)明晰的電平信號(hào)以確保它不會(huì)浮動(dòng)(可以通過添加上拉或下拉電阻器來實(shí)現(xiàn));對(duì)于輸出端口,其輸出狀態(tài)級(jí)別必須考慮其外部連接,并且應(yīng)確保在Standby或靜態(tài)下沒有源電流或灌電流。

*外部中斷:外部中斷也是大多數(shù)MCU的基本功能。它通常用于實(shí)時(shí)信號(hào)觸發(fā),數(shù)據(jù)采樣和狀態(tài)檢測(cè)。中斷方法包括上升沿,降低沿觸發(fā)和電平觸發(fā)。外部中斷通常通過輸入端口實(shí)現(xiàn)。如果它是io端口,則只有在將其設(shè)置為輸入時(shí)才能打開其中斷功能。如果是輸出端口,則外部中斷功能會(huì)自動(dòng)關(guān)閉(ATMEL的ATiny系列有一些(例外,該中斷功能也可以在輸出端口觸發(fā))。外部中斷的應(yīng)用如下如下:

**外部觸發(fā)信號(hào)的檢測(cè):一種基于實(shí)時(shí)要求,例如晶閘管的控制,突發(fā)信號(hào)的檢測(cè)等;二是省電的需要;

**信號(hào)頻率的測(cè)量;為了確保信號(hào)不會(huì)遺失,外部中斷是最完美的選擇。

**數(shù)據(jù)解碼:在遠(yuǎn)程控制應(yīng)用領(lǐng)域,為了減低設(shè)計(jì)成本,常常需要使用軟件對(duì)各種編碼數(shù)據(jù)進(jìn)行解碼,例如Manchester和PWM編碼解碼;

**按鈕檢測(cè)和系統(tǒng)喚醒:對(duì)于進(jìn)入Sleep狀態(tài)的MCU,通常需要通過外部中斷將其喚醒。最基本的形式是按鈕,并且級(jí)別變化是通過按鈕的動(dòng)作生成的;

*通訊接口:MCU提供的通訊接口一般包括SPI接口,UART,I2C等接口,描述如下:

**SPI接口:這種類型的接口是大多數(shù)MCU提供的最基本的通信方法。其數(shù)據(jù)傳輸由同步時(shí)鐘控制。信號(hào)包括:SDI(串行數(shù)據(jù)輸入),SDO(串行數(shù)據(jù)輸出),SCLK(串行時(shí)鐘)和Ready信號(hào);在某些情形下,可能沒有Ready信號(hào);這樣的接口可以在Master或Slave方法中工作,流行的說法是看誰提供時(shí)鐘信號(hào),提供時(shí)鐘的一方是Master,對(duì)方是Slaver;

**UART(Universal Asynchronous Receive Transmit):這是最基本的異步傳輸接口。其信號(hào)線只有Rx和Tx?;緮?shù)據(jù)格式為:Start Bit + Data Bit(7-bits/8-bits) + Parity Bit(Even,Oddor None)+StopBit(1?2Baud)。數(shù)據(jù)稱作Rate波特率(MCU)。對(duì)于大多數(shù)Stop,數(shù)據(jù)的長(zhǎng)度,數(shù)據(jù)校驗(yàn)方法(奇校驗(yàn),偶校驗(yàn)或無校驗(yàn)),終止位的長(zhǎng)度(Bit位)和BaudRate可以通過程序編程靈活設(shè)置。這種類型的接口最常見的方法是與pc的串行端口通信。

**I2Cinterface:I2C是Philips開發(fā)的一種數(shù)據(jù)傳輸協(xié)商,還使用2種信號(hào)來實(shí)現(xiàn):sdat(串行數(shù)據(jù)輸入和輸出)和SCLK(串行時(shí)鐘),最大的優(yōu)點(diǎn)是該總線上可以連接多個(gè)裝置,可以通過地址進(jìn)行識(shí)別和訪問;I2C總線的最大優(yōu)點(diǎn)之一是使用軟件來實(shí)現(xiàn)IO口十分簡(jiǎn)便,其傳輸數(shù)據(jù)速率全然由sclk控制,與UART接口不同,它可以快也可以慢。有嚴(yán)苛的費(fèi)率要求。

*Watchdog(看門狗定時(shí)器):Watchdog也是大多數(shù)MCU的基本配置(某些4位MCU可能沒有此功能),大多數(shù)MCUWatchdog只能容許該程序重置它但不關(guān)閉它(某些在刻錄程序時(shí)設(shè)置,例如MicrochipPIC系列MCU),而一些MCU由特定方法確定是不是打開,例如Samsung系列的KS57系列,只要程序訪問Watchdog寄存器,它就會(huì)自動(dòng)打開并且不能再度關(guān)閉。通常來說,watchdog的復(fù)位時(shí)間可以由程序設(shè)置。Watchdog的最基本應(yīng)用是為MCU提供由于意外故障而分崩離析的自我恢復(fù)功能。

MCU程序編寫:

MCU程序的編寫與pc下程序的編寫之間存在很大歧異。盡管基于c的MCU開發(fā)工具變得更為流行,但是對(duì)于高效的程序代碼和愛好使用匯編語言的設(shè)計(jì)師來說,匯編語言依然是最簡(jiǎn)練,最有效的編程語言。,基本框架可以說大體相同,通常分成初始化部分(這是MCU編程和pc之間的最大區(qū)別),主程序循環(huán)主體和中斷處理程序。(請(qǐng)參閱圖1a和b),解釋如下:

*初始化:對(duì)于所有MCU程序的設(shè)計(jì),分娩是最基本,最關(guān)鍵的步驟,通常包括以下步驟:

**屏蔽所有中斷并初始化堆棧指針:初始化部分通常不愿意時(shí)有發(fā)生任何中斷。

**掃除RAM區(qū)域并顯示系統(tǒng)的Memory:盡管有時(shí)不一定全然必需,但提議從可靠性和一致性的出發(fā)點(diǎn)養(yǎng)成不錯(cuò)的編程習(xí)慣,更是是防止意外錯(cuò)誤;

**IO口的初始化:根據(jù)項(xiàng)目的應(yīng)用需求,設(shè)置相關(guān)io端口的輸入和輸出模式。對(duì)于輸入端口,需要設(shè)置上拉或下拉電阻。對(duì)于輸出端口,必須設(shè)置其輸出level輸出,以防止不必需的錯(cuò)誤;

**中斷設(shè)置:對(duì)于項(xiàng)目中需要使用的所有中斷源,應(yīng)將其打開并設(shè)置中斷的觸發(fā)條件,對(duì)于未使用的冗余中斷,必須將其關(guān)閉;

**其他功能模塊的初始化:對(duì)于所有需要使用的MCU外圍功能模塊,必須根據(jù)項(xiàng)目的應(yīng)用需求進(jìn)行相應(yīng)的設(shè)置,例如UART通訊,需要設(shè)置BaudRate,數(shù)據(jù)長(zhǎng)度,StopBit的檢查方法和長(zhǎng)度等。對(duì)于ProgrammerTimer,必須設(shè)置時(shí)鐘源,分頻和ReloadData等。

**參數(shù)化:在完成MCU的硬件和資源后,下一步是初始化程序中使用的一些變量和數(shù)據(jù)。這部分的初始化需要基于特定的項(xiàng)目和程序。設(shè)計(jì)的整體配置。對(duì)于某些使用EEPROM保留項(xiàng)目預(yù)制編號(hào)的應(yīng)用程序,提議在初始化期間將相關(guān)數(shù)據(jù)復(fù)制到MCURAM以提高程序訪問數(shù)據(jù)的速度并下降功耗系統(tǒng)的法則(原則上訪問外部EEPROM會(huì)增加電源的功耗)。

*主程序循環(huán)主體:大多數(shù)MCU長(zhǎng)時(shí)間不間斷運(yùn)轉(zhuǎn),因此主程序主體基本上是在循環(huán)模式下設(shè)計(jì)的。對(duì)于具有多種工作模式的應(yīng)用程序,可能存在多個(gè)循環(huán)體,并通過狀態(tài)標(biāo)志互相切換。對(duì)于主程序體,通常安排以下模塊:

**計(jì)算程序:計(jì)算程序通常很耗時(shí),因此強(qiáng)烈反對(duì)在任何中斷中進(jìn)行處理,更是是乘法和除法演算;

**實(shí)時(shí)需求不高或沒有實(shí)時(shí)需求的處理程序;

**顯示傳輸程序:主要用于含有外部ledLCDDriver的應(yīng)用;

*中斷處理程序:中斷程序主要用于處理對(duì)實(shí)時(shí)性要求較高的任務(wù)和事件,例如外部突發(fā)信號(hào)的檢測(cè),按鈕的檢測(cè)和處理,計(jì)時(shí)計(jì)數(shù),led顯示掃描等。,中斷程序應(yīng)盡量簡(jiǎn)便且簡(jiǎn)要。對(duì)于不需要實(shí)時(shí)處理的功能,可以在中斷中設(shè)置觸發(fā)標(biāo)志,然后主程序?qū)?zhí)行特定的事務(wù),這十分最主要。特別是對(duì)于低功耗和低速度MCU,有必要確保對(duì)所有中斷的馬上響應(yīng)。

*對(duì)于不同任務(wù)主體的安排,不同的MCU具有不同的處理方法,例如對(duì)于低速,低功耗的MCU(Fosc=32768Hz)應(yīng)用程序,考慮到此類項(xiàng)目都是手持裝置并且使用平常lcd顯示屏,對(duì)按鈕的響應(yīng)以及對(duì)顯示屏的響應(yīng)都要求很高的實(shí)時(shí)性能。響應(yīng)于此,定時(shí)中斷通常用于處理按鈕動(dòng)作和數(shù)據(jù)顯示。對(duì)于高速M(fèi)CU,例如Fosc>1mhz應(yīng)用程序,因?yàn)榇藭r(shí)MCU有足夠的時(shí)間執(zhí)行主程序循環(huán)。因此,您只能在相應(yīng)的中斷中設(shè)置各種觸發(fā)標(biāo)志,并將所有主程序主體中要執(zhí)行的任務(wù);

*在MCU的編程中,需要特別留意的一件事是防止在中斷與主體程序主體中同時(shí)訪問或設(shè)置相同變量或數(shù)據(jù)的狀況。一種有效性的預(yù)防方法是安排在模塊中處理此類數(shù)據(jù),并通過斷定觸發(fā)標(biāo)志確定是不是對(duì)數(shù)據(jù)進(jìn)行相關(guān)操作;而在其他程序主體(主要是中斷)中,僅需在處理位置設(shè)置觸發(fā)標(biāo)志即可處理數(shù)據(jù)。――這確保了數(shù)據(jù)的執(zhí)行是可預(yù)測(cè)的且唯一的。