<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          S3C2440-DMA

          作者: 時(shí)間:2016-12-02 來源:網(wǎng)絡(luò) 收藏
          S3c2440A 支持位于系統(tǒng)總線和外設(shè)總線之間的4 個(gè)通道的控制器。每個(gè)DMA 控制器通道
          無限制地執(zhí)行系統(tǒng)總線上的設(shè)備或外設(shè)總線上的設(shè)備之間數(shù)據(jù)搬移。換句話說,就是每個(gè)
          通道都操作一下四種情況:
          (1)源和目的設(shè)備都在系統(tǒng)總線上
          (2)源設(shè)備在系統(tǒng)總線上,目的設(shè)備在外設(shè)總線上
          (3)源設(shè)備在外設(shè)總線上,目的設(shè)備在系統(tǒng)總線上
          (4)源設(shè)備和目的設(shè)備都在外設(shè)總線上
          DMA 的主要有點(diǎn)就是其傳輸數(shù)據(jù)不需要CPU 的干涉。DMA 操作可由軟件或來自內(nèi)設(shè)或外
          部請(qǐng)求引腳來初始化。
          DMA每次傳送2個(gè)字節(jié),放到FIFO中,IIS就播放,F(xiàn)IFO空,導(dǎo)致DMA被再次觸發(fā),直到傳輸計(jì)數(shù)器為0,產(chǎn)生DMA中斷,CPU進(jìn)入中斷處理程序。在DMA傳送的時(shí)候,CPU可以處理其他事情。提高了系統(tǒng)效率。
          下面的程序使用IIS播放聲音同時(shí)跑流水燈。如果不用DMA,直接用上一篇的IIS程序,會(huì)發(fā)現(xiàn)聲音斷斷續(xù)續(xù),因?yàn)镮IS和流水燈一起分CPU的時(shí)間。如果使用DMA,則IIS需要的數(shù)據(jù)由DMA負(fù)責(zé)傳送,而CPU可以執(zhí)行流水燈程序,互相不耽誤。當(dāng)傳輸計(jì)數(shù)器為0時(shí),產(chǎn)生DMA中斷,CPU進(jìn)入中斷處理程序。其他時(shí)候,CPU可以執(zhí)行流水燈。這樣就實(shí)現(xiàn)了流水燈和IIS放音同時(shí)執(zhí)行。
          #include "2440addr.h"
          #include "music.h"
          #define L3MODE 1<<2
          #define L3DATA 1<<3
          #define L3CLOCK 1<<4
          #define _ISR_STARTADDRESS 0x33ffff00
          #define U32 unsigned int
          U32 flag, result, remain;
          void Delay(){
          int i, j, k;
          for(i = 0; i < 0xff; i++)
          for(j = 0; j < 0xff; j++)
          for(k = 0; k < 0xff; k++)
          ;
          }
          void Led(){
          int i;
          for(i = 3; i < 7; i++){
          rGPFDAT &= "(1<<i);
          Delay();
          rGPFDAT = 0xff;
          }
          }
          void WriteL3(unsigned char data, unsigned int mode){
          //mode = 0,地址模式;mode = 1,數(shù)據(jù)傳輸模式
          int i, k;
          if(mode == 0){
          rGPBDAT = rGPBDAT & "(L3MODE|L3DATA|L3CLOCK )|L3CLOCK;
          }
          else{
          rGPBDAT = rGPBDAT & "(L3MODE|L3DATA|L3CLOCK)|(L3CLOCK|L3MODE);
          }
          for(k = 0; k < 5; k++)
          ;
          for(i = 0; i < 8; i++){
          if(data & 0x1){
          rGPBDAT &= "L3CLOCK;
          rGPBDAT |= L3DATA;
          for(k = 0; k < 5; k++)
          ;
          rGPBDAT |= L3CLOCK;
          rGPBDAT |= L3DATA;
          for(k = 0; k < 5; k++)
          ;
          }
          else{
          rGPBDAT &= "L3CLOCK;
          rGPBDAT &= "L3DATA;
          for(k = 0; k < 5; k++)
          ;
          rGPBDAT |= L3CLOCK;
          rGPBDAT &= "L3DATA;
          for(k = 0; k < 5; k++)
          ;
          }
          data >>= 1;
          }
          rGPBDAT = rGPBDAT & "(L3MODE|L3DATA|L3CLOCK)|(L3CLOCK|L3MODE);
          }
          上一頁 1 2 下一頁

          關(guān)鍵詞: S3C2440DMA控制

          評(píng)論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();