新聞中心

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

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

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

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


        評(píng)論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 延长县| 大余县| 泸州市| 石景山区| 肥东县| 宁陕县| 靖宇县| 武鸣县| 安顺市| 沈阳市| 利川市| 沙田区| 共和县| 五家渠市| 凌源市| 无极县| 西和县| 庆阳市| 乌拉特前旗| 板桥市| 茂名市| 嘉鱼县| 延庆县| 红河县| 青浦区| 六枝特区| 汕尾市| 丰台区| 桂平市| 永丰县| 黑水县| 肃宁县| 宁阳县| 溧水县| 民勤县| 辛集市| 成安县| 锦州市| 青州市| 怀集县| 岑溪市|