




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
-.z.MSP430程序庫<十四>DMA程序庫直接存儲(chǔ)器存取(DMADirectMemoryAccess)方式是用硬件實(shí)現(xiàn)存儲(chǔ)器與存儲(chǔ)器之間或存儲(chǔ)器與I\O設(shè)備之間直接進(jìn)展高速數(shù)據(jù)傳送,不需要CPU的干預(yù)。這種方式通常用來傳送數(shù)據(jù)塊。MSP430f16*系列單片機(jī)內(nèi)部含有DMA模塊,而且?guī)缀鮾?nèi)部所有外設(shè)都可以觸發(fā)DMA開場(chǎng)存取數(shù)據(jù)。這里實(shí)現(xiàn)了這個(gè)模塊的程序通用的函數(shù)庫,方便使用。硬件介紹:MSP430F15*/16*系列單片機(jī)具有DMA控制器,從而能夠?yàn)閿?shù)據(jù)高速傳輸提供保證。例如,通過DMA控制器可以直接將ADC轉(zhuǎn)換存貯器的內(nèi)容傳到RAM單元。MSP430系列單片機(jī)擴(kuò)展的DMA具有來之所有外設(shè)的觸發(fā)器,不需要CPU的干預(yù)即可提供先進(jìn)的可配置的數(shù)據(jù)傳輸能力,從而加速了基于MCU的信號(hào)處理進(jìn)程,DMA傳輸?shù)挠|發(fā)來源對(duì)CPU來說是完全透明的,DMA控制器可在內(nèi)存與外部及外部硬件之間進(jìn)展準(zhǔn)確的傳輸控制。DMA消除了數(shù)據(jù)傳輸延遲時(shí)間以及各種開銷,從而可以解放16為RISCCPU,以便其將更多的時(shí)間用于處理數(shù)據(jù),而非執(zhí)行正在處理的任務(wù)。MSP430F16*系列單片機(jī)的DMA模塊有以下特點(diǎn):數(shù)據(jù)傳送不需要CPU介入,完全由DMA控制器自行管理。在整個(gè)地址空間范圍內(nèi)傳輸數(shù)據(jù),塊方式傳輸可達(dá)65536字節(jié);能夠提高片內(nèi)外設(shè)數(shù)據(jù)吞吐能力,實(shí)現(xiàn)高速傳輸,每個(gè)字或者字節(jié)的傳輸僅需要2個(gè)MCLK;減少系統(tǒng)功耗,即使在片內(nèi)外設(shè)進(jìn)展數(shù)據(jù)輸入或輸出時(shí),CPU也可以處于超低功耗模式而不需喚醒;字節(jié)和字?jǐn)?shù)據(jù)可以混合傳送:DMA傳輸可以是字節(jié)到字節(jié)、字到字、字節(jié)到字或者字到字節(jié)。當(dāng)字到字節(jié)傳輸時(shí),只有字中較低字節(jié)能夠傳輸,當(dāng)從字節(jié)到字傳輸時(shí),傳輸?shù)阶值牡妥止?jié),高字節(jié)被自動(dòng)清零;四種傳輸尋址模式:固定地址到固定地址、固定地址到塊地址、塊地址到固定地址以及塊地址到塊地址;觸發(fā)方式靈活:邊沿或者電平觸發(fā)。單個(gè)、塊或突發(fā)塊傳輸模式:每次觸發(fā)DMA操作,可以根據(jù)需要傳輸不同規(guī)模的數(shù)據(jù)DMA的四種尋址模式如下列圖所示:DMA控制器模塊:3個(gè)獨(dú)立的傳輸通道:通道0、通道1和通道2。每個(gè)通道都有源地址存放器、目的地址存放器、傳送數(shù)據(jù)長(zhǎng)度存放器和控制存放器。每個(gè)通道的觸發(fā)請(qǐng)求可以分別允許和制止;可配置的通道優(yōu)先權(quán):優(yōu)先權(quán)裁決模塊,傳輸通道的優(yōu)先級(jí)可以調(diào)整,對(duì)同時(shí)有觸發(fā)請(qǐng)求的通道進(jìn)展優(yōu)先級(jí)裁決,確定哪個(gè)通道的優(yōu)先級(jí)最高。MSP430的DMA控制器可以采用固定優(yōu)先級(jí),還可以采用循環(huán)優(yōu)先級(jí)。程序命令控制模塊,每個(gè)DMA通道開場(chǎng)傳輸之前,CPU要編程給定相關(guān)的命令和模式控制,以決定DMA通道傳輸?shù)念愋?;可配置的傳送觸發(fā)器:觸發(fā)源選擇模塊,DMAREQ〔軟件觸發(fā)〕、Timer_ACCR2輸出、Timer_BCCR2輸出、I2C數(shù)據(jù)接收準(zhǔn)備好、I2C數(shù)據(jù)發(fā)送準(zhǔn)備好、USART接收發(fā)送數(shù)據(jù)、DAC12模塊DAC12IFG、ADC12模塊的ADC12IFG*、DMA*IFG、DMAE0外部觸發(fā)源。并且還具有觸發(fā)源擴(kuò)大能力。DMA有六種傳輸模式:?jiǎn)巫只蛘邌巫止?jié)傳輸;塊傳輸;突發(fā)塊傳輸;重復(fù)單字或者單字節(jié)傳輸;重復(fù)塊傳輸;重復(fù)突發(fā)塊傳輸。前三個(gè),傳輸完成后DMAEN自動(dòng)復(fù)位;再次傳輸時(shí)需要重新置位DMAEN位以使能DMA通道。后三個(gè)為重復(fù)模式,一次傳輸完成后,DMAEN不復(fù)位;再次出發(fā)時(shí),可以再次啟動(dòng)數(shù)據(jù)傳輸。六種傳輸模式通過DMADT*存放器設(shè)置:DMADT*TransferModeDescription000SingletransferEachtransferrequiresatrigger.DMAENisautomaticallyclearedwhenDMA*SZtransfershavebeenmade.001BlocktransferApleteblockistransferredwithonetrigger.DMAENisautomaticallyclearedattheendoftheblocktransfer.010,011Burst-blocktransferCPUactivityisinterleavedwithablocktransfer.DMAENisautomaticallyclearedattheendoftheburst-blocktransfer.100RepeatedsingletransferEachtransferrequiresatrigger.DMAENremainsenabled.101RepeatedblocktransferApleteblockistransferredwithonetrigger.DMAENremainsenabled.110,111Repeatedburst-blockCPUactivityisinterleavedwithablocktransfer.transferDMAENremainsenabled.單字或者單字節(jié)傳輸:DMA通道被定義為單字或者單字節(jié)傳輸模式,每個(gè)字或者字節(jié)的傳輸都要觸發(fā)信號(hào)觸發(fā)。設(shè)置DMADT*=0就定義了單字或者單字節(jié)傳輸模式,規(guī)定的傳輸完畢后DMAEN位自動(dòng)去除,如果需要再次傳輸,必須重新置位DMAEN。如果設(shè)置DMADT*=4為重復(fù)單字或者單字節(jié)傳輸模式,DMAEN位一直保持置位,每次觸發(fā)伴隨一次傳輸。DMA*SZ存放器保存?zhèn)鬏數(shù)膯卧獋€(gè)數(shù),如果該存放器為0,則沒有傳輸。傳輸之前DMA*SZ存放器的值寫入到一個(gè)臨時(shí)的存放器中,每次操作之后DMA*SZ做減操作。當(dāng)DMA*SZ減為零的時(shí)候,它所對(duì)應(yīng)的臨時(shí)存放器將原來的值重新置入DMA*SZ,同時(shí)相應(yīng)的DMAIFG標(biāo)志置位。塊傳輸模式:在塊傳輸模式,每次觸發(fā)可以傳輸一個(gè)數(shù)據(jù)塊。設(shè)置DMADT*=1為塊傳輸模式,每個(gè)數(shù)據(jù)塊傳輸完畢,DMAEN位自動(dòng)去除,在觸發(fā)傳輸下一個(gè)數(shù)據(jù)塊之前,該位要被重新置位。在傳輸*個(gè)數(shù)據(jù)塊期間,其他的傳輸請(qǐng)求將被忽略。設(shè)置DMADT*=5為重復(fù)塊傳輸模式,*個(gè)數(shù)據(jù)塊傳輸完畢,DMAEN位仍然保持置位,之后,新的觸發(fā)可以引起又一次數(shù)據(jù)塊傳送。DMA*SZ存放器保存數(shù)據(jù)塊所包含的單元個(gè)數(shù)。DMASRCINCR和DMADSTINCR反映在數(shù)據(jù)塊傳輸過程中的目的地址和源地址的變化情況。在塊傳輸或者重復(fù)塊傳輸過程中,DMA*SA,DMA*DA,DMA*SZ存放器的值寫入到對(duì)應(yīng)的臨時(shí)存放器中,DMA*SA,DMA*DA存放器所對(duì)應(yīng)的臨時(shí)值在塊傳輸過程中增加或者減少,而DMA*SZ在塊傳輸過程中減計(jì)數(shù),始終反映當(dāng)前數(shù)據(jù)塊還有多少單元沒有傳輸完畢,當(dāng)DMA*SZ減為0,它所對(duì)應(yīng)的臨時(shí)存放器將原來的值重新置入DMA*SZ,同時(shí)相應(yīng)的DMAIFG被置位。在塊傳輸過程中,CPU暫停工作,不參與數(shù)據(jù)的傳輸。數(shù)據(jù)塊需要2×MCLK×DMA*SZ個(gè)時(shí)鐘周期。當(dāng)每個(gè)數(shù)據(jù)塊傳輸完畢,CPU按照暫停前的狀態(tài)重新開場(chǎng)執(zhí)行。突發(fā)塊傳輸模式:這個(gè)和塊傳輸模式類似,只不過每傳輸4個(gè)字或字節(jié),DMA釋放內(nèi)部總線,CPU運(yùn)行2個(gè)MCLK周期;在傳輸過程中CPU有20%的執(zhí)行時(shí)間,而塊傳輸需要等DMA完全傳送完之后,CPU方能運(yùn)行。DMA觸發(fā)源:每個(gè)通道的觸發(fā)源有DMA*TSEL*位進(jìn)展控制的,這些位必須在DMAEN位為0是進(jìn)展設(shè)置,否則可能出現(xiàn)不可預(yù)料的DMA觸發(fā)。DMA*TSEL*Operation0000DMAREQbit(softwaretrigger)0001TACCR2CCIFGbit0010TBCCR2CCIFGbit0011UR*IFG0(UART/SPImode),USART0datareceived(I2Cmode)0100UT*IFG0(UART/SPImode),USART0transmitready(I2Cmode)0101DAC12_0CTLDAC12IFGbit0110ADC12ADC12IFG*bit0111TACCR0CCIFGbit1000TBCCR0CCIFGbit1001UR*IFG1bit1010UT*IFG1bit1011Multiplierready1100Noaction1101Noaction1110DMA0IFGbittriggersDMAchannel1DMA1IFGbittriggersDMAchannel2DMA2IFGbittriggersDMAchannel01111E*ternaltriggerDMAE0另外,單片機(jī)的中斷程序不影響DMA的傳輸,當(dāng)DMA傳輸過程中,單片機(jī)不響應(yīng)中外部NMI中斷(必須DMA的控制位ENNMI位為1時(shí)響應(yīng)NMI中斷,否則不予處理)外的所有中斷;必須等待DMA數(shù)據(jù)傳送完畢之后才運(yùn)行系統(tǒng)的中斷處理程序。DMA的中斷:數(shù)據(jù)傳送過程中,DMA*SZ存放器值減為0時(shí),DMA置位DMAIFG,DMA的中斷和DAC12模塊共享中斷向量,使用中斷時(shí)需要軟件判斷具體是那個(gè)中斷。中斷響應(yīng)后DMAIFG不會(huì)自動(dòng)復(fù)位,使用時(shí)必須軟件清零DMAIFG位。DMA的存放器如下:RegisterShortFormRegisterTypeAddressInitialStateDMAcontrol0DMACTL0Read/write0122hResetwithPORDMAcontrol1DMACTL1Read/write0124hResetwithPORDMAchannel0controlDMA0CTLRead/write01E0hResetwithPORDMAchannel0sourceaddressDMA0SARead/write01E2hUnchangedDMAchannel0destinationaddressDMA0DARead/write01E4hUnchangedDMAchannel0transfersizeDMA0SZRead/write01E6hUnchangedDMAchannel1controlDMA1CTLRead/write01E8hResetwithPORDMAchannel1sourceaddressDMA1SARead/write01EAhUnchangedDMAchannel1destinationaddressDMA1DARead/write01EChUnchangedDMAchannel1transfersizeDMA1SZRead/write01EEhUnchangedDMAchannel2controlDMA2CTLRead/write01F0hResetwithPORDMAchannel2sourceaddressDMA2SARead/write01F2hUnchangedDMAchannel2destinationaddressDMA2DARead/write01F4hUnchangedDMAchannel2transfersizeDMA2SZRead/write01F6hUnchanged有關(guān)每個(gè)存放器的詳細(xì)內(nèi)容參考ti提供的用戶指南。程序?qū)崿F(xiàn):DMA的使用主要是DMA存放器的初始設(shè)置,設(shè)置完成后,DMA接到觸發(fā)信號(hào)即可自動(dòng)傳輸數(shù)據(jù)。設(shè)置函數(shù)如下:voidDMAInit(charchannel,chartrigger,chartransMode,charsrcMode,chardstMode,unsignedintsrc,unsignedintdst,unsignedintsize){unsignedint*DMA*CTL,*DMA*SA,*DMA*DA,*DMA*SZ;DMACTL0=trigger<<(channel<<2);DMACTL1=0*04;//DMA收到觸發(fā)請(qǐng)求時(shí),等待當(dāng)前指令執(zhí)行完成后switch(channel)//選擇當(dāng)前設(shè)置哪個(gè)DMA通道{case0:DMA*CTL=(unsignedint*)&DMA0CTL;DMA*SA=(unsignedint*)&DMA0SA;DMA*DA=(unsignedint*)&DMA0DA;DMA*SZ=(unsignedint*)&DMA0SZ;break;//指針=0通道控制case1:DMA*CTL=(unsignedint*)&DMA1CTL;DMA*SA=(unsignedint*)&DMA1SA;DMA*DA=(unsignedint*)&DMA1DA;DMA*SZ=(unsignedint*)&DMA1SZ;break;//指針=1通道控制case2:DMA*CTL=(unsignedint*)&DMA2CTL;DMA*SA=(unsignedint*)&DMA2SA;DMA*DA=(unsignedint*)&DMA2DA;DMA*SZ=(unsignedint*)&DMA2SZ;break;//指針=2通道控制}switch(transMode)//設(shè)置DMA通道的傳輸模式{case'S':*DMA*CTL=DMADT_0;break;//單次傳輸case's':*DMA*CTL=DMADT_4;break;//重復(fù)單次傳輸case'B':*DMA*CTL=DMADT_1;break;//塊傳輸case'b':*DMA*CTL=DMADT_5;break;//重復(fù)塊傳輸case'I':*DMA*CTL=DMADT_2;break;//突發(fā)塊傳輸交織case'i':*DMA*CTL=DMADT_6;break;//重復(fù)突發(fā)塊傳輸交織}*DMA*CTL|=(srcMode&0*04)<<2;//源字或字節(jié)*DMA*CTL|=(srcMode&0*03)<<8;//源地址改變方式*DMA*CTL|=(dstMode&0*04)<<3;//目的字或字節(jié)*DMA*CTL|=(dstMode&0*03)<<10;//目的地址改變方式*DMA*SA=src;*DMA*DA=dst;*DMA*SZ=size;*DMA*CTL|=DMAEN;//DMA使能}函數(shù)比擬麻煩,函數(shù)內(nèi)容按參數(shù)設(shè)置每個(gè)存放器。DMACTL0=trigger<<(channel<<2);這個(gè)是設(shè)置對(duì)應(yīng)channel通道的的參考源,不大明白的可以看下DMACTL0的存放器內(nèi)容;switch(channel)語句則根據(jù)通道設(shè)置對(duì)應(yīng)指針指向的存放器;然后對(duì)應(yīng)設(shè)置參數(shù)即可。當(dāng)設(shè)置成非重復(fù)模式時(shí),需要重新置位DMAEN,本程序就函數(shù)DMAReEnable實(shí)現(xiàn):voidDMAReEnable(charchannel){switch(channel)//使能對(duì)應(yīng)通道{case0:DMA0CTL|=DMAEN;break;//0通道case1:DMA1CTL|=DMAEN;break;//1通道case2:DMA2CTL|=DMAEN;break;//2通道}}這個(gè)函數(shù)比擬簡(jiǎn)單,只是根據(jù)傳入?yún)?shù)設(shè)置對(duì)應(yīng)通道的DMAEN位。當(dāng)設(shè)置為軟件觸發(fā)時(shí),需要軟件啟動(dòng)DMA程序如下:voidDMAStart(charchannel){switch
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 初一歷史《中國(guó)古代的農(nóng)業(yè)文明》教案
- 人工智能初探:高中信息科技編程與算法教學(xué)計(jì)劃
- 《全球氣候變化及其影響教學(xué)教案(高中地理)》
- 智能共享航空服務(wù)平臺(tái)開發(fā)合同
- 健康醫(yī)療設(shè)備維護(hù)保養(yǎng)服務(wù)協(xié)議
- 綠色智慧農(nóng)業(yè)技術(shù)研發(fā)合作協(xié)議
- 金融行業(yè)投資咨詢免責(zé)聲明
- 公司行為規(guī)范與員工手冊(cè)
- 學(xué)校教學(xué)設(shè)備使用與維護(hù)記錄表
- 海洋資源利用合同
- (高清版)JTG 2111-2019 小交通量農(nóng)村公路工程技術(shù)標(biāo)準(zhǔn)
- 2024年徐州生物工程職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫全面
- 供電公司涉外突發(fā)事件處置應(yīng)急預(yù)案
- 蘇教版三年級(jí)下冊(cè)《植物的一生》
- 1.1 都勻毛尖茶概況
- 20CJ96-1外墻內(nèi)保溫建筑構(gòu)造(一)FLL預(yù)拌無機(jī)膏狀保溫材料內(nèi)保溫構(gòu)造
- 2024年內(nèi)蒙古醫(yī)療機(jī)構(gòu)放射工作人員放射防護(hù)培訓(xùn)考試題
- 地形圖的基本知識(shí)課件
- 醫(yī)務(wù)人員手衛(wèi)生規(guī)范培訓(xùn)課件預(yù)防醫(yī)院感染的手衛(wèi)生措施
- 康復(fù)治療評(píng)定量表(WHO認(rèn)證)
- 2024屆上海市閔行區(qū)民辦上寶中學(xué)七年級(jí)數(shù)學(xué)第二學(xué)期期末復(fù)習(xí)檢測(cè)試題含解析
評(píng)論
0/150
提交評(píng)論