基于LPC2210的RTL8019AS以太网驱动系统设计(四)
扫描二维码
随时随地手机看文章
七.页面切换子模块
7.1页面切换子模块功能
根据上一层模块传入的页号来切换页。RTL8019AS中的NE2000寄存器中用户可用于切换的页面有0,1,2三页,第四页为芯片保留。
7.2页面切换子模块组成
1>读取命令寄存器(CR)中的值
temp=ReadFromNet(0);
2>把命令寄存器中的PS1,PS0位清零,在清零过程中不能修改其他位,并且不能置TXP位。
//命令寄存器中的PS1,PS0位清零注意txp位不能要
temp=temp&0x3B ;
3>把页号写入CR命令寄存器中的PS1,PS0位
pagenumber=pagenumber <<6;
temp=temp | pagenumber;
WriteToNet(0,temp);
7.3页面切换子模块接口
页面切换子模块调用了写数据模块
?写数据子模块:将数据写入RTL2019AS芯片中
7.4页面切换子模块程序
/****************************Copyright(c)********************
**西安邮电学院
**graduate school
**XNMS实验室
**Author:冀博
**Time:2011年2月21日
**http://blog.csdn.net/tigerjb
**
**--------------FileInfo---------------------------------------------------------------------
****************************Copyright(c)******************** /
/**********************************************************
**函数原型:voidpage(uchar pagenumber)
**入口参数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);
}
八.设置芯片物理地址子模块
8.1设置芯片物理地址子模块功能
将物理地址写入实际地址寄存器(PAR0~PAR5)中并且用这些物理地址来对目标地址数据包进行比较,来确定接收或者拒绝接收数据包。
8.2设置芯片物理地址子模块接口
设置芯片物理地址子模块调用了写数据子模块
?写数据子模块:将数据写入RTL2019AS芯片中
8.3设置芯片物理地址子模块程序
/****************************Copyright(c)********************
**西安邮电学院
**graduate school
**XNMS实验室
**Author:冀博
**Time:2011年2月21日
**http://blog.csdn.net/tigerjb
**
**--------------FileInfo---------------------------------------------------------------------
****************************Copyright(c)******************** /
/**********************************************************
**函数原型:void SetMacID()
**入口参数:*mac_ptr
**返回值:无
**说明:设置芯片物理地址,物理地址已经存储在程序空间内
**********************************************************/
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);
//设置完后将页面转换到页面0
page(0);
}
九.写数据子模块
?在LPC2210开发板中RTL8019AS在CPU的存储空间上映射的基地址为0X83400000,因此以太网的基地址为0X83400000
?LPC2210通过16位DMA方式实现对RTL8019AS双口RAM的访问,每次传输2字节(16比特数据)
9.1写数据子模块功能
根据传入的16bit Data和Add,将16bit Data写入以太网基地址0X83400000+Add处。
9.2写数据子模块程序
/****************************Copyright(c)********************
**西安邮电学院
**graduate school
**XNMS实验室
**Author:冀博
**Time:2011年2月21日
** http://blog.csdn.net/tigerjb