新手入门
- 积分
- 2
- 金钱
- 2
- 注册时间
- 2017-5-27
- 在线时间
- 0 小时
|
发表于 2017-5-27 16:56:01
|
显示全部楼层
我这几天调试DM9000也遇到了这个问题,目前已经解决了,不知道适用你的不
首先,把硬件复位RST引脚断开,最好把这部分代码注释掉。我的加上去就回读取ID不正常,原因不知道为啥。。。
然后将DM9000复位部分的代码
DM9000_WriteReg(DM9000_GPCR,0x01); //第一步:设置GPCR寄存器(0X1E)的bit0为1
DM9000_WriteReg(DM9000_GPR,0); //第二步:设置GPR寄存器(0X1F)的bit1为0,DM9000内部的PHY上电
这两句后面跟上一个延时,我的修改后的代码
void DM9000_Reset(void)
{
DM9000_WriteReg(DM9000_GPCR,0x01); //μúò»2½:éèÖÃGPCR¼Ä′æÆ÷(0X1E)μÄbit0Îa1
DM9000_WriteReg(DM9000_GPR,0); //μú¶t2½:éèÖÃGPR¼Ä′æÆ÷(0X1F)μÄbit1Îa0£¬DM9000Äú2¿μÄ HYéÏμç
delay_ms(10);
DM9000_WriteReg(DM9000_NCR,(0x02|NCR_RST)); //μúèy2½:èí¼t¸′λDM9000
do
{
delay_ms(25);
}while(DM9000_ReadReg(DM9000_NCR)&1); //μè′yDM9000èí¸′λíê3é
DM9000_WriteReg(DM9000_NCR,0);
DM9000_WriteReg(DM9000_NCR,(0x02|NCR_RST)); //DM9000μú¶t′Îèí¸′λ
do
{
delay_ms(25);
}while (DM9000_ReadReg(DM9000_NCR)&1);
DM9000_WriteReg(DM9000_NCR,0);
}
你试下行不行 |
|