stm32f103zet6+dm9000ciep,底层驱动问题,用的是原子战舰的netconn tcp客户端的例子改的,网口的灯在闪,但ping不通,读出来的DM9000芯片ID为0x2B2A2928,求各位大神帮我看看哪里有错。。。。附近里有板子的原理图,我的qq是190010191,之所以用原子的程序来改,是因为原子的程序看起来易懂,舒服,条理性强。求高手们在此基础上给点意见。顺利解决的话给最佳答案充200话费当辛苦费,要是觉着少,也可以找我。。。我说到做到。。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
首先,把硬件复位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);
}
你试下行不行
一周热门 更多>