stm32f103zet6+dm9000ciep,底层驱动问题

2019-08-18 18:27发布

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

你试下行不行

一周热门 更多>