• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 基于DM9000A的網絡接口設計

    基于DM9000A的網絡接口設計

    作者: 時間:2012-07-17 來源:網絡 收藏

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


    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 宁乡县| 太谷县| 和平县| 天长市| 宜阳县| 威信县| 青铜峡市| 莎车县| 苍溪县| 清水县| 开远市| 鹤峰县| 拉萨市| 中卫市| 绍兴市| 和平县| 丹凤县| 天门市| 福州市| 嘉义县| 庆云县| 休宁县| 山丹县| 抚宁县| 嘉荫县| 河间市| 景泰县| 乌兰浩特市| 温州市| 安徽省| 溧阳市| 灌阳县| 巴塘县| 黄梅县| 波密县| 彰武县| 镇原县| 石阡县| 香港| 临漳县| 特克斯县|