要了解一款MCU,首先需要知道就是其ROM空間、RAM空間、IO口數(shù)量、定時器數(shù)量和定時方式、所提供的外圍功能模塊(Peripheral Circuit)、中斷源、工作電壓及功耗等等。
三大方面教你如何快速認(rèn)識一款新型的MCU
發(fā)布時間:2017-07-06 責(zé)任編輯:susan
【導(dǎo)讀】任何一款MCU,其基本原理和功能都是大同小異,所不同的只是其外圍功能模塊的配置及數(shù)量、指令系統(tǒng)等。對于指令系統(tǒng),雖然形式上看似千差萬別,但實(shí)際上只是符號的不同,其所代表的含義、所要完成的功能和尋址方式基本上是類似的。
因此,對于任何一款MCU,主要應(yīng)從如下的幾個方面來理解和掌握:
* MCU的特點(diǎn):
要了解一款MCU,首先需要知道就是其ROM空間、RAM空間、IO口數(shù)量、定時器數(shù)量和定時方式、所提供的外圍功能模塊(Peripheral Circuit)、中斷源、工作電壓及功耗等等。
要了解一款MCU,首先需要知道就是其ROM空間、RAM空間、IO口數(shù)量、定時器數(shù)量和定時方式、所提供的外圍功能模塊(Peripheral Circuit)、中斷源、工作電壓及功耗等等。
* 了解這些MCU Features后,接下來第一步就是將所選MCU的功能與實(shí)際項(xiàng)目開發(fā)的要求的功能進(jìn)行對比,明確那些資源是目前所需要的,那些是本項(xiàng)目所用不到的。對于項(xiàng)目中需要用到的而所選MCU不提供的功能,則需要認(rèn)真理解MCU的相關(guān)資料,以求用間接的方法來實(shí)現(xiàn),例如,所開發(fā)的項(xiàng)目需要與PC機(jī)COM口進(jìn)行通訊,而所選的MCU不提供UART口,則可以考慮用外部中斷的方式來實(shí)現(xiàn);
* 對于項(xiàng)目開發(fā)需要用到的資源,則需要對其Manua*進(jìn)行認(rèn)真的理解和閱讀,而對于不需要的功能模塊則可以忽略或?yàn)g覽即可。對于MCU學(xué)習(xí)來講,應(yīng)用才是關(guān)鍵,也是最主要的目的。
* 明確了MCU的相關(guān)功能后,接下來就可以開始編程了。對于初學(xué)者或初次使用此款MCU的設(shè)計者來說,可能會遇到很多對MCU的功能描述不明確的地方,對于此類問題,可以通過兩種方法來解決,一種是編寫特別的驗(yàn)證程序來理解資料所述的功能;另一種則可以暫時忽略,程序設(shè)計中則按照自己目前的理解來編寫,留到調(diào)試時去修改和完善。前一種方法適用于時間較寬松的項(xiàng)目和初學(xué)者,而后一種方法則適合于具有一定MCU開發(fā)經(jīng)驗(yàn)的人或項(xiàng)目進(jìn)度較緊迫的情況;
* 指令系統(tǒng)千萬不要特別花時間去理解。指令系統(tǒng)只是一種邏輯描述的符號,只有在編程時根據(jù)自己的邏輯和程序的邏輯要求來查看相關(guān)的指令即可,而且隨著編程的進(jìn)行,對指令系統(tǒng)也會越來越熟練,甚至可以不自覺地記憶下來;
MCU的基本功能:
對于絕大多數(shù)MCU,下列功能是最普遍也是最基本的,針對不同的MCU,其描述的方式可能會有區(qū)別,但本質(zhì)上是基本相同的:
* TImer(定時器):TImer的種類雖然比較多,但可歸納為兩大類:一類是固定時間間隔的TImer,即其定時的時間是由系統(tǒng)設(shè)定的,用戶程序不可控制,系統(tǒng)只提供幾種固定的時間間隔給用戶程序進(jìn)行選擇,如32Hz,16Hz,8Hz等,此類TImer在4位MCU中比較常見,因此可以用來實(shí)現(xiàn)時鐘、計時等相關(guān)的功能;另一類則是Programmable Timer(可編程定時器),顧名思義,該類Timer的定時時間是可以由用戶的程序來控制的,控制的方式包括:時鐘源的選擇、分頻數(shù)(Prescale)選擇及預(yù)制數(shù)的設(shè)定等,有的MCU三者都同時具備,而有的則可能是其中的一種或兩種。此類Timer應(yīng)用非常靈活,實(shí)際的使用也千變?nèi)f化,其中最常見的一種應(yīng)用就是用其實(shí)現(xiàn)PWM輸出(具體的應(yīng)用,后續(xù)會有特別的介紹)。由于時鐘源可以自由選擇,因此,此類Timer一般均與Event Counter(事件計數(shù)器)合在一起;
* IO口:任何MCU都具有一定數(shù)量的IO口,沒有IO口,MCU就失去了與外部溝通的渠道。根據(jù)IO口的可配置情況,可以分為如下幾種類型:
** 純輸入或純輸出口:此類IO口有MCU硬件設(shè)計決定,只能是輸入或輸出,不可用軟件來進(jìn)行實(shí)時的設(shè)定;
** 直接讀寫IO口:如MCS-51的IO口就屬于此類IO口。當(dāng)執(zhí)行讀IO口指令時,就是輸入口;當(dāng)執(zhí)行寫IO口指令則自動為輸出口;
** 程序編程設(shè)定輸入輸出方向的:此類IO口的輸入或輸出由程序根據(jù)實(shí)際的需要來進(jìn)行設(shè)定,應(yīng)用比較靈活,可以實(shí)現(xiàn)一些總線級的應(yīng)用,如I2C總線,各種LCD、LED Driver的控制總線等;
** 對于IO口的使用,重要的一點(diǎn)必須牢記的是:對于輸入口,必須有明確的電平信號,確保不能浮空(可以通過增加上拉或下拉電阻來實(shí)現(xiàn));而對于輸出口,其輸出的狀態(tài)電平必須考慮其外部的連接情況,應(yīng)保證在Standby或靜態(tài)狀態(tài)下不存在拉電流或灌電流。
* 外部中斷:外部中斷也是絕大多數(shù)MCU所具有的基本功能,一般用于信號的實(shí)時觸發(fā),數(shù)據(jù)采樣和狀態(tài)的檢測,中斷的方式由上升沿、下降沿觸發(fā)和電平觸發(fā)幾種。外部中斷一般通過輸入口來實(shí)現(xiàn),若為IO口,則只有設(shè)為輸入時其中斷功能才會開啟;若為輸出口,則外部中斷功能將自動關(guān)閉(ATMEL的ATiny系列存在一些例外,輸出口時也能觸發(fā)中斷功能)。外部中斷的應(yīng)用如下:
** 外部觸發(fā)信號的檢測:一種是基于實(shí)時性的要求,比如可控硅的控制,突發(fā)性信號的檢測等;而另一種情況則是省電的需要;
** 信號頻率的測量;為了保證信號不被遺漏,外部中斷是最理想的選擇;
** 數(shù)據(jù)的解碼:在遙控應(yīng)用領(lǐng)域,為了降低設(shè)計的成本,經(jīng)常需要采用軟件的方式來對各種編碼數(shù)據(jù)進(jìn)行解碼,如Manchester和PWM編碼的解碼;
** 按鍵的檢測和系統(tǒng)的喚醒:對于進(jìn)入Sleep 狀態(tài)的MCU,一般需要通過外部中斷來進(jìn)行喚醒,最基本的形式則是按鍵,通過按鍵的動作來產(chǎn)生電平的變化;
* 通訊接口:MCU所提供的通訊接口一般包括SPI接口,UART,I2C接口等,其分別描述如下:
** SPI接口:此類接口是絕大多數(shù)MCU都提供的一種最基本通訊方式,其數(shù)據(jù)傳輸采用同步時鐘來控制,信號包括:SDI(串行數(shù)據(jù)輸入)、SDO(串行數(shù)據(jù)輸出)、SCLK(串行時鐘)及Ready信號;有些情況下則可能沒有Ready信號;此類接口可以工作在Master方式或Slave方式下,通俗說法就是看誰提供時鐘信號,提供時鐘的一方為Master,相反的一方則為Slaver;
** UART(Universal Asynchronous Receive Transmit):屬于最基本的一種異步傳輸接口,其信號線只有Rx和Tx兩條,基本的數(shù)據(jù)格式為:Start Bit + Data Bit(7-bits/8-bits) + Parity Bit(Even, Odd or None) + Stop Bit(1~2Bit)。一位數(shù)據(jù)所占的時間稱為Baud Rate(波特率)。對于大多數(shù)的MCU來講,數(shù)據(jù)為的長度、數(shù)據(jù)校
驗(yàn)方式(奇校驗(yàn)、偶校驗(yàn)或無校驗(yàn))、停止位(Stop Bit)的長度及Baud Rate是可以通過程序編程進(jìn)行靈活設(shè)定。此類接口最常用的方式就是與PC機(jī)的串口進(jìn)行數(shù)據(jù)通訊。
** I2C接口:I2C是由Philips開發(fā)的一種數(shù)據(jù)傳輸協(xié)議,同樣采用2根信號來實(shí)現(xiàn):SDAT(串行數(shù)據(jù)輸入輸出)和SCLK(串行時鐘)。其最大的好處是可以在此總線上掛接多個設(shè)備,通過地址來進(jìn)行識別和訪問;I2C總線的一個最大的好處就是非常方便
用軟件通過IO口來實(shí)現(xiàn),其傳輸?shù)臄?shù)據(jù)速率完全由SCLK來控制,可快可慢,不像UART接口,有嚴(yán)格的速率要求。
* Watchdog(看門狗定時器):Watchdog也是絕大多數(shù)MCU的一種基本配置(一些4位MCU可能沒有此功能),大多數(shù)的MCU的Watchdog只能允許程序?qū)ζ溥M(jìn)行復(fù)位而不能對其關(guān)閉(有的是在程序燒入時來設(shè)定的,如Microchip PIC系列MCU),而有的MCU則是通過特定的方式來決定其是否打開,如Samsung的KS57系列,只要程序訪問了Watchdog寄存器,就自動開啟且不能再被關(guān)閉。一般而言watchdog的復(fù)位時間是可以程序來設(shè)定的。Watchdog的最基本的應(yīng)用是為MCU因?yàn)橐馔獾墓收隙鴮?dǎo)致死機(jī)提供了一種自我恢復(fù)的能力。
MCU程序的編寫:
MCU的程序的編寫與PC下的程序的編寫存在很大的區(qū)別,雖然現(xiàn)在基于C的MCU開發(fā)工具越來越流行,但對于一個高效的程序代碼和喜歡使用匯編的設(shè)計者來講,匯編語言仍然是最簡潔、最有效的編程語言。對于MCU的程序編寫,其基本的框架可以說是大體一致的,一般分為初始化部分(這是MCU程序設(shè)計與PC最大的不同),主程序循環(huán)體和中斷處理程序三大部分(見圖1 a 和b),其分別說明如下:
* 初始化:對于所有的MCU程序的設(shè)計來講,出世化是最基本也是最重要的一步,一般包括如
** 屏蔽所有中斷并初始化堆棧指針:初始化部分一般不希望有任何中斷發(fā)生;
** 清除系統(tǒng)的RAM區(qū)域和顯示Memory:雖然有時可能沒有完全的必要,但從可靠性及一致性的角度出發(fā),特別是對于防止意外的錯誤,還是建議養(yǎng)成良好的編程習(xí)慣;
** IO口的初始化:根據(jù)項(xiàng)目的應(yīng)用的要求,設(shè)定相關(guān)IO口的輸入輸出方式,對與輸入口,需要設(shè)定其上拉或下拉電阻;對于輸出口,則必須設(shè)定其出世的電平輸出,以防出現(xiàn)不必要的錯誤;
** 中斷的設(shè)置:對于所有項(xiàng)目需要用到的中斷源,應(yīng)該給予開啟并設(shè)定中斷的觸發(fā)條件,而對于不使用的多余的中斷,則必須給予關(guān)閉;
** 其他功能模塊的初始化:對于所有需要用到的MCU的外圍功能模塊,必須按項(xiàng)目的應(yīng)用的要求進(jìn)行相應(yīng)的設(shè)置,如UART的通訊,需要設(shè)定Baud Rate,數(shù)據(jù)長度,校驗(yàn)方式和Stop Bit的長度等,而對于Programmer Timer,則必須設(shè)置其時鐘源,分頻數(shù)及Reload Data 等;
** 參數(shù)的出世化:完成了MCU的硬件和資源的出世化后,接下來就是對程序中使用到的一些變量和數(shù)據(jù)的初始化設(shè)置,這一部分的初始化需要根據(jù)具體的項(xiàng)目及程序的總體安排來設(shè)計。對于一些用EEPROM來保存項(xiàng)目預(yù)制數(shù)的應(yīng)用來講,建議在初始化時將相關(guān)的數(shù)據(jù)拷貝到MCU的RAM,以提高程序?qū)?shù)據(jù)的訪問速度,同時降低系統(tǒng)的功耗(原則上,訪問外部EEPROM都會增加電源的功耗)。
* 主程序循環(huán)體:大多數(shù)MCU是屬于長時間不間斷運(yùn)行的,因此其主程序體基本上都是以循環(huán)的方式來設(shè)計,對于存在多種工作模式的應(yīng)用來講,則可能存在多個循環(huán)體,相互之間通過狀態(tài)標(biāo)志來進(jìn)行轉(zhuǎn)換。對于主程序體,一般情況下主要安排如下的模塊:
** 計算程序:計算程序一般比較耗時,因此堅決反對放在任何中斷中處理,特別是乘除法運(yùn)算;
** 實(shí)時性要求不高或沒有實(shí)時性要求的處理程序;
** 顯示傳輸程序:主要針對存在外部LED、LCD Driver 的應(yīng)用;
* 中斷處理程序:中斷程序主要用于處理實(shí)時性要求較高的任務(wù)和事件,如,外部突發(fā)性信號的檢測,按鍵的檢測和處理,定時計數(shù),LED顯示掃描等。一般情況下,中斷程序應(yīng)盡可能保證代碼的簡潔和短小,對于不需要實(shí)時去處理的功能,可以在中斷中設(shè)置觸發(fā)的標(biāo)志,然后由主程序來執(zhí)行具體的事務(wù)――這一點(diǎn)非常重要,特別是對于低功耗、低速的MCU來講,必須保證所有中斷的及時響應(yīng)。
* 對于不同任務(wù)體的安排,不同的MCU其處理的方法也有所不同。例如,對于低速、低功耗的MCU(Fosc=32768Hz)應(yīng)用,考慮到此類項(xiàng)目均為手持式設(shè)備和采用普通的LCD顯示,對按鍵的反應(yīng)和顯示的反應(yīng)要求實(shí)時性較高,應(yīng)此一般采用定時中斷的方式來處理按鍵的動作和數(shù)據(jù)的顯示;而對于高速的MCU,如Fosc》1MHz的應(yīng)用,由于此時MCU有足夠的時間來執(zhí)行主程序循環(huán)體,因此可以只在相應(yīng)的中斷中設(shè)置各種觸發(fā)標(biāo)志,并將所有的任務(wù)放在主程序體中來執(zhí)行;
* 在MCU的程序設(shè)計中,還需要特別注意的一點(diǎn)就是:要防止在中斷和主程序體中同時訪問或設(shè)置同一個變量或數(shù)據(jù)的情況。有效的預(yù)防方法是,將此類數(shù)據(jù)的處理安排在一個模塊中,通過判斷觸發(fā)標(biāo)志來決定是否執(zhí)行該數(shù)據(jù)的相關(guān)操作;而在其他的程序體中(主要是中斷),對需要進(jìn)行該數(shù)據(jù)的處理的地方只設(shè)置觸發(fā)的標(biāo)志。――這可以保證數(shù)據(jù)的執(zhí)行是可預(yù)知和唯一的。
總之,對于MCU開發(fā)來講,必須記住一點(diǎn):“條條大路通羅馬”,沒有做不到的事,關(guān)鍵是看方法是否正確!再就是多做多動手和多想。
特別推薦
- 兆易創(chuàng)新GD32F30x STL軟件測試庫獲得德國萊茵TüV IEC 61508功能安全認(rèn)證
- 芯科科技第三代無線開發(fā)平臺引領(lǐng)物聯(lián)網(wǎng)發(fā)展
- MSO 4B 示波器為工程師帶來更多臺式功率分析工具
- 艾為電子推出新一代高線性度GNSS低噪聲放大器——AW15745DNR
- 瑞薩發(fā)布四通道主站IC和傳感器信號調(diào)節(jié)器, 以推動不斷增長的IO-Link市場
- e絡(luò)盟現(xiàn)貨供應(yīng) Abracon 新推出的 AOTA 系列微型鑄型電感器
- 加賀富儀艾電子推出支持Wi-Fi 6和藍(lán)牙的無線局域網(wǎng)/藍(lán)牙組合模塊
技術(shù)文章更多>>
- 讓汽車LED照明無死角,LED驅(qū)動的全面進(jìn)化
- 開關(guān)模式電源問題分析及其糾正措施:晶體管時序和自舉電容問題
- 熱電偶的測溫原理
- 【泰克先進(jìn)半導(dǎo)體實(shí)驗(yàn)室】 遠(yuǎn)山半導(dǎo)體發(fā)布新一代高壓氮化鎵功率器件
- ADALM2000實(shí)驗(yàn):變壓器
技術(shù)白皮書下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負(fù)載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
電容器公式
電聲器件
電位器
電位器接法
電壓表
電壓傳感器
電壓互感器
電源變壓器
電源風(fēng)扇
電源管理
電源管理IC
電源連接器
電源濾波器
電源模塊
電源模塊
電源適配器
電子書
電阻測試儀
電阻觸控屏
電阻器
電阻作用
調(diào)速開關(guān)
調(diào)諧器
鼎智
動力電池
動力控制
獨(dú)石電容
端子機(jī)
斷路器
斷路器型號