调试lan8720

2019-07-20 14:32发布

   按照原子哥的lan8720电路做的板子,现在已调试通过。总结几点经验吧~~1.lan8720下面有一个焊盘,一定要记得接地。这个封装真的很难受,手工焊接很不爽,尤其是底部焊盘,我用风枪吹了好多次,而且板子还坏了一块。。。。

下次做这个的时候,最好在底部开一个窗或者放个大焊盘,手工焊接可以从底部灌锡进去。

2.判断8720是否正常工作,可以测量14脚,时钟输出端,正常上电情况下(不能处于复位)应该输出50mhz

3.可以使用usmart工具查询8720寄存器状态 看看通信是否成功。

4.刚开始不理解2 3脚 link led为啥加10k下拉,排版的时候电阻加上了,焊接的时候省事没焊接(觉得没啥用),后来测试的时候 不管网线查不查,rj45的指示灯都亮着~~~结果又焊上下拉电阻,指示灯正常。
还有一个问题,不焊接那俩下拉电阻,程序里面一直在HAL_ETH_Init里面出不来,调试的时候发现 在这个函数里面
  /* Wait for software reset */
  while (((heth->Instance)->DMABMR & ETH_DMABMR_SR) != (uint32_t)RESET)
  {
  }
  等待软件复位? 是复位8720吗,硬件检查8720复位电路没问题。
把那俩10k下拉电阻焊接上,这个问题就解决了~~~哈哈 不解

5.还是在HAL_ETH_Init当中,上个问题解决了,HAL_ETH_Init返回3,查看错误是超时连接,
/* We wait for linked status */
    do
    {
      HAL_ETH_ReadPHYRegister(heth, PHY_BSR, &phyreg);

      /* Check for the Timeout */
      if((HAL_GetTick() - tickstart ) > LINKED_STATE_TIMEOUT_VALUE)
      {
        /* In case of write timeout */
        err = ETH_ERROR;

        /* Config MAC and DMA */
        ETH_MACDMAConfig(heth, err);

        heth->State= HAL_ETH_STATE_READY;

        /* Process Unlocked */
        __HAL_UNLOCK(heth);

        return HAL_TIMEOUT;
      }
    } while (((phyreg & PHY_LINKED_STATUS) != PHY_LINKED_STATUS));
为啥超时咧~我也不太清楚,那就把这两个宏 LINKED_STATE_TIMEOUT_VALUE 、 AUTONEGO_COMPLETED_TIMEOUT_VALUE  时间设置的大一些 原来是2s 1s   我改成3s 2s还是不行 直接加个0(20s 10s)。。。搞定
这个时间修改过后,还特意做了下实验,跟原子开发板l从上电初始化到能够ping通,差不多都是25s左右,所以也没在意~~~~

  接下来移植了原子的网络试验,测试tcp udp web都没问题,就是tcp server出现了问题,网络调试助手链接不上啊~~又试了开发板,也是server 链接不上。。。
  开发板设置server 模式,我电脑本地ip 192.168.1.100
  开发板 server ip 192.168.1.30 端口 8088


网络调试助手硬是链接不上。。。郁闷了  tcp client 、udp、 web都没问题

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。