基于DM9000A的網絡接口設計
單片機數據發送的具體程序如下所示:


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


評論