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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于DM9000A的網(wǎng)絡(luò)接口設(shè)計(jì)

          基于DM9000A的網(wǎng)絡(luò)接口設(shè)計(jì)

          作者: 時(shí)間:2012-07-17 來源:網(wǎng)絡(luò) 收藏

          2 芯片操作
          的讀/寫操作與一般的異步存儲(chǔ)器相同,圖2和圖3分別顯示了的讀/寫時(shí)序。

          本文引用地址:http://www.ex-cimer.com/article/148754.htm

          d.JPG


          根據(jù)芯片資料,編寫讀/寫寄存器的子函數(shù)。
          寄存器的讀操作程序:
          e.JPG
          f.JPG

          3 軟件
          3.1 DM9000A初始化
          對(duì)DM9000A芯片的初始化,就是向相應(yīng)的寄存器寫入期望的值,為芯片的穩(wěn)定工作做好準(zhǔn)備。主要需要進(jìn)行以下設(shè)置以便讓芯片處于工作狀態(tài):
          (1)開啟DM9000A工作狀態(tài):芯片GEPIO0的默認(rèn)值為1,芯片處于Powerdown狀態(tài),所以首先需要將這一位設(shè)置為0,來打開芯片。設(shè)置方法是將寄存器GPCR的bit[0]設(shè)置為1,將寄存器GPR的bit[0]設(shè)置為0。
          (2)進(jìn)行2次復(fù)位操作:根據(jù)芯片的特點(diǎn),要使芯片達(dá)到正常工作狀態(tài),需要對(duì)其進(jìn)行2次軟啟動(dòng)操作,方法是向NCR寄存器寫入3,延遲至少10μs后,寫入0,重復(fù)這個(gè)操作一次。
          (3)設(shè)置MAC地址:初始化時(shí)要初始化PAR(10h~15h)寄存器,PAR中保存的是芯片物理地址(MAC地址),芯片根據(jù)數(shù)據(jù)與PAR中的數(shù)據(jù)比較來確定接收到的數(shù)據(jù)是否是發(fā)給自己的。
          (4)收、發(fā)控制寄存器設(shè)置:要清除發(fā)送狀態(tài)寄存器,打開收/發(fā)中斷使能。
          初始化完成后可以通過讀NCR寄存器來判斷芯片是否已經(jīng)正確的完成初始化,并處于工作狀態(tài),如果未初始化成功,可以重復(fù)以上操作。
          3.2 數(shù)據(jù)發(fā)送
          在數(shù)據(jù)發(fā)送之前,首先要對(duì)數(shù)據(jù)按協(xié)議進(jìn)行封包,將封包后的數(shù)據(jù)全部發(fā)送。DM9000A的內(nèi)部RAM地址0000h~0BFFh是發(fā)送緩沖區(qū),用來存放發(fā)送數(shù)據(jù)包。用戶在寫入數(shù)據(jù)時(shí),無需關(guān)心數(shù)據(jù)存放的地址,只要向MWCMD寄存器連續(xù)寫入封包數(shù)據(jù)即可,芯片會(huì)自動(dòng)將數(shù)據(jù)依次寫入到發(fā)送緩沖區(qū)中。另外還需將要封包后數(shù)據(jù)的大小存放在TXPLH和TXPLL寄存器中,之后再將TCR的bit0設(shè)為1,芯片將開始進(jìn)行封包數(shù)據(jù)的傳送??梢酝ㄟ^讀取TSRI,TSR11寄存器判斷本次數(shù)據(jù)發(fā)送是否成功。



          評(píng)論


          相關(guān)推薦

          技術(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); })();