LXT971A

LXT971A是Intel公司的網路通訊接口電路,它符合IEEE標準,直接支持10Mb/s/100Mb/s雙絞線套用,也支持100Mb/s光纖接口。

在嵌入式系統中,網路通訊是非常重要而且必備的功能。為了充分發揮嵌入式系統中CPU的網路控制功能,選擇一款合適的網路接口電路至關重要,LXT971A網路通訊接口電路就是一個很好的選擇。LXT971A是Intel公司的網路通訊接口電路,它符合IEEE標準,直接支持10Mb/s/100Mb/s雙絞線套用,也支持100Mb/s光纖接口;該電路提供的MII接口能很好的符合10/100Mb/s雙絞線套用,也支持100Mb/s光纖接口;該電路提供的MII接口能很好的符合10/100MACs。
LXT971A的引腳功能
LXT971A具有64個引腳,各引腳的功能如下:
·TXD0-TXD3是並行數據傳送連線埠;
·TX_EN是傳送使能端;
·TX_CLK是傳送時鐘,速率為10Mb/s時為2.5MHz,速率為100Mb/s時為25MHz;
·TX_ER是錯誤數據傳送端;
·RXD0-RXD3是並行數據接收端;
·RX_CLK是接收時鐘,速率為10Mb/s時為2.5MHz,速率為100Mb/s時為25MHz.
·RX_DV是接收數據正常指示端;
·COL是衝突檢測端;
·CRS是載波檢測端;
·MDDIS、MOCMDIO、MDINT是MII控制信號端口;
·TPFOP、TPFON是網路接口輸出正、負連線埠;
·TPFIP、TPFIN是網路接口輸入正、負連線埠;
·可以選用1:1網路變壓器YL18-2050S
·SD/TP是TP選擇;
·TxSLEW0、TxSLEW1是TP驅動端;
·RESET是復位端;
·ADDR0-ADDR4是設備地址連線埠;
·RBIAS是偏置端;
·PAUSE是暫停端;
·SLEEP是休眠端;
·TEST0、TEST1是測試端,接地;
·REFCLK/XI、REFCLK/XO是晶振輸入、輸出端;
·TDI、TDO、TMS、TCK、TRST是JTAG測試端;
·LED/CFG1、LED/CFG2、LED/CFG3是LED驅動或配置輸入端。
硬體接口 在實際套用系統中,要實現LXTArray71A的網路接口功能還要藉助於MPC860型網路通信處理器。LXTArray71網路接口電路與MPC860網路通信處理器是一種非常好的組合,以它們為核心弄好的網路產品有很好的實用性。筆者設計的硬碟錄像機和遠程電量採集器均是以MPC860為核心CPU,以LXTArray71為接口電路來實現的,實際套用中均取得了比較好的套用效果。
MPC860是Motorola公司推出的網路通信處理器,其特點主要有:內嵌PowerPC核心;4kbyte指令緩衝和4kbyte數據緩衝;強有力的記憶體控制和系統功能;高效的結構,可用一個獨立的RISC處理器處理通訊單元;可支持乙太網、快速乙太網、HDLC、ATM等;帶有8kB雙連線埠RAM;可提供50MHz、66MHz、80MHz頻率,採用357引腳BGA封裝;具有強大的第三方工具支持等。
SPC860與LXTArray71的接口採用標準的MII接口,SD/TP引腳接地,傳輸介質可採用雙絞線。MPC860可通過MII接口初始化LXTArray71A,而不需要使用LXTArray71A中的JTAG口。
軟體設計
在筆者所開發的嵌入式系統中,MPC860所配置的作業系統為Nucleus PLUS實時嵌入式系統。該系統對網路的出色支持能夠使MPC860與LXTArray71實現無縫連線,而軟體設計中,只需簡單調用作業系統中的MII_AutoNeg 0函式就可以完成初始化LXTArray71A的工作,進而快速地進行下一步的網路套用編程。
該系統可支持TCP、UDP、RAW_IP3種接口編程方式。下面給出的是採用TCP方式的服務程式。
Void TCP_Server_Task(UNSIGNED argc,VOID *argv) //TCP伺服器端任務
{
INT socketd,newsock; //套接字標識
Struct addr_struct *servaddr; //伺服器地址結構指針
unsigned int i;
VOID *pointer;
STATUS status;
Struct addr_struct client_addr;
NU_DEVICE devices[1];
CHAR serv_in_addrp[]={1Array2.168.1.1};//伺服器(本機)IP位址
CHAR Subnet[]={255,255,255,0};//子碼掩摸
if(NU_Init_Net(&Noncached_Memory=NUU_SUCC ESS) //初始化網路模組
{
DEMO_Exit(0); //不成功退出
}
memcpy(devices[0].dv_ip_addr,
serv_ip_addr,4);
//伺服器IP位址拷貝到地址結構中
memcpy(devices[0].dv_subnet_mask,subnet,4);
//伺服器子碼掩摸拷貝到地址結構中
memcpy(devices[0].dv_subnet_mask,subnet,4);
//伺服器子碼掩拷貝到地址結構中
if(UN_Init_Devices(devices,1)!=NU_SUCCESS)
//初始化網路設備LXTArray71A
{
DEMO_Exit(0); //不成功退出
}
if((socketd=NU_Socket(NU_FAMILY_IP,NU_TYPE_STREAM,0))>=0)
//創建套接字
{
if((NU_Bind(socketd,servaddr,0))>=0)
//綁定伺服器IP位址
{
status=NU_Listen(socketd,10);//偵聽
if(status==NU_SUCCESS)
{
for=(i=0;i<DEMO_MAX_CONNE CTIONS;i++)
{
newsock=NU_Accept(socketd,&client_addr,0);//接地
if(newsock>=0)
{status=NU_Send_T0_Queue&socketQueue,(UNSIGNED*)&newsock,1,NU_SU SPEND}; //接收成功佇列傳送
}
}
}
}
}
}
編程方式與Windows的網路編程相似。

熱門詞條

聯絡我們