stm32f103zet6+dm9000ciep,底层驱动问题

2019-08-18 18:27发布

stm32f103zet6+dm9000ciep,底层驱动问题,用的是原子战舰的netconn tcp客户端的例子改的,网口的灯在闪,但ping不通,读出来的DM9000芯片ID为0x2B2A2928,求各位大神帮我看看哪里有错。。。。附近里有板子的原理图,我的qq是190010191,之所以用原子的程序来改,是因为原子的程序看起来易懂,舒服,条理性强。求高手们在此基础上给点意见。顺利解决的话给最佳答案充200话费当辛苦费,要是觉着少,也可以找我。。。我说到做到。。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
24条回答
myxiaoniao
1楼-- · 2019-08-21 04:36
qjk9520 发表于 2017-1-9 13:46
很早之前调不通的时候就研究过fsmc了,试过很多次还是不行,所以才纠结

我不久前也遇到过类似的问题,终于明白硬件评估板还是有价值的,比如你现在遇上的问题,如果你手头有个评估板,至少你可以比较到底是软件问题还是硬件问题,你把人家官方例程拿来下载看看,行不行不是立马知道是哪里的问题了吗
qjk9520
2楼-- · 2019-08-21 05:16
Akatsuki_lim 发表于 2017-1-9 16:51
跟楼主同样的问题,自己做的板子,dm9000的id一直读不对,管脚分配都是按照战舰的接法,各种方法都试过, ...

我的应该不是芯片的问题,别人给的例程封装了,下载下去试过又可以。。我的。。。
qjk9520
3楼-- · 2019-08-21 10:42
myxiaoniao 发表于 2017-1-12 13:00
我不久前也遇到过类似的问题,终于明白硬件评估板还是有价值的,比如你现在遇上的问题,如果你手头有个评 ...

那块板子的例程试过,可以,用自己照原子的修改了再下载下去就不行。。。最近忙其它的事了。这个一直没有研究。。
苏安
4楼-- · 2019-08-21 12:40
 精彩回答 2  元偷偷看……
qjk9520
5楼-- · 2019-08-21 15:31
苏安 发表于 2017-5-17 20:23
晶振有问题,fsmc 地址错了

晶振哪里有问题了。。FSMC哪里写错了。。麻烦说仔细点
zelisei
6楼-- · 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);
}

你试下行不行

一周热门 更多>