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

          新聞中心

          EEPW首頁 > 嵌入式系統(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ò) 收藏

          單片機(jī)數(shù)據(jù)發(fā)送的具體程序如下所示:
          g.JPG
          h.JPG
          3.3 數(shù)據(jù)接收
          可以采用中斷的方式來完成對數(shù)據(jù)的接收。當(dāng)接收到數(shù)據(jù)并通過CRC校驗(yàn)后,將產(chǎn)生一個(gè)接收中斷信號,單片機(jī)在中斷發(fā)生時(shí)可以將整個(gè)數(shù)據(jù)包讀出,并按照使用的協(xié)議來處理數(shù)據(jù)。內(nèi)存的0C00h~3FFFh是數(shù)據(jù)接收緩沖區(qū)。芯片在接收到數(shù)據(jù)包后,會(huì)在數(shù)據(jù)包的前面自動(dòng)加上4個(gè)字節(jié)的數(shù)據(jù),接收數(shù)據(jù)包時(shí)首先要讀取這4個(gè)字節(jié)來確定數(shù)據(jù)包的狀態(tài),第一個(gè)字節(jié)“01H”表示接下來的是有效數(shù)據(jù)包,且數(shù)據(jù)保存在接收緩沖區(qū)中;若為“00H”則表示沒有數(shù)據(jù)包,中斷程序可以直接返回;若為其他值則表示出現(xiàn)異常,需要重新初始化芯片。第2個(gè)字節(jié)則為這個(gè)數(shù)據(jù)包的相關(guān)信息,其格式與RSR寄存器的含義一致,可以用來判斷本數(shù)據(jù)包是否出現(xiàn)異常和出現(xiàn)了什么異常。第3和4個(gè)字節(jié)是存放這個(gè)封包的長度大小(不包括前4個(gè)字節(jié)),在讀取數(shù)據(jù)包時(shí)需要用這個(gè)長度來進(jìn)行接收控制。
          同數(shù)據(jù)發(fā)送類似,單片機(jī)從中讀取數(shù)據(jù)也只需要讀取MRCMD寄存器中的值即可,讀取一個(gè)字節(jié)數(shù)據(jù)后,芯片自動(dòng)將下一個(gè)字節(jié)數(shù)據(jù)移到這個(gè)寄存器中。數(shù)據(jù)包的接收過程分2步:先讀取MRCMDX寄存器,判斷是否存在正確的數(shù)據(jù)包;如有數(shù)據(jù)包,根據(jù)數(shù)據(jù)包的長度信息依次讀取讀MRCMD寄存器,將整個(gè)數(shù)據(jù)包讀取出來。其中第1步需要讀取兩次MRCMDX寄存器,因?yàn)榈?次讀到的值總為0。單片機(jī)數(shù)據(jù)接收程序如下:
          i.JPG
          j.JPG


          評論


          相關(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); })();