單片微型計算機原理及接口技術-34-DMA模塊-2_第1頁
單片微型計算機原理及接口技術-34-DMA模塊-2_第2頁
單片微型計算機原理及接口技術-34-DMA模塊-2_第3頁
單片微型計算機原理及接口技術-34-DMA模塊-2_第4頁
單片微型計算機原理及接口技術-34-DMA模塊-2_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

單片微型計算機原理及接口技術(34)1/36內(nèi)容提綱DMA模塊的應用2/36外設之間的數(shù)據(jù)傳輸DMA可以控制8種外設之間傳輸數(shù)據(jù):XRAM存儲器到XRAM存儲器的數(shù)據(jù)讀寫自動掃描使能的ADC通道并將轉換的ADC數(shù)據(jù)自動存儲到XRAM中XRAM存儲器和SPI接口之間進行數(shù)據(jù)交換XRAM存儲器和串口1進行數(shù)據(jù)交換XRAM存儲器和串口2進行數(shù)據(jù)交換XRAM存儲器和串口3進行數(shù)據(jù)交換XRAM存儲器和串口4進行數(shù)據(jù)交換XRAM存儲器和LCM設備之間進行數(shù)據(jù)交換3/36一、XRAM存儲器和串口2進行數(shù)據(jù)交換1、XRAM存儲器和串口2進行數(shù)據(jù)交換的DMA寄存器(1)UR2T_DMA配置寄存器(DMA_UR2T_CFG)符號地址b7b6b5b4b3b2b1b0DMA_UR2T_CFGFA40HUR2TIE---UR2TIP[1:0]UR2TBAP[1:0]UR2TIE:UR2T_DMA中斷使能控制位。0:禁止UR2T_DMA中斷;1:允許UR2T_DMA中斷。UR2TIP[1:0]:UR2T_DMA中斷優(yōu)先級控制位。00:最低級(0);01:較低級(1);10:較高級(2);11:最高級(3)。UR2TBAP[1:0]:UR2T_DMA數(shù)據(jù)總線訪問優(yōu)先級控制位。00:最低級(0);01:較低級(1);10:較高級(2);11:最高級(3)。4/36符號地址b7b6b5b4b3b2b1b0DMA_UR2T_CRFA41HENUR2TTRIG------(2)UR2T_DMA控制寄存器(DMA_UR2T_CR,地址為FA41H)ENUR2T:UR2T_DMA功能使能控制位。0:禁止UR2T_DMA功能;1:允許UR2T_DMA功能。TRIG:UR2T_DMA發(fā)送觸發(fā)控制位。0:寫0無效;1:寫1開始UR2T_DMA自動發(fā)送數(shù)據(jù)。5/36符號地址b7b6b5b4b3b2b1b0DMA_UR2T_STAFA42H-----TXOVW-UR2TIF(3)UR2T_DMA狀態(tài)寄存器(DMA_UR2T_STA)UR2TIF:UR2T_DMA中斷請求標志位,當UR2T_DMA數(shù)據(jù)發(fā)送完成后,硬件自動將UR2TIF置1,若使能UR2T_DMA中斷,則進入中斷服務程序。標志位需軟件清零。TXOVW:UR2T_DMA數(shù)據(jù)覆蓋標志位。UR2T_DMA正在數(shù)據(jù)傳輸過程中,串口寫S2BUF寄存器再次觸發(fā)串口發(fā)送數(shù)據(jù)時,會導致數(shù)據(jù)傳輸失敗,此時硬件自動將TXOVW置1。標志位需軟件清零。6/36符號地址b7b6b5b4b3b2b1b0DMA_UR2T_AMTFA43H

(4)UR2T_DMA傳輸總字節(jié)寄存器(DMA_UR2T_AMT)DMA_UR2T_AMT:設置需要自動發(fā)送數(shù)據(jù)的字節(jié)數(shù)。實際的字節(jié)數(shù)為(DMA_UR2T_AMT+1)。(5)UR2T_DMA傳輸完成字節(jié)寄存器(DMA_UR2T_DONE)DMA_UR2T_DONE:當前已經(jīng)發(fā)送完成的字節(jié)數(shù)。符號地址b7b6b5b4b3b2b1b0DMA_UR2T_DONEFA44H

7/36(6)UR2T_DMA發(fā)送地址寄存器([DMA_UR2T_TXAH,DMA_UR2T_TXAL])DMA_UR2T_TXA:設置自動發(fā)送數(shù)據(jù)的源地址。執(zhí)行UR2T_DMA操作時會從這個地址開始讀數(shù)據(jù)。符號地址b7B6B5B4B3B2B1B0DMA_UR2T_TXAHFA45HTXA[15:8]DMA_UR2T_TXALFA46HTXA[7:0]8/36(7)UR2R_DMA配置寄存器(DMA_UR2R_CFG)符號地址b7b6b5b4b3b2b1b0DMA_UR2R_CFGFA48HUR2RIE---UR2RIP[1:0]UR2RBAP[1:0]UR2RIE:UR2R_DMA中斷使能控制位。0:禁止UR2R_DMA中斷;1:允許UR2R_DMA中斷。UR2RIP[1:0]:UR2R_DMA中斷優(yōu)先級控制位。00:最低級;01:較低級;10:較高級;11:最高級。UR2RBAP[1:0]:UR2R_DMA數(shù)據(jù)總線訪問優(yōu)先級控制位。00:最低級;01:較低級;10:較高級;11:最高級。9/36符號地址b7b6b5b4b3b2b1b0DMA_UR2R_CRFA49HENUR2R-TRIG----CLRFIFO(8)UR2R_DMA控制寄存器(DMA_UR2R_CR)ENUR2R:UR2R_DMA功能使能控制位。0:禁止UR2R_DMA功能;1:允許UR2R_DMA功能。TRIG:UR2R_DMA接收觸發(fā)控制位。0:寫0無效;1:寫1開始UR2R_DMA自動接收數(shù)據(jù)。CLRFIFO:清除UR2R_DMA接收FIFO控制位。0:寫0無效;1:開始UR2R_DMA操作前,先清空UR2R_DMA內(nèi)置的FIFO。10/36符號地址b7b6b5b4b3b2b1b0DMA_UR2R_STAFA4AH------RXLOSSUR2RIF(9)UR2R_DMA狀態(tài)寄存器(DMA_UR2R_STA)UR2RIF:UR2R_DMA中斷請求標志位。當UR2R_DMA接收數(shù)據(jù)完成后,硬件自動將UR2RIF置1,若使能UR2R_DMA中斷,則進入中斷服務程序。標志位需軟件清零。RXLOSS:UR2R_DMA接收數(shù)據(jù)丟棄標志位。UR2R_DMA操作過程中,當XRAM總線過于繁忙,來不及清空UR2R_DMA的接收FIFO,導致UR2R_DMA接收的數(shù)據(jù)自動丟棄時,硬件自動將RXLOSS置1。標志位需軟件清零。11/36(10)UR2R_DMA傳輸總字節(jié)寄存器(DMA_UR2R_AMT)DMA_UR2R_AMT:設置需要自動接收數(shù)據(jù)的字節(jié)數(shù)。實際的字節(jié)數(shù)為(DMA_UR2R_AMT+1)。(11)UR2R_DMA傳輸完成字節(jié)寄存器(DMA_UR2R_DONE)DMA_UR2R_DONE:當前已經(jīng)接收完成的字節(jié)數(shù)。符號地址b7b6b5b4b3b2b1b0DMA_UR2R_AMTFA4BH

符號地址b7b6b5b4b3b2b1b0DMA_UR2R_DONEFA4CH

12/36(12)UR2R_DMA接收地址寄存器(DMA_UR2R_RXA)DMA_UR2R_RXA:設置自動接收數(shù)據(jù)的目標地址。執(zhí)行UR2R_DMA操作時會從這個地址開始寫數(shù)據(jù)。符號地址b7b6b5b4b3b2b1b0DMA_UR2R_RXAHFA4DHADDR[15:8]DMA_UR2R_RXALFA4EHADDR[7:0]13/362、XRAM存儲器和串口2進行數(shù)據(jù)交換的DMA設置過程(1)選擇串口2使用的引腳,并設置I/O工作模式為漏極開路模式。(2)設置串口2的工作模式和波特率。(3)進行DMA的設置,包括:設置傳輸總字節(jié)數(shù)、設置地址、中斷允許控制、啟動DMA自動傳送。(4)開放CPU中斷。(5)在中斷服務程序中,對相應的標志位進行處理。14/363、XRAM存儲器和串口2進行數(shù)據(jù)交換的DMA應用舉例在XRAM中開辟256字節(jié)的發(fā)送緩沖區(qū),利用DMA控制器實現(xiàn)將發(fā)送緩沖區(qū)的內(nèi)容通過串口2自動發(fā)送緩沖區(qū)的數(shù)據(jù)。通信參數(shù)為9600,n,8,1。S-RXD---R72的位置S-TXD---R73的位置15/36核心代碼P_SW2|=0x80;//擴展寄存器(XFR)訪問使能P_SW2|=1;//UART2切換到P4.6P4.7符號地址b7b6b5b4b3b2b1b0復位值P_SW2BAHEAXFR-I2C_S[1:0]CMPO_SS4_SS3_SS2_S0x00,0000P4M1=0x3c;P4M0=0x3c;//設置P4.2~P4.5為漏極開路PnM1.xPnM0.xI/O口模式00準雙向口01推挽輸出(強上拉輸出,可達20mA,要加限流電阻)10僅為輸入(高阻)11開漏(OpenDrain)16/36符號地址b7b6b5b4b3b2b1b0DMA_UR2T_CFGFA40HUR2TIE---UR2TIP[1:0]UR2TPTY[1:0]

DMA_UR2T_CFG=0x80; //允許DMA_UR2T中斷UR2TIE:UR2T_DMA中斷使能控制位。0:禁止UR2T_DMA中斷;1:允許UR2T_DMA中斷。DMA_UR2T_AMT=0xff; //設置傳輸總字節(jié)數(shù):n+1符號地址b7b6b5b4b3b2b1b0DMA_UR2T_AMTFA43H

17/36

DMA_UR2T_TXAH=(u8)((u16)&DmaBufferTX>>8);DMA_UR2T_TXAL=(u8)((u16)&DmaBufferTX);DMA_UR2T_CR=0xc0; //使能UART2_DMA,開始UART2_DMA自動發(fā)送符號地址b7B6B5B4B3B2B1B0DMA_UR2T_TXAHFA45HADDR[15:8]DMA_UR2T_TXALFA46HADDR[7:0]符號地址b7b6b5b4b3b2b1b0DMA_UR2T_CRFA41HENUR2TTRIG------ENUR2T:UR2T_DMA功能使能控制位。0:禁止UR2T_DMA功能;1:允許UR2T_DMA功能。TRIG:UR2T_DMA發(fā)送觸發(fā)控制位。0:寫0無效;1:寫1開始UR2T_DMA自動發(fā)送數(shù)據(jù)。18/36符號地址b7b6b5b4b3b2b1b0DMA_UR2T_STAFA42H-----TXOVW-UR2TIFif(DMA_UR2T_STA&0x01) //發(fā)送完成if(DMA_UR2T_STA&0x04) //數(shù)據(jù)覆蓋UR2TIF:UR2T_DMA中斷請求標志位,當UR2T_DMA數(shù)據(jù)發(fā)送完成后,硬件自動將UR2TIF置1,若使能UR2T_DMA中斷,則進入中斷服務程序。標志位需軟件清零。TXOVW:UR2T_DMA數(shù)據(jù)覆蓋標志位。UR2T_DMA正在數(shù)據(jù)傳輸過程中,串口寫S2BUF寄存器再次觸發(fā)串口發(fā)送數(shù)據(jù)時,會導致數(shù)據(jù)傳輸失敗,此時硬件自動將TXOVW置1。標志位需軟件清零。19/36代碼演示!??!20/36符號地址b7b6b5b4b3b2b1b0DMA_ADC_CFGFA10HDADCIE-

DADCIP[1:0]ADCBAP[1:0]二、利用DMA控制器實現(xiàn)ADC數(shù)據(jù)自動存儲到XRAM中1、實現(xiàn)ADC數(shù)據(jù)自動存儲到XRAM中的DMA寄存器(1)ADC_DMA配置寄存器(DMA_ADC_CFG)DADCIE:ADC_DMA中斷使能控制位。0:禁止ADC_DMA中斷;1:允許ADC_DMA中斷。DADCIP[1:0]:ADC_DMA中斷優(yōu)先級控制位。00:最低級(0);01:較低級(1);10:較高級(2);11:最高級(3)。ADCBAP[1:0]:ADC_DMA數(shù)據(jù)總線訪問優(yōu)先級控制位。00:最低級(0);01:較低級(1);10:較高級(2);11:最高級(3)。21/36符號地址b7b6b5b4b3b2b1b0DMA_ADC_CRFA11HENDADCTRIG------(2)ADC_DMA控制寄存器(DMA_ADC_CR)ENDADC:ADC_DMA功能使能控制位。0:禁止ADC_DMA功能;1:允許ADC_DMA功能。TRIG:ADC_DMA操作觸發(fā)控制位。0:寫0無效;1:寫1開始ADC_DMA操作。22/36符號地址b7b6b5b4b3b2b1b0DMA_ADC_STAFA12H-------ADCIF(3)ADC_DMA狀態(tài)寄存器(DMA_ADC_STA)ADCIF:ADC_DMA中斷請求標志位,當ADC_DMA完成掃描所有使能的ADC通道后,硬件自動將ADCIF置1,若使能ADC_DMA中斷,則進入中斷服務程序。標志位需軟件清零。23/36(4)ADC_DMA接收地址寄存器(DMA_ADC_RXA)DMA_ADC_RXA:設置進行ADC_DMA操作時ADC轉換數(shù)據(jù)的存儲地址。符號地址b7b6b5b4b3b2b1b0DMA_ADC_RXAHFA17HADDR[15:8]DMA_ADC_RXALFA18HADDR[7:0](5)ADC_DMA配置寄存器2(DMA_ADC_CFG2)CVTIMESEL[3:0]:設置進行ADC_DMA操作時,對每個ADC通道進行ADC轉換的次數(shù)。0xxx:1次;1000:2次;1001:4次;1010:8次1011:16次;1100:32次;1101:64次;1110:128次;1111:256次。符號地址b7b6b5b4b3b2b1b0DMA_ADC_CFG2FA19H----CVTIMESEL[3:0]24/36(6)ADC_DMA通道使能寄存器(DMA_ADC_CHSWx)CHn:設置ADC_DMA操作時,自動掃描的ADC通道。通道掃描總是從編號小的通道開始。符號地址b7b6b5b4b3b2b1b0DMA_ADC_CHSW0FA1AHCH7CH6CH5CH4CH3CH2CH1CH0DMA_ADC_CHSW1FA1BHCH15CH14CH13CH12CH11CH10CH9CH8ADC轉換結果保存在XRAM的DMA_ADC_RXA開始的地址(稱為基地址)時,ADC_DMA的數(shù)據(jù)存儲格式如表11-1所示。25/3626/362、利用DMA控制器實現(xiàn)ADC數(shù)據(jù)自動存儲到XRAM中時的DMA設置過程(1)選擇ADC通道使用的引腳,并設置I/O工作模式為高阻輸入模式。(2)ADC模塊的初始化,包括數(shù)據(jù)格式、時間設置、速度設置等,并為ADC模塊上電。(3)進行DMA的設置,包括:中斷允許控制、ADC轉換數(shù)據(jù)存儲地址、每個通道ADC轉換次數(shù)、ADC通道使能、使能DMA、啟動DMA。(4)開放CPU中斷。(5)在中斷服務程序中,對相應的標志位進行處理。27/363、利用DMA控制器實現(xiàn)ADC數(shù)據(jù)自動存儲到XRAM中的應用實例利用DMA控制器實現(xiàn),對16通道模擬量進行AD轉換,每個通道轉換四次,將轉換結果保存在XRAM地址從0x800開始的數(shù)據(jù)緩沖區(qū),利用DMA控制器實現(xiàn)將發(fā)送緩沖區(qū)的內(nèi)容通過串口2自動發(fā)送緩沖區(qū)的數(shù)據(jù)。通信參數(shù)為9600,n,8,1。S-RXD---R72的位置S-TXD---R73的位置28/36核心代碼P_SW2|=0x80;//擴展寄存器(XFR)訪問使能P_SW2|=1;//UART2切換到P4.6P4.7符號地址b7b6b5b4b3b2b1b0復位值P_SW2BAHEAXFR-I2C_S[1:0]CMPO_SS4_SS3_SS2_S0x00,0000P4M1=0x3c;P4M0=0x3c;//設置P4.2~P4.5為漏極開路P0M1=0x7f;P0M0=0x00;//設置要做ADC的IO做高阻輸入P1M1=0xfb;P1M0=0x00;//設置要做ADC的IO做高阻輸入PnM1.xPnM0.xI/O口模式00準雙向口01推挽輸出(強上拉輸出,可達20mA,要加限流電阻)10僅為輸入(高阻)11開漏(OpenDrain)29/36CSSETUP:ADC通道選擇時間控制Tsetup0:占用1個ADC工作時鐘(默認值)1:占用2個ADC工作時鐘符號地址b7b6b5b4b3b2b1b0ADCTIMFEA8HCSSETUPCSHOLD[1:0]SMPDUTY[4:0]ADCTIM=0x3f;//設置通道選擇時間、保持時間、采樣時間CSHOLD[1:0]:ADC通道選擇保持時間控制Thold00:占用1個ADC工作時鐘01:占用2個ADC工作時鐘(默認值)10:占用3個ADC工作時鐘11:占用4個ADC工作時鐘SMPDUTY[4:0]:ADC模擬信號采樣時間控制Tduty00000:占用1個ADC工作時鐘00001:占用2個ADC工作時鐘... ...01010:占用11個ADC工作時鐘(默認值)... ...11110:占用31個ADC工作時鐘11111:占用32個ADC工作時鐘30/36符號地址b7b6b5b4b3b2b1b0ADCCFGDEH--RESFMT-SPEED[3:0]#define ADC_SPEED 15 //ADC轉換時間(CPU時鐘數(shù)#define RES_FMT (1<<5) //ADC結果:右對齊ADCCFG=RES_FMT+ADC_SPEED;RESFMT:ADC轉換結果格式控制位。0:轉換結果左對齊;1:轉換結果右對齊。SPEED[3:0]:設置ADC工作時鐘頻率。{FADC=SYSclk/2/(SPEED+1)}31/36ADC_CONTR=0x80; //ADCon符號地址b7b6b5b4b3b2b1b0ADC_CONTRBCHADC_POWERADC_STARTADC_FLAGADC_EPWMTADC_CHS[3:0]DMA_ADC_CFG=0x80; //bit71:EnableInterrupt符號地址b7b6b5b4b3b2b1b0DMA_ADC_CFGFA10HADCIE-

ADCIP[1:0]ADCPTY[1:0]ADCIE:ADC_DMA中斷使能控制位。0:禁止ADC_DMA中斷;1:允許ADC_DMA中斷。ADCIP[1:0]:ADC_DMA中斷優(yōu)先級控制位。00:最低級(0);01:較低級(1);10:較高級(2);11:最高級(3)。ADCPTY[1:0]:ADC_DMA數(shù)據(jù)總線訪問優(yōu)先級控制位。00:最低級(0);01:較低級(1);10:較高級(2);11:最高級(3)。32/32符號地址b7b6b5b4b3b2b1b0DMA_ADC_CFG2FA19H----CVTIMESEL[3:0]DMA_ADC_RXAH=(u8)(DM

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論