您的位置:首页 > 其它

常用网卡/收发器

2015-12-03 10:55 190 查看

常用的以太网控制器有:

RTL8019

接线方面,需要CPU一个中断引脚,一个静态存储块地址片选CS,还有长度为32Bytes的地址映射空间(CPU的5根地址线,A0~A4)

RTL8019的所有操作都可以通过映射到CPU寻址空间的BANK_BASE+(0x00~0x1F)这段地址空间完成

以太网控制器的寄存器被分成4页 ,共享0x00~0x10这16个地址,通过0x00地址上的控制寄存器CR进行page0~3之间的切换

0x10~0x17这段地址叫做DMA端口寄存器,往其中任意一个地址操作效果都一样,可以向DMA端口传送16bit数据

0x18~0x1f这段地址叫做软件复位寄存器,往其中任何一个地址操作效果都一样,可以使控制器软件复位

CS8900

支持存储器模式跟I/O模式

存储器模式就是直接将4KB的PacketPage(CS8900内部的寄存器与帧存储空间)映射到CPU可以寻址的内存空间中,CPU可以直接对PacketPage进行操作

I/O模式是比较常用的模式,PacketPage中内容的修改都通过一个PacketPage Pointer的指针,对CS8900内部任一个寄存器操作都需要先将该寄存器的地址写入到PacketPage Pointer,从而通过数据端口读写寄存器。I/O操作地址空间为 I/O基址(0x300)+Pointer地址/数据端口地址



//PacketPagePointer的定义
#define CS8900_PPTR  *(volatileCS8900_REG*)(CS8900_BASE+0x0A+0x300)
//PacketPageData Port
#define CS8900_PDATA  *(volatile CS8900_REG *)(CS8900_BASE+0x0C+0x300)
static unsigned short get_reg(int regno){ //32位模式,读寄存器的数据
CS8900_PPTR = regno;// regno为要读的寄存器偏移地址
return (unsigned short) CS8900_PDATA; //返回要读寄存器的数据
}
static void put_reg(int regno, unsigned short val){ //写寄存器
CS8900_PPTR = regno;
CS8900_PDATA = val;
}//写寄存器


DM9000

DM9000的操作方式与CS8900极为相似:

片上有一根CMD线,当CMD为Low的时候,D0~D15输出的数据将被写入到索引寄存器中

将寄存器地址写入到索引寄存器之后,发出CMD为High,D0~D15数据将反映对应寄存器的状态

一般将CMD与MCU的一根地址线相连

常用的以太网收发器有:

KSZ8041

DP83848

LAN8720

MAC与片外PHY的接口

MIIM

MDIO、MDIC:实现与PHY内部控制、状态寄存器间数据交互

MII

ENET_TXD[0:1] 发送数据线

ENET_RXD[0:1] 接收数据线

ENET_RX_DV 接收到有效数据

ENET_TX_EN 发送使能

ENET_REF_CLK 参考时钟,PHY与MAC应该使用同一参考时钟

RMII

ENET_RXD[3:0] 接收数据线

ENET_TXD[3:0] 发送数据线

ENET_COL 冲突监听

ENET_CRS 接收数据有效

ENET_TX_ER 发送错误

ENET_TX_CLK 发送参考时钟

ENET_RX_CLK 接收参考时钟

ENET_RX_ER 接收错误

ENET_TX_EN 发送使能
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  以太网