Я подключал CP2200 и CP2201 к ARM LPC2129 и LPC2103
у меня вроде была такая фишка с LINKом пока я не стал запускать auto-negotiation
в общем инициализация у меня выглядит примерно так:
Код
//reset CP220x
cpReadByte(INT0); //clear INT0
cpWriteByte(SWRST,4);
while (!(cpReadByte(INT0)& 0x20)); //wait for reset complete
cpWriteByte(IOPWR,0x0C);
//PHY INIT
cpWriteByte(PHYCF,0xFE);
cpWriteByte(PHYCN,0x00);
Delay(1);
r=INT1;
cpWriteByte(PHYCN,0x80);
Delay(1);
cpWriteByte(PHYCN,0xE0);
Delay(75);
while (!(cpReadByte(INT1)& 0x01));
while (!(cpReadByte(PHYCN)& 0x01));
//MAC INIT
cpWriteMac(MACCF,0xB3);
cpWriteMac(IPGT,0x15);
cpWriteMac(IPGR,0x0C12);
cpWriteByte(FLASHADDRL,0xFA);
cpWriteByte(FLASHADDRH,0x1F);
Tmp=cpReadByte(FLASHAUTORD);
Tmp|=cpReadByte(FLASHAUTORD)<<8;
cpWriteMac(MACAD2,Tmp);
Tmp=cpReadByte(FLASHAUTORD);
Tmp|=cpReadByte(FLASHAUTORD)<<8;
cpWriteMac(MACAD1,Tmp);
Tmp=cpReadByte(FLASHAUTORD);
Tmp|=cpReadByte(FLASHAUTORD)<<8;
cpWriteMac(MACAD0,Tmp);
cpWriteMac(MACCN,0x01);
тут соотв. cpReadByte и cpWriteByte этщ чтение и запись в регистры
cpWriteMac запись в MAC регистры:
Код
static void cpWriteMac(uint8_t Addr,uint16_t r)
{
cpWriteByte(MACADDR,Addr);
cpWriteByte(MACDATAH,r>>8);
cpWriteByte(MACDATAL,r);
cpWriteByte(MACRW,0);
}