注册 登录
落伍者 返回首页

编织/ws美梦的个人空间 https://www.im286.net/?908975 [收藏] [复制] [RSS]

日志

调试STM32F417+DP83848,遇到的问题

已有 217 次阅读2016-5-9 18:48

1.第一次是卡在初始化MAC层及DMA配置的软复位部分,如下:
ETH_SoftwareReset();                                                  
while (ETH_GetSoftwareResetStatus() == SET);

一直跳不出while循环,这主要是PHY芯片管脚配置的问题,我把一些不常用的管脚:PWR_DOWN/INT之类的不在程序中配置。
2.第二次卡初始化ETH中:
rval=ETH_Init(&ETH_InitStructure,DP83848_PHY_ADDRESS);
返回值为0,初始化不成功。
将问题定位在读取PHY芯片寄存器的函数中:
/* We wait for linked status... */
    do
    {
      timeout++;
    } while (!(ETH_ReadPHYRegister(PHYAddress, PHY_BSR) & PHY_Linked_Status) && (timeout < PHY_READ_TO));

    /* Return ERROR in case of timeout */
    if(timeout == PHY_READ_TO)
    {
      return ETH_ERROR;
    }

查看芯片手册,发现将COL管脚配置为悬空,表示1,我其他PHY地址管脚都是配置的悬空,那么这时的PHY地址为01
3.程序中一直往上位机发送数据,上位机只接收到一两个数据包;上位机往STM32发数据,总进到中断中,但没有调用接收数据的回调函数。
状态寄存器不对:LAN8720跟DP83848的状态寄存器不同。
////LAN8720 PHYD&frac34;&AElig;&not;μ&Auml;×′ì&not;&frac14;&Auml;′&aelig;&AElig;÷
//#define PHY_SR                                ((uint16_t)31)                 //LAN8720μ&Auml;HY×′ì&not;&frac14;&Auml;′&aelig;&AElig;÷μ&Oslash;&Ouml;·
//#define PHY_SPEED_STATUS    ((uint16_t)0x0004)         //LAN8720 PHY&Euml;ù&para;è&Ouml;μ&Ntilde;ú&Acirc;&euml;
//#define PHY_DUPLEX_STATUS   ((uint16_t)0x00010) //LAN8720 PHYá&not;&frac12;ó×′ì&not;&Ouml;μ&Ntilde;ú&Acirc;&euml;  

/* The DP83848 PHY status register  */
#define PHY_SR                 ((uint16_t)0x10) /* PHY status register Offset */
#define PHY_SPEED_STATUS       ((uint16_t)0x0002) /* PHY Speed mask */
#define PHY_DUPLEX_STATUS      ((uint16_t)0x0004) /* PHY Duplex mask */

完成这些,程序基本调通。



本文(调试STM32F417+DP83848,遇到的问题)转载于一牛网论坛,转载请注明文章来源

评论 (0 个评论)

论坛客服/商务合作/投诉举报:2171544 (QQ)
落伍者创建于2001/03/14,本站内容均为会员发表,并不代表落伍立场!
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论!
落伍官方微信:2030286 邮箱:(djfsys@gmail.com|tech@im286.com)
© 2001-2014

浙公网安备 33060302000191号

浙ICP备11034705号 BBS专项电子公告通信管[2010]226号

  落伍法律顾问: ITlaw-庄毅雄

手机版|找回帐号|不能发帖?|Archiver|落伍者

GMT+8, 2025-5-17 13:13 , Processed in 0.026915 second(s), 21 queries , Gzip On.

返回顶部