三大方麵教你如何快速認識一款新型的MCU
發布時間:2017-07-06 責任編輯:susan
【導讀】任何一款MCU,其基本原理和功能都是大同小異,所不同的隻是其外圍功能模塊的配置及數量、指令係統等。對於指令係統,雖然形式上看似千差萬別,但實際上隻是符號的不同,其所代表的含義、所要完成的功能和尋址方式基本上是類似的。

因此,對於任何一款MCU,主要應從如下的幾個方麵來理解和掌握:
* MCU的特點:
要了解一款MCU,首先需要知道就是其ROM空間、RAM空間、IO口數量、定時器數量和定時方式、所提供的外圍功能模塊(Peripheral Circuit)、中斷源、工作電壓及功耗等等。
要了解一款MCU,首先需要知道就是其ROM空間、RAM空間、IO口數量、定時器數量和定時方式、所提供的外圍功能模塊(Peripheral Circuit)、中斷源、工作電壓及功耗等等。
* 了解這些MCU Features後,接下來第一步就是將所選MCUdegongnengyushijixiangmukaifadeyaoqiudegongnengjinxingduibi,mingquenaxieziyuanshimuqiansuoxuyaode,naxieshibenxiangmusuoyongbudaode。duiyuxiangmuzhongxuyaoyongdaodeersuoxuanMCU不提供的功能,則需要認真理解MCU的相關資料,以求用間接的方法來實現,例如,所開發的項目需要與PC機COM口進行通訊,而所選的MCU不提供UART口,則可以考慮用外部中斷的方式來實現;
* 對於項目開發需要用到的資源,則需要對其Manua*進行認真的理解和閱讀,而對於不需要的功能模塊則可以忽略或瀏覽即可。對於MCU學習來講,應用才是關鍵,也是最主要的目的。
* 明確了MCU的相關功能後,接下來就可以開始編程了。對於初學者或初次使用此款MCU的設計者來說,可能會遇到很多對MCU的功能描述不明確的地方,對於此類問題,可以通過兩種方法來解決,一種是編寫特別的驗證程序來理解資料所述的功能;lingyizhongzekeyizanshihulve,chengxushejizhongzeanzhaozijimuqiandelijielaibianxie,liudaotiaoshishiquxiugaihewanshan。qianyizhongfangfashiyongyushijianjiaokuansongdexiangmuhechuxuezhe,erhouyizhongfangfazeshiheyujuyouyidingMCU開發經驗的人或項目進度較緊迫的情況;
* 指(zhi)令(ling)係(xi)統(tong)千(qian)萬(wan)不(bu)要(yao)特(te)別(bie)花(hua)時(shi)間(jian)去(qu)理(li)解(jie)。指(zhi)令(ling)係(xi)統(tong)隻(zhi)是(shi)一(yi)種(zhong)邏(luo)輯(ji)描(miao)述(shu)的(de)符(fu)號(hao),隻(zhi)有(you)在(zai)編(bian)程(cheng)時(shi)根(gen)據(ju)自(zi)己(ji)的(de)邏(luo)輯(ji)和(he)程(cheng)序(xu)的(de)邏(luo)輯(ji)要(yao)求(qiu)來(lai)查(zha)看(kan)相(xiang)關(guan)的(de)指(zhi)令(ling)即(ji)可(ke),而(er)且(qie)隨(sui)著(zhe)編(bian)程(cheng)的(de)進(jin)行(xing),對(dui)指(zhi)令(ling)係(xi)統(tong)也(ye)會(hui)越(yue)來(lai)越(yue)熟(shu)練(lian),甚(shen)至(zhi)可(ke)以(yi)不(bu)自(zi)覺(jiao)地(di)記(ji)憶(yi)下(xia)來(lai);
MCU的基本功能:
對於絕大多數MCU,下列功能是最普遍也是最基本的,針對不同的MCU,其描述的方式可能會有區別,但本質上是基本相同的:
* TImer(定時器):TImer的種類雖然比較多,但可歸納為兩大類:一類是固定時間間隔的TImer,即其定時的時間是由係統設定的,用戶程序不可控製,係統隻提供幾種固定的時間間隔給用戶程序進行選擇,如32Hz,16Hz,8Hz等,此類TImer在4位MCU中比較常見,因此可以用來實現時鍾、計時等相關的功能;另一類則是Programmable Timer(可編程定時器),顧名思義,該類Timer的定時時間是可以由用戶的程序來控製的,控製的方式包括:時鍾源的選擇、分頻數(Prescale)選擇及預製數的設定等,有的MCU三者都同時具備,而有的則可能是其中的一種或兩種。此類Timer應用非常靈活,實際的使用也千變萬化,其中最常見的一種應用就是用其實現PWM輸出(具體的應用,後續會有特別的介紹)。由於時鍾源可以自由選擇,因此,此類Timer一般均與Event Counter(事件計數器)合在一起;
* IO口:任何MCU都具有一定數量的IO口,沒有IO口,MCU就失去了與外部溝通的渠道。根據IO口的可配置情況,可以分為如下幾種類型:
** 純輸入或純輸出口:此類IO口有MCU硬件設計決定,隻能是輸入或輸出,不可用軟件來進行實時的設定;
** 直接讀寫IO口:如MCS-51的IO口就屬於此類IO口。當執行讀IO口指令時,就是輸入口;當執行寫IO口指令則自動為輸出口;
** 程序編程設定輸入輸出方向的:此類IO口的輸入或輸出由程序根據實際的需要來進行設定,應用比較靈活,可以實現一些總線級的應用,如I2C總線,各種LCD、LED Driver的控製總線等;
** 對於IO口的使用,重要的一點必須牢記的是:對於輸入口,必須有明確的電平信號,確保不能浮空(可以通過增加上拉或下拉電阻來實現);而對於輸出口,其輸出的狀態電平必須考慮其外部的連接情況,應保證在Standby或靜態狀態下不存在拉電流或灌電流。
* 外部中斷:外部中斷也是絕大多數MCU所具有的基本功能,一般用於信號的實時觸發,數據采樣和狀態的檢測,中斷的方式由上升沿、下降沿觸發和電平觸發幾種。外部中斷一般通過輸入口來實現,若為IO口,則隻有設為輸入時其中斷功能才會開啟;若為輸出口,則外部中斷功能將自動關閉(ATMEL的ATiny係列存在一些例外,輸出口時也能觸發中斷功能)。外部中斷的應用如下:
** 外部觸發信號的檢測:一種是基於實時性的要求,比如可控矽的控製,突發性信號的檢測等;而另一種情況則是省電的需要;
** 信號頻率的測量;為了保證信號不被遺漏,外部中斷是最理想的選擇;
** 數據的解碼:在遙控應用領域,為了降低設計的成本,經常需要采用軟件的方式來對各種編碼數據進行解碼,如Manchester和PWM編碼的解碼;
** 按鍵的檢測和係統的喚醒:對於進入Sleep 狀態的MCU,一般需要通過外部中斷來進行喚醒,最基本的形式則是按鍵,通過按鍵的動作來產生電平的變化;
* 通訊接口:MCU所提供的通訊接口一般包括SPI接口,UART,I2C接口等,其分別描述如下:
** SPI接口:此類接口是絕大多數MCU都提供的一種最基本通訊方式,其數據傳輸采用同步時鍾來控製,信號包括:SDI(串行數據輸入)、SDO(串行數據輸出)、SCLK(串行時鍾)及Ready信號;有些情況下則可能沒有Ready信號;此類接口可以工作在Master方式或Slave方式下,通俗說法就是看誰提供時鍾信號,提供時鍾的一方為Master,相反的一方則為Slaver;
** UART(Universal Asynchronous Receive Transmit):屬於最基本的一種異步傳輸接口,其信號線隻有Rx和Tx兩條,基本的數據格式為:Start Bit + Data Bit(7-bits/8-bits) + Parity Bit(Even, Odd or None) + Stop Bit(1~2Bit)。一位數據所占的時間稱為Baud Rate(波特率)。對於大多數的MCU來講,數據為的長度、數據校
驗方式(奇校驗、偶校驗或無校驗)、停止位(Stop Bit)的長度及Baud Rate是可以通過程序編程進行靈活設定。此類接口最常用的方式就是與PC機的串口進行數據通訊。
** I2C接口:I2C是由Philips開發的一種數據傳輸協議,同樣采用2根信號來實現:SDAT(串行數據輸入輸出)和SCLK(串行時鍾)。其最大的好處是可以在此總線上掛接多個設備,通過地址來進行識別和訪問;I2C總線的一個最大的好處就是非常方便
用軟件通過IO口來實現,其傳輸的數據速率完全由SCLK來控製,可快可慢,不像UART接口,有嚴格的速率要求。
* Watchdog(看門狗定時器):Watchdog也是絕大多數MCU的一種基本配置(一些4位MCU可能沒有此功能),大多數的MCU的Watchdog隻能允許程序對其進行複位而不能對其關閉(有的是在程序燒入時來設定的,如Microchip PIC係列MCU),而有的MCU則是通過特定的方式來決定其是否打開,如Samsung的KS57係列,隻要程序訪問了Watchdog寄存器,就自動開啟且不能再被關閉。一般而言watchdog的複位時間是可以程序來設定的。Watchdog的最基本的應用是為MCU因為意外的故障而導致死機提供了一種自我恢複的能力。
MCU程序的編寫:
MCU的程序的編寫與PC下的程序的編寫存在很大的區別,雖然現在基於C的MCU開發工具越來越流行,但對於一個高效的程序代碼和喜歡使用彙編的設計者來講,彙編語言仍然是最簡潔、最有效的編程語言。對於MCU的程序編寫,其基本的框架可以說是大體一致的,一般分為初始化部分(這是MCU程序設計與PC最大的不同),主程序循環體和中斷處理程序三大部分(見圖1 a 和b),其分別說明如下:
* 初始化:對於所有的MCU程序的設計來講,出世化是最基本也是最重要的一步,一般包括如
** 屏蔽所有中斷並初始化堆棧指針:初始化部分一般不希望有任何中斷發生;
** 清除係統的RAM區域和顯示Memory:雖然有時可能沒有完全的必要,但從可靠性及一致性的角度出發,特別是對於防止意外的錯誤,還是建議養成良好的編程習慣;
** IO口的初始化:根據項目的應用的要求,設定相關IO口的輸入輸出方式,對與輸入口,需要設定其上拉或下拉電阻;對於輸出口,則必須設定其出世的電平輸出,以防出現不必要的錯誤;
** 中斷的設置:對於所有項目需要用到的中斷源,應該給予開啟並設定中斷的觸發條件,而對於不使用的多餘的中斷,則必須給予關閉;
** 其他功能模塊的初始化:對於所有需要用到的MCU的外圍功能模塊,必須按項目的應用的要求進行相應的設置,如UART的通訊,需要設定Baud Rate,數據長度,校驗方式和Stop Bit的長度等,而對於Programmer Timer,則必須設置其時鍾源,分頻數及Reload Data 等;
** 參數的出世化:完成了MCUdeyingjianheziyuandechushihuahou,jiexialaijiushiduichengxuzhongshiyongdaodeyixiebianliangheshujudechushihuashezhi,zheyibufendechushihuaxuyaogenjujutidexiangmujichengxudezongtianpailaisheji。duiyuyixieyongEEPROM來保存項目預製數的應用來講,建議在初始化時將相關的數據拷貝到MCU的RAM,以提高程序對數據的訪問速度,同時降低係統的功耗(原則上,訪問外部EEPROM都會增加電源的功耗)。
* 主程序循環體:大多數MCU是shi屬shu於yu長chang時shi間jian不bu間jian斷duan運yun行xing的de,因yin此ci其qi主zhu程cheng序xu體ti基ji本ben上shang都dou是shi以yi循xun環huan的de方fang式shi來lai設she計ji,對dui於yu存cun在zai多duo種zhong工gong作zuo模mo式shi的de應ying用yong來lai講jiang,則ze可ke能neng存cun在zai多duo個ge循xun環huan體ti,相xiang互hu之zhi間jian通tong過guo狀zhuang態tai標biao誌zhi來lai進jin行xing轉zhuan換huan。對dui於yu主zhu程cheng序xu體ti,一yi般ban情qing況kuang下xia主zhu要yao安an排pai如ru下xia的de模mo塊kuai:
** 計算程序:計算程序一般比較耗時,因此堅決反對放在任何中斷中處理,特別是乘除法運算;
** 實時性要求不高或沒有實時性要求的處理程序;
** 顯示傳輸程序:主要針對存在外部LED、LCD Driver 的應用;
* 中斷處理程序:中斷程序主要用於處理實時性要求較高的任務和事件,如,外部突發性信號的檢測,按鍵的檢測和處理,定時計數,LEDxianshisaomiaodeng。yibanqingkuangxia,zhongduanchengxuyingjinkenengbaozhengdaimadejianjieheduanxiao,duiyubuxuyaoshishiquchulidegongneng,keyizaizhongduanzhongshezhichufadebiaozhi,ranhouyouzhuchengxulaizhixingjutideshiwu――這一點非常重要,特別是對於低功耗、低速的MCU來講,必須保證所有中斷的及時響應。
* 對於不同任務體的安排,不同的MCU其處理的方法也有所不同。例如,對於低速、低功耗的MCU(Fosc=32768Hz)應用,考慮到此類項目均為手持式設備和采用普通的LCD顯示,對按鍵的反應和顯示的反應要求實時性較高,應此一般采用定時中斷的方式來處理按鍵的動作和數據的顯示;而對於高速的MCU,如Fosc》1MHz的應用,由於此時MCU有足夠的時間來執行主程序循環體,因此可以隻在相應的中斷中設置各種觸發標誌,並將所有的任務放在主程序體中來執行;
* 在MCU的程序設計中,還需要特別注意的一點就是:要yao防fang止zhi在zai中zhong斷duan和he主zhu程cheng序xu體ti中zhong同tong時shi訪fang問wen或huo設she置zhi同tong一yi個ge變bian量liang或huo數shu據ju的de情qing況kuang。有you效xiao的de預yu防fang方fang法fa是shi,將jiang此ci類lei數shu據ju的de處chu理li安an排pai在zai一yi個ge模mo塊kuai中zhong,通tong過guo判pan斷duan觸chu發fa標biao誌zhi來lai決jue定ding是shi否fou執zhi行xing該gai數shu據ju的de相xiang關guan操cao作zuo;而在其他的程序體中(主要是中斷),對需要進行該數據的處理的地方隻設置觸發的標誌。――這可以保證數據的執行是可預知和唯一的。
總之,對於MCU開發來講,必須記住一點:“條條大路通羅馬”,沒有做不到的事,關鍵是看方法是否正確!再就是多做多動手和多想。
特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 突破工藝邊界,奎芯科技LPDDR5X IP矽驗證通過,速率達9600Mbps
- 通過直接、準確、自動測量超低範圍的氯殘留來推動反滲透膜保護
- 從技術研發到規模量產:恩智浦第三代成像雷達平台,賦能下一代自動駕駛!
- 從機械執行到智能互動:移遠Q-Robotbox助力具身智能加速落地
- 品英Pickering將亮相2026航空電子國際論壇,展示航電與電池測試前沿方案
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
按鈕開關
白色家電
保護器件
保險絲管
北鬥定位
北高智
貝能科技
背板連接器
背光器件
編碼器型號
便攜產品
便攜醫療
變容二極管
變壓器
檳城電子
並網
撥動開關
玻璃釉電容
剝線機
薄膜電容
薄膜電阻
薄膜開關
捕魚器
步進電機
測力傳感器
測試測量
測試設備
拆解
場效應管
超霸科技



