編程和可配置工具開(kāi)始決定微控制器的選擇
這里以目前銷售的8051和許多衍生器件為例進(jìn)行說(shuō)明。10年前,8051幾乎要被棄用,但是現(xiàn)在有許多新產(chǎn)品還在采用8051內(nèi)核,為提高性能,其外圍的數(shù)量和種類都有了顯著增加。許多熟悉8051的工程師都在關(guān)注這些新產(chǎn)品。他們認(rèn)為自己了解8051內(nèi)核,所以采用基于8051的器件比采用基于其它內(nèi)核的器件會(huì)更簡(jiǎn)單。但僅僅熟悉微控制器內(nèi)核就足夠了嗎?
用C編譯器編寫控制器軟件
在回答這個(gè)問(wèn)題之前,先了解一下新微控制器發(fā)展的過(guò)程。大多數(shù)微控制器制造商都有許多不同的變種產(chǎn)品,某個(gè)廠商甚至擁有500多個(gè)不同的變種。這些變種對(duì)于設(shè)計(jì)者為特定應(yīng)用充分選擇外圍提供了條件。
圖1:CyanIDE集成開(kāi)發(fā)環(huán)境。
一種更好的方式就是選擇已經(jīng)具備很多項(xiàng)目所需的所有外圍和靈活輸入輸出排列的微控制器。因此,用戶可以選擇和配置每個(gè)項(xiàng)目要求的具體外圍組合,顯著降低了PCB重新設(shè)計(jì)所需的工作量。選擇這類微控制器可以使硬件修改更加容易。這可使用戶更加靈活地選取恰當(dāng)?shù)耐鈬M合來(lái)滿足設(shè)計(jì)要求。
此外,工程師通過(guò)降低不同零部件購(gòu)買和庫(kù)存的數(shù)量,將獲得公司內(nèi)的物料供應(yīng)人員認(rèn)同,因?yàn)樵谶^(guò)去很長(zhǎng)的一段時(shí)間內(nèi),我們看到制造商都以能提供各種各樣的微控制器為榮,實(shí)際上,這對(duì)于客戶和制造商本身來(lái)說(shuō)都無(wú)異于一場(chǎng)物流供應(yīng)方面的噩夢(mèng)。事實(shí)上,供貨商應(yīng)更好地利用不斷降低的硅成本制造更少變種、但功能更強(qiáng)大的微控制器。
大多數(shù)工程師會(huì)爭(zhēng)辯說(shuō)軟件功能是他們不能放棄現(xiàn)有微控制器系列的原因之一,所以我們來(lái)談?wù)勡浖?wèn)題。
考慮一款新的微控制器時(shí),需要解決2個(gè)主要軟件問(wèn)題:1. 編寫完全運(yùn)行在內(nèi)核中的算法,包括數(shù)學(xué)算法(如濾波算法)或主循環(huán);2. 外圍初始化和接口的軟件。
首先來(lái)談?wù)勗谖⒖刂破鲀?nèi)核中運(yùn)行的軟件。過(guò)去幾年里,C編譯器的使用不斷普遍,并且效率也有所提高。這意味著,C編譯器可節(jié)省的編程工作比所有應(yīng)用程序中性能損失的程度更重要。仍有一些與時(shí)間精確性相關(guān)的軟件功能需要用匯編程序編寫,但是這些程序也可能打包在C編譯器編寫的主程序中。
除了編譯器的效率外,微控制器總體性能也有了明顯的提高。許多工程師都利用比以前性能強(qiáng)10倍的現(xiàn)代控制器并轉(zhuǎn)變成用C編譯器編寫軟件,而設(shè)計(jì)出的產(chǎn)品比前幾代產(chǎn)品運(yùn)行起來(lái)要快得多。
采用C編譯器的另外一個(gè)驅(qū)動(dòng)因素就是許多產(chǎn)品普遍都需要增加代碼數(shù)量。在匯編程序中編寫8K代碼可能相當(dāng)于100張A4紙的軟件。編寫和維護(hù)這種數(shù)量的代碼需要耗費(fèi)大量的工作量。一旦你開(kāi)始著眼于需要32K或64K代碼的應(yīng)用程序,那么使用編譯器自然而然就成了99%應(yīng)用程序的唯一實(shí)際選擇。
如果我們決定下一個(gè)要開(kāi)發(fā)項(xiàng)目使用C編譯器,那么就可以做出一個(gè)大膽得結(jié)論。包括C語(yǔ)言在內(nèi)的高級(jí)語(yǔ)言可以使工程師避開(kāi)微控制器內(nèi)核的繁雜工作。如果我們編寫:
Counter=Counter+1; (or Counter++;),
我們可以意識(shí)到其實(shí)我們不必在乎它在應(yīng)用程序中究竟如何執(zhí)行。這就是編譯器的主要目的所在,所以也就不足為怪。只要變量Counter增加,我們并不需要知道是否使用累加器或寄存器架構(gòu)獲得結(jié)果。
應(yīng)對(duì)復(fù)雜外圍電路編程挑戰(zhàn)
現(xiàn)在來(lái)討論外圍電路編程的問(wèn)題。在市場(chǎng)上許多新款微控制器中,外圍數(shù)量迅速增長(zhǎng)。越來(lái)越多的芯片面積都被外圍電路占用,它們的復(fù)雜性和功率似乎也在不斷增加。今天市場(chǎng)上的一些8051微控制器擁有300"400頁(yè)的數(shù)據(jù)手冊(cè)。其中,你會(huì)發(fā)現(xiàn)只有25頁(yè)內(nèi)容是介紹內(nèi)核工作原理的,剩下的都是關(guān)于外圍的,從復(fù)位控制器、復(fù)雜的ADC到更復(fù)雜的通信控制器(如CAN、USB、以太網(wǎng))。
這讓我們得出一個(gè)結(jié)論,涉及外圍的軟件比完全在內(nèi)核中運(yùn)行的軟件要花費(fèi)更多得多的工作量。
進(jìn)一步說(shuō)就是,專門針對(duì)外圍的datasheet越多,對(duì)熟悉這種控制器內(nèi)核來(lái)說(shuō)就越無(wú)益。
圖2:賽恩的16位微控制器μCOG1m集成了密集的外圍電路
作為面對(duì)復(fù)雜外圍的工程師,為了避免淹沒(méi)在那些外圍實(shí)現(xiàn)所有預(yù)期用途的繁重任務(wù)時(shí),你會(huì)怎樣做呢?有些微控制器制造商提供能夠生成源代碼的工具。在圖1中,你可以到這種工具的一個(gè)例子,賽恩科技公司提供的CyanIDE集成開(kāi)發(fā)環(huán)境,顯示了只需點(diǎn)擊鼠標(biāo)就可以輕松設(shè)定UART波特率的便捷方法。
有了這些工具,開(kāi)發(fā)者無(wú)需閱讀長(zhǎng)篇累牘的數(shù)據(jù)手冊(cè)就能算出每個(gè)寄存器中應(yīng)該編程的數(shù)值。此外,CyanIDE還具有全面的上下文相關(guān)的幫助。這種工具可以大幅減少新款微控制器所涉及的工程量。
本文小結(jié)
本文開(kāi)篇就對(duì)一項(xiàng)假設(shè)提出了質(zhì)疑,即選擇帶有熟悉內(nèi)核的微控制器一定會(huì)降低新項(xiàng)目設(shè)計(jì)工作涉及的學(xué)習(xí)任務(wù)量嗎?對(duì)所涉及的工作進(jìn)行簡(jiǎn)單分析后,可以清楚的發(fā)現(xiàn)這種假設(shè)是不正確的。如果使用C編譯器和即使帶有為數(shù)不多外圍的器件,那么對(duì)內(nèi)核的熟悉程度比起幫助完成外圍電路編程的工具來(lái)說(shuō)其重要性要小得多。
實(shí)際上,如果新制造商擁有性能良好且集成的工具幫助進(jìn)行外圍的編程,那么選擇新制造商的微控制器可能不比選擇來(lái)自傳統(tǒng)系列和制造商但具有重要新型外圍的微控制器更容易。工具和可配置性的強(qiáng)有力結(jié)合比擁有內(nèi)核方面的豐富經(jīng)驗(yàn)要重要得多。
評(píng)論