新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 如何快速掌握一款新的MCU

        如何快速掌握一款新的MCU

        作者: 時(shí)間:2013-06-25 來源:網(wǎng)絡(luò) 收藏

        * 所提供的一般包括SPI接口,UART,I2C接口等,其分別描述如下:

        ** SPI接口:此類接口是絕大多數(shù)都提供的一種最基本通訊方式,其數(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,相反的一方則為Slaver;

        ** UART(Universal Asynchronous Receive Transmit):屬于最基本的一種異步傳輸接口,其信號(hào)線只有Rx和Tx兩條,基本的數(shù)據(jù)格式為:Start Bit + Data Bit(7-bits/8-bits) + Parity Bit(Even, Odd or None) + Stop Bit(1~2Bit)。一位數(shù)據(jù)所占的時(shí)間稱為Baud Rate(波特率)。對于大多數(shù)的來講,數(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根信號(hào)來實(shí)現(xiàn):SDAT(串行數(shù)據(jù)輸入輸出)和SCLK(串行時(shí)鐘)。其最大的好處是可以在此總線上掛接多個(gè)設(shè)備,通過地址來進(jìn)行識(shí)別和訪問;I2C總線的一個(gè)最大的好處就是非常方便用軟件通過IO口來實(shí)現(xiàn),其傳輸?shù)臄?shù)據(jù)速率完全由SCLK來控制,可快可慢,不像UART接口,有嚴(yán)格的速率要求。

        * Watchdog(看門狗定時(shí)器):Watchdog也是絕大多數(shù)MCU的一種基本配置(一些4位MCU可能沒有此功能),大多數(shù)的MCU的Watchdog只能允許程序?qū)ζ溥M(jìn)行復(fù)位而不能對其關(guān)閉(有的是在程序燒入時(shí)來設(shè)定的,如Microchip PIC系列MCU),而有的MCU則是通過特定的方式來決定其是否打開,如Samsung的KS57系列,只要程序訪問了Watchdog寄存器,就自動(dòng)開啟且不能再被關(guān)閉。一般而言watchdog的復(fù)位時(shí)間是可以程序來設(shè)定的。Watchdog的最基本的應(yīng)用是為MCU因?yàn)橐馔獾墓收隙鴮?dǎo)致死機(jī)提供了一種自我恢復(fù)的能力。

        MCU程序的編寫:

        MCU的程序的編寫與PC下的程序的編寫存在很大的區(qū)別,雖然現(xiàn)在基于C的MCU開發(fā)工具越來越流行,但對于一個(gè)高效的程序代碼和喜歡使用匯編的設(shè)計(jì)者來講,匯編語言仍然是最簡潔、最有效的編程語言。對于MCU的程序編寫,其基本的框架可以說是大體一致的,一般分為初始化部分(這是MCU程序設(shè)計(jì)與PC最大的不同),主程序循環(huán)體和中斷處理程序三大部分(見圖1 a 和 b),其分別說明如下:

        * 初始化:對于所有的MCU程序的設(shè)計(jì)來講,出世化是最基本也是最重要的一步,一般包括如下內(nèi)容:

        ** 屏蔽所有中斷并初始化堆棧指針:初始化部分一般不希望有任何中斷發(fā)生;

        ** 清除系統(tǒng)的RAM區(qū)域和顯示Memory:雖然有時(shí)可能沒有完全的必要,但從可靠性及一致性的角度出發(fā),特別是對于防止意外的錯(cuò)誤,還是建議養(yǎng)成良好的編程習(xí)慣;

        ** IO口的初始化:根據(jù)項(xiàng)目的應(yīng)用的要求,設(shè)定相關(guān)IO口的輸入輸出方式,對與輸入口,需要設(shè)定其上拉或下拉電阻;對于輸出口,則必須設(shè)定其出世的電平輸出,以防出現(xiàn)不必要的錯(cuò)誤;

        ** 中斷的設(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í)鐘源,分頻數(shù)及Reload Data等;

        ** 參數(shù)的出世化:完成了MCU的硬件和資源的出世化后,接下來就是對程序中使用到的一些變量和數(shù)據(jù)的初始化設(shè)置,這一部分的初始化需要根據(jù)具體的項(xiàng)目及程序的總體安排來設(shè)計(jì)。對于一些用EEPROM來保存項(xiàng)目預(yù)制數(shù)的應(yīng)用來講,建議在初始化時(shí)將相關(guān)的數(shù)據(jù)拷貝到MCU的RAM,以提高程序?qū)?shù)據(jù)的訪問速度,同時(shí)降低系統(tǒng)的功耗(原則上,訪問外部EEPROM都會(huì)增加電源的功耗)。

        * 主程序循環(huán)體:大多數(shù)MCU是屬于長時(shí)間不間斷運(yùn)行的,因此其主程序體基本上都是以循環(huán)的方式來設(shè)計(jì),對于存在多種工作模式的應(yīng)用來講,則可能存在多個(gè)循環(huán)體,相互之間通過狀態(tài)標(biāo)志來進(jìn)行轉(zhuǎn)換。對于主程序體,一般情況下主要安排如下的模塊:

        ** 計(jì)算程序:計(jì)算程序一般比較耗時(shí),因此堅(jiān)決反對放在任何中斷中處理,特別是乘除法運(yùn)算;

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

        ** 顯示傳輸程序:主要針對存在外部LED、LCD Driver的應(yīng)用;

        * 中斷處理程序:中斷程序主要用于處理實(shí)時(shí)性要求較高的任務(wù)和事件,如,外部突發(fā)性信號(hào)的檢測,按鍵的檢測和處理,定時(shí)計(jì)數(shù),LED顯示掃描等。一般情況下,中斷程序應(yīng)盡可能保證代碼的簡潔和短小,對于不需要實(shí)時(shí)去處理的功能,可以在中斷中設(shè)置觸發(fā)的標(biāo)志,然后由主程序來執(zhí)行具體的事務(wù)――這一點(diǎn)非常重要,特別是對于低功耗、低速的MCU來講,必須保證所有中斷的及時(shí)響應(yīng)。

        * 對于不同任務(wù)體的安排,不同的MCU其處理的方法也有所不同。例如,對于低速、低功耗的MCU(Fosc=32768Hz)應(yīng)用,考慮到此類項(xiàng)目均為手持式設(shè)備和采用普通的LCD顯示,對按鍵的反應(yīng)和顯示的反應(yīng)要求實(shí)時(shí)性較高,應(yīng)此一般采用定時(shí)中斷的方式來處理按鍵的動(dòng)作和數(shù)據(jù)的顯示;而對于高速的MCU,如Fosc>1MHz的應(yīng)用,由于此時(shí)MCU有足夠的時(shí)間來執(zhí)行主程序循環(huán)體,因此可以只在相應(yīng)的中斷中設(shè)置各種觸發(fā)標(biāo)志,并將所有的任務(wù)放在主程序體中來執(zhí)行;

        * 在MCU的程序設(shè)計(jì)中,還需要特別注意的一點(diǎn)就是:要防止在中斷和主程序體中同時(shí)訪問或設(shè)置同一個(gè)變量或數(shù)據(jù)的情況。有效的預(yù)防方法是,將此類數(shù)據(jù)的處理安排在一個(gè)模塊中,通過判斷觸發(fā)標(biāo)志來決定是否執(zhí)行該數(shù)據(jù)的相關(guān)操作;而在其他的程序體中(主要是中斷),對需要進(jìn)行該數(shù)據(jù)的處理的地方只設(shè)置觸發(fā)的標(biāo)志。――這可以保證數(shù)據(jù)的執(zhí)行是可預(yù)知和唯一的。


        上一頁 1 2 下一頁

        關(guān)鍵詞: MCU 信號(hào)頻率 通訊接口

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 富锦市| 安岳县| 隆尧县| 天门市| 扶风县| 东乡| 通化县| 阜新市| 宁强县| 沙湾县| 阿拉善盟| 娱乐| 仁布县| 织金县| 祁东县| 衡山县| 浦江县| 沂水县| 霍邱县| 涿鹿县| 汉阴县| 伊春市| 鄂尔多斯市| 贡山| 阳春市| 广宗县| 贵港市| 阳信县| 共和县| 宁化县| 靖西县| 正宁县| 靖江市| 望都县| 淮阳县| 泸溪县| 喀喇| 内丘县| 铅山县| 临清市| 琼海市|