搜索
bottom↓
回复: 12

STM32+LAN8720Ai在连到某些交换机时初始化失败问题咨询

[复制链接]

出3670入191汤圆

发表于 2024-1-23 19:18:21 | 显示全部楼层 |阅读模式
我有一些板子是STM32F429IGT6+LAN8720Ai,用STM32 HAL库,无操作系统。

这两天发现如题所述错误。

当网线接到大多数交换机上时,可正常初始化,通过lwip进行http请求等都没问题。不过我测试的都是可管理或三层的H3C、华为交换机。

可就是对少数某些交换机(我还不知道规律,但手头能复现问题的就是一台H3C S1224R 非管理交换机,我可以再继续找傻瓜式交换机试试)表现为插上网线后无法初始化成功,表面现象是网口上表示连接状态的灯不会亮起,后续的网络有关操作也无法成功。

问题原因不那么明显,有坛友遇到过的话可能看问题开头就能知道原因了,所以上来一问,有经验的坛友可以给个提醒。


进行的排查:
(1)芯片各引脚电压正常,原理图无误(毕竟在有些交换机下通讯是可行的,并能达到几MB的速度)
(2)晶振起振了,向MCU输出的50MHz的时钟信号波形也完美。
(3)底层代码并没有多少改动,是用CubeMX生成的代码。CubeMX新版少了外置PHY的参数配置界面,用旧版试过配置了4、5个参数仍然有相同现象。
.。。。
等等。我怀疑这些排查是无用功。

另外有一点我拿不准的是,LAN8720A和网口之间除了板子上走线有约10cm(差分走线,阻抗都计算过的),中间还有一段10cm的FFC排线(0.5mm间距),并且在网口那一端所需的3.3V我是用另一个LDO产生的,和8720A不是同一个LDO。但我觉得应该也不是这里的问题,毕竟在大部分交换机下它都是好的。做之前还发帖问过,见https://www.amobbs.com/thread-5779453-1-1.html

出3670入191汤圆

 楼主| 发表于 2024-1-23 22:01:31 | 显示全部楼层
网上翻到一个帖子:为什么以太网+柔性板与电脑无法协商为100M?

硬件:基于STM32F4单片机+LAN8720A(PHY)芯片,移植LWIP轻型以太网协议栈,硬件参考发烧友探索者开发板。
连接方式:1.板子通过刚柔结合板与PC机进行连接,系统上电后,PC端5s后显示建立连接,打开网络属性,发现双方自协商为10M;
               2.板子不经过刚柔结合板,直接与PC机连接,系统上电后,双方很快建立连接,且协商结果为100M;
问题: 1.为什么经过柔性版之后,双方不能建立100M以太网联系;
          2.以太网传输对传输介质的要求什么?
          3.如果是因为柔性板将信号衰减,那么柔性板设计该注意什么?或者以太网传输不能通过柔性板?

自己回答:

问题已经解决了,板子上以太网的线宽跟柔性板线宽不一致,导致信号损耗,回波反射。


跟我的问题不完全一样但有类似地方。

出105入79汤圆

发表于 2024-1-24 00:11:19 | 显示全部楼层
把 PHY芯片的复位处理一下,可能是网线漏电?

出3670入191汤圆

 楼主| 发表于 2024-1-24 09:23:19 | 显示全部楼层
qwe2231695 发表于 2024-1-24 00:11
把 PHY芯片的复位处理一下,可能是网线漏电?
(引用自3楼)

PHY芯片的15脚nRST我是下拉的,并在HAL_ETH_MspInit()函数中做了一次复位(电平置高,delay 10ms,置低,delay 10ms,再置高)

你说的处理一下应该不是处理电平吧?是指怎么处理呢?我搜索了网线漏电也没找到相关讨论。

出0入45汤圆

发表于 2024-1-24 09:46:26 | 显示全部楼层
可能是网速自动协商失败;
cubemx中设置LWIP_NETIF_STATUS_CALLBACK enable ; LWIP_NETIF_LINK_CALLBACK enable;
ethernetif.c中low_level_init()函数中:
  /* Initialize the LAN8742 ETH PHY */
  LAN8742_Init(&LAN8742);

  if (hal_eth_init_status == HAL_OK)
  {
    //PHYLinkState = LAN8742_GetLinkState(&LAN8742); //original code
        if(LAN8742_StartAutoNego(&LAN8742) != LAN8742_STATUS_OK){
                printf("\nLAN8742_StartAutoNego_err ");
        }
        PHYLinkState = LAN8742_GetLinkState(&LAN8742);
        printf("\nPHYLinkState=%d ",PHYLinkState);


    /* Get link state */
    if(PHYLinkState <= LAN8742_STATUS_LINK_DOWN)
    {
      netif_set_link_down(netif);
      netif_set_down(netif);
    }
    else
    {
      switch (PHYLinkState)
      {
自动协商后,获取状态,如果自动协商失败,link_down set_down;手动设置网速模式duplex与网速speed,然后set_up与link_up;

出0入45汤圆

发表于 2024-1-24 09:56:14 | 显示全部楼层
同上,ethernet_link_thread()函数中的for循环中检测PHY连接状态LAN8742_GetLinkState(&LAN8742),如果连接状态有掉线或者改变,如上处理;

出3670入191汤圆

 楼主| 发表于 2024-1-24 18:04:45 | 显示全部楼层
Arm2048 发表于 2024-1-24 09:56
同上,ethernet_link_thread()函数中的for循环中检测PHY连接状态LAN8742_GetLinkState(&LAN8742),如果连接 ...
(引用自6楼)

十分感谢!

我按你的方法试试,今天白天一直在忙别的还没来得及试。

另外我发现有问题的交换机拉出来的网线,接到另一个交换机上,交换机连接状态指示灯也要等一会儿才能亮起,可见协商需要时间。我十分怀疑我的代码协商等待时间不足。

出3670入191汤圆

 楼主| 发表于 2024-1-24 18:24:18 | 显示全部楼层
Arm2048 发表于 2024-1-24 09:56
同上,ethernet_link_thread()函数中的for循环中检测PHY连接状态LAN8742_GetLinkState(&LAN8742),如果连接 ...
(引用自6楼)

新消息:手动设置为10M全双工可以正常连接。

出3670入191汤圆

 楼主| 发表于 2024-1-25 11:50:59 | 显示全部楼层
又尝试了用CubeMX旧版和旧版的FW生成的代码框架,并关闭自动协商,使用10M全双工可以正常通信,
而使用新版CubeMX的,就算指定了10M全双工,虽然灯能亮起,但仍不能通信。

出95入8汤圆

发表于 2024-1-26 13:22:02 来自手机 | 显示全部楼层
Rabbitoose 发表于 2024-1-25 11:50
又尝试了用CubeMX旧版和旧版的FW生成的代码框架,并关闭自动协商,使用10M全双工可以正常通信,
而使用新版 ...

(引用自9楼)

cubemx  mdk版本号晒出来撒

出0入4汤圆

发表于 2024-1-26 18:43:51 来自手机 | 显示全部楼层
cube的bug太多了,出问题折腾半天,发现不是自己的问题,实在是觉得憋屈。而且不停升级,就是感觉st自己不好好测试,让用户帮他测。

出3670入191汤圆

 楼主| 发表于 2024-1-29 16:36:06 | 显示全部楼层
zzsczz 发表于 2024-1-26 13:22
cubemx  mdk版本号晒出来撒
(引用自10楼)

新版是6.10.0 FW 1.27.1
旧版是6.3.0  FW 1.26.2

(旧版CubeMX中有LAN8742的详细寄存器配置,但是新版没有了)


出3670入191汤圆

 楼主| 发表于 2024-2-4 12:41:09 | 显示全部楼层
后来经优化测试服务器接口性能,将传输速度已经提高到了数MB字节/s。

回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-2 21:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表