基于LPC2210的RTL8019AS以太網(wǎng)驅(qū)動(dòng)系統(tǒng)設(shè)計(jì)(四)
七.頁面切換子模塊
7.1頁面切換子模塊功能
根據(jù)上一層模塊傳入的頁號(hào)來切換頁。RTL8019AS中的NE2000寄存器中用戶可用于切換的頁面有0,1,2三頁,第四頁為芯片保留。
7.2頁面切換子模塊組成
1>讀取命令寄存器(CR)中的值
temp=ReadFromNet(0);
2>把命令寄存器中的PS1,PS0位清零,在清零過程中不能修改其他位,并且不能置TXP位。
//命令寄存器中的PS1,PS0位清零注意txp位不能要
temp=temp&0x3B ;
3>把頁號(hào)寫入CR命令寄存器中的PS1,PS0位
pagenumber=pagenumber <<6;
temp=temp | pagenumber;
WriteToNet(0,temp);
7.3頁面切換子模塊接口
頁面切換子模塊調(diào)用了寫數(shù)據(jù)模塊
?寫數(shù)據(jù)子模塊:將數(shù)據(jù)寫入RTL2019AS芯片中
7.4頁面切換子模塊程序
/****************************Copyright(c)********************
**西安郵電學(xué)院
**graduate school
**XNMS實(shí)驗(yàn)室
**Author:冀博
**Time:2011年2月21日
**http://blog.csdn.net/tigerjb
**
**--------------FileInfo---------------------------------------------------------------------
****************************Copyright(c)******************** /
/**********************************************************
**函數(shù)原型:voidpage(uchar pagenumber)
**入口參數(shù)ucharpagenumber:要切換的頁
**返回值:無
**說明:選擇頁,可選擇0,1,2三頁,第四頁ne000兼容芯片保留
**********************************************************/
void page(uint8 pagenumber)
{
uint8 temp;
temp=ReadFromNet(0);
temp=temp&0x3B ;//注意txp位不能要
pagenumber=pagenumber <<6;
temp=temp " pagenumber;
WriteToNet(0,temp);
}
八.設(shè)置芯片物理地址子模塊
8.1設(shè)置芯片物理地址子模塊功能
將物理地址寫入實(shí)際地址寄存器(PAR0~PAR5)中并且用這些物理地址來對(duì)目標(biāo)地址數(shù)據(jù)包進(jìn)行比較,來確定接收或者拒絕接收數(shù)據(jù)包。
8.2設(shè)置芯片物理地址子模塊接口
設(shè)置芯片物理地址子模塊調(diào)用了寫數(shù)據(jù)子模塊
?寫數(shù)據(jù)子模塊:將數(shù)據(jù)寫入RTL2019AS芯片中
8.3設(shè)置芯片物理地址子模塊程序
/****************************Copyright(c)********************
**西安郵電學(xué)院
**graduate school
**XNMS實(shí)驗(yàn)室
**Author:冀博
**Time:2011年2月21日
**http://blog.csdn.net/tigerjb
**
**--------------FileInfo---------------------------------------------------------------------
****************************Copyright(c)******************** /
/**********************************************************
**函數(shù)原型:void SetMacID()
**入口參數(shù):*mac_ptr
**返回值:無
**說明:設(shè)置芯片物理地址,物理地址已經(jīng)存儲(chǔ)在程序空間內(nèi)
**********************************************************/
void SetMacID(uint8 * mac_ptr)
{
//把MAC地址寫入MY——MAC——ID中
page(1);
WriteToNet(1 , *mac_ptr);
mac_ptr++;
WriteToNet(2 , *mac_ptr);
mac_ptr++;
WriteToNet(3 , *mac_ptr);
mac_ptr++;
WriteToNet(4 , *mac_ptr);
mac_ptr++;
WriteToNet(5 , *mac_ptr);
mac_ptr++;
WriteToNet(6 , *mac_ptr);
//設(shè)置完后將頁面轉(zhuǎn)換到頁面0
page(0);
}
九.寫數(shù)據(jù)子模塊
?在LPC2210開發(fā)板中RTL8019AS在CPU的存儲(chǔ)空間上映射的基地址為0X83400000,因此以太網(wǎng)的基地址為0X83400000
?LPC2210通過16位DMA方式實(shí)現(xiàn)對(duì)RTL8019AS雙口RAM的訪問,每次傳輸2字節(jié)(16比特?cái)?shù)據(jù))
9.1寫數(shù)據(jù)子模塊功能
根據(jù)傳入的16bit Data和Add,將16bit Data寫入以太網(wǎng)基地址0X83400000+Add處。
9.2寫數(shù)據(jù)子模塊程序
/****************************Copyright(c)********************
**西安郵電學(xué)院
**graduate school
**XNMS實(shí)驗(yàn)室
**Author:冀博
**Time:2011年2月21日
** http://blog.csdn.net/tigerjb